package org.json;
/*
Copyright (c) 2002 JSON.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
The Software shall be used for Good, not Evil.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
import java.io.IOException;
import java.io.Writer;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.lang.reflect.Method;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeSet;
/**
* A JSONObject is an unordered collection of name/value pairs. Its
* external form is a string wrapped in curly braces with colons between the
* names and values, and commas between the values and names. The internal form
* is an object having <code>get</code> and <code>opt</code> methods for
* accessing the values by name, and <code>put</code> methods for adding or
* replacing values by name. The values can be any of these types:
* <code>Boolean</code>, <code>JSONArray</code>, <code>JSONObject</code>,
* <code>Number</code>, <code>String</code>, or the <code>JSONObject.NULL</code>
* object. A JSONObject constructor can be used to convert an external form
* JSON text into an internal form whose values can be retrieved with the
* <code>get</code> and <code>opt</code> methods, or to convert values into a
* JSON text using the <code>put</code> and <code>toString</code> methods.
* A <code>get</code> method returns a value if one can be found, and throws an
* exception if one cannot be found. An <code>opt</code> method returns a
* default value instead of throwing an exception, and so is useful for
* obtaining optional values.
* <p>
* The generic <code>get()</code> and <code>opt()</code> methods return an
* object, which you can cast or query for type. There are also typed
* <code>get</code> and <code>opt</code> methods that do type checking and type
* coercion for you.
* <p>
* The <code>put</code> methods adds values to an object. For example, <pre>
* myString = new JSONObject().put("JSON", "Hello, World!").toString();</pre>
* produces the string <code>{"JSON": "Hello, World"}</code>.
* <p>
* The texts produced by the <code>toString</code> methods strictly conform to
* the JSON syntax rules.
* The constructors are more forgiving in the texts they will accept:
* <ul>
* <li>An extra <code>,</code> <small>(comma)</small> may appear just
* before the closing brace.</li>
* <li>Strings may be quoted with <code>'</code> <small>(single
* quote)</small>.</li>
* <li>Strings do not need to be quoted at all if they do not begin with a quote
* or single quote, and if they do not contain leading or trailing spaces,
* and if they do not contain any of these characters:
* <code>{ } [ ] / \ : , = ; #</code> and if they do not look like numbers
* and if they are not the reserved words <code>true</code>,
* <code>false</code>, or <code>null</code>.</li>
* <li>Keys can be followed by <code>=</code> or <code>=></code> as well as
* by <code>:</code>.</li>
* <li>Values can be followed by <code>;</code> <small>(semicolon)</small> as
* well as by <code>,</code> <small>(comma)</small>.</li>
* <li>Numbers may have the <code>0-</code> <small>(octal)</small> or
* <code>0x-</code> <small>(hex)</small> prefix.</li>
* </ul>
* @author JSON.org
* @version 2009-03-06
*/
public class JSONObject {
/**
* JSONObject.NULL is equivalent to the value that JavaScript calls null,
* whilst Java's null is equivalent to the value that JavaScript calls
* undefined.
*/
private static final class Null {
/**
* There is only intended to be a single instance of the NULL object,
* so the clone method returns itself.
* @return NULL.
*/
protected final Object clone() {
return this;
}
/**
* A Null object is equal to the null value and to itself.
* @param object An object to test for nullness.
* @return true if the object parameter is the JSONObject.NULL object
* or null.
*/
public boolean equals(Object object) {
return object == null || object == this;
}
/**
* Get the "null" string value.
* @return The string "null".
*/
public String toString() {
return "null";
}
}
/**
* The map where the JSONObject's properties are kept.
*/
private Map map;
/**
* It is sometimes more convenient and less ambiguous to have a
* <code>NULL</code> object than to use Java's <code>null</code> value.
* <code>JSONObject.NULL.equals(null)</code> returns <code>true</code>.
* <code>JSONObject.NULL.toString()</code> returns <code>"null"</code>.
*/
public static final Object NULL = new Null();
/**
* Construct an empty JSONObject.
*/
public JSONObject() {
this.map = new HashMap();
}
/**
* Construct a JSONObject from a subset of another JSONObject.
* An array of strings is used to identify the keys that should be copied.
* Missing keys are ignored.
* @param jo A JSONObject.
* @param names An array of strings.
* @exception JSONException If a value is a non-finite number or if a name is duplicated.
*/
public JSONObject(JSONObject jo, String[] names) throws JSONException {
this();
for (int i = 0; i < names.length; i += 1) {
putOnce(names[i], jo.opt(names[i]));
}
}
/**
* Construct a JSONObject from a JSONTokener.
* @param x A JSONTokener object containing the source string.
* @throws JSONException If there is a syntax error in the source string
* or a duplicated key.
*/
public JSONObject(JSONTokener x) throws JSONException {
this();
char c;
String key;
if (x.nextClean() != '{') {
throw x.syntaxError("A JSONObject text must begin with '{'");
}
for (;;) {
c = x.nextClean();
switch (c) {
case 0:
throw x.syntaxError("A JSONObject text must end with '}'");
case '}':
return;
default:
x.back();
key = x.nextValue().toString();
}
/*
* The key is followed by ':'. We will also tolerate '=' or '=>'.
*/
c = x.nextClean();
if (c == '=') {
if (x.next() != '>') {
x.back();
}
} else if (c != ':') {
throw x.syntaxError("Expected a ':' after a key");
}
putOnce(key, x.nextValue());
/*
* Pairs are separated by ','. We will also tolerate ';'.
*/
switch (x.nextClean()) {
case ';':
case ',':
if (x.nextClean() == '}') {
return;
}
没有合适的资源?快使用搜索试试~ 我知道了~
JSON资料 JSON资料
共631个文件
gif:237个
js:182个
htm:74个
3星 · 超过75%的资源 需积分: 10 30 下载量 113 浏览量
2009-09-05
15:25:43
上传
评论 1
收藏 3.27MB RAR 举报
温馨提示
JSON资料 JSON资料JSON资料JSON资料JSON资料JSON资料JSON资料JSON资料
资源推荐
资源详情
资源评论
收起资源包目录
JSON资料 JSON资料 (631个子文件)
ads 11KB
ads 11KB
ads_002 12KB
ads_002 3KB
ads_003 3KB
062ae541-2cdd-47af-8ab8-221a125a3a55-thumb.bmp 3KB
webim.css 38KB
blog.css 28KB
blog.css 28KB
style_003.css 28KB
forum.css 27KB
style.css 21KB
StickySystemIEBlue.css 19KB
base.css 19KB
bloom_1.css 17KB
style.css 16KB
main.css 14KB
main.css 14KB
main.css 13KB
screen.css 11KB
screen.css 11KB
common.css 9KB
common.css 9KB
style_002.css 8KB
style.css 8KB
china.css 8KB
shCore.css 7KB
shCore.css 7KB
r1v14.css 7KB
r1v14.css 7KB
print.css 4KB
print.css 4KB
style.css 4KB
zd.css 4KB
zd.css 4KB
shThemeDefault.css 4KB
shThemeDefault.css 4KB
customcss.css 3KB
table.css 3KB
table.css 3KB
blog_w.css 2KB
SyntaxHighlighter.css 2KB
SyntaxHighlighter.css 2KB
SyntaxHighlighter.css 2KB
polls-css.css 2KB
ui.css 1KB
pagenavi-css.css 933B
blue.css 766B
blue.css 766B
csdn_favbykimi.css 595B
common2.css 170B
common2.css 170B
au_20090904100600.gif 100KB
au_20090905114208.gif 63KB
enkj2.gif 50KB
tengyou468.gif 46KB
zgdata.gif 42KB
zm370.gif 42KB
021.gif 30KB
chinaidcs_jb51ad.gif 27KB
007.gif 27KB
west468.gif 27KB
002.gif 26KB
lichen300.gif 23KB
011.gif 22KB
tengyou300.gif 22KB
server468.gif 22KB
019.gif 21KB
023.gif 19KB
09102153FX.gif 19KB
09102153FX.gif 19KB
720-60.gif 19KB
hb666.gif 19KB
020.gif 18KB
now.gif 15KB
banner2.gif 13KB
004.gif 12KB
026.gif 11KB
banner1.gif 10KB
018.gif 10KB
013.gif 10KB
022.gif 9KB
005.gif 9KB
003.gif 9KB
008.gif 9KB
016.gif 9KB
blog_commentnotice.gif 8KB
006.gif 6KB
009.gif 6KB
qq.gif 6KB
014.gif 5KB
logozd.gif 5KB
logozd.gif 5KB
017.gif 5KB
025.gif 5KB
logo.gif 4KB
logo.gif 4KB
012.gif 4KB
015.gif 3KB
logo.gif 3KB
共 631 条
- 1
- 2
- 3
- 4
- 5
- 6
- 7
资源评论
- 双木之魂2013-04-23东西不少。还行。可是要10分,楼主顺道抢分的吧。。。
jinbingchuan
- 粉丝: 0
- 资源: 69
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功