android中的json包

<!-- @page { margin: 2cm } PRE.cjk { font-family: "Droid Sans Fallback", monospace } PRE.ctl { font-family: "Lohit Hindi", monospace } P { margin-bottom: 0.21cm } CODE.cjk { font-family: "Droid Sans Fallback", monospace } CODE.ctl { font-family: "Lohit Hindi", monospace } A:link { so-language: zxx } -->

org.json 包中含有类JSONArray/JSONObject/JSONStringer/JSONTokener/JSONException 五个类

 

  1. .JSONArray 一个值序列的集合

  2. JSONObject 一个可变值的键值对

  3. JSONStringer 重写里toString 方法

  4. JSONTokener 解析json 编码的字符串为对应的对象

  5. JSONException JSON 中的异常

 

JSONTokener 中常用的方法是:构造函数和nextValue()

 

ex:

 

String json = "{"


         + "  \"query\": \"Pizza\", "


         + "  \"locations\": [ 94043, 90210 ] "


         + "}";



 JSONObject object = (JSONObject) new JSONTokener(json).nextValue();


 String query = object.getString("query");


 JSONArray locations = object.getJSONArray("locations");




 public JSONTokener (S
tring

 in)


       构造函数,参数in
json

格式的字符才,如果参数为空则会抛出NullPointerExceptions


异常

public Object
 nextValue ()



       
获得构造函数中参数的下一个字符,该方法根据这个字符决定返回一个对象和是一个数组等等,源码如下:

public Object nextValue() throws JSONException {

int c = nextCleanInternal();

switch (c) {

case -1:

throw syntaxError( "End of input" );

 

case '{' :

return readObject();

 

case '[' :

return readArray();

 

case '\'' :

case '"' :

return nextString(( char ) c);

 

default :

pos --;

return readLiteral();

}

}

 

 

 

 

 

JSONObject

一个可变的键值对集合,键是唯一的/ 不能为空的字符串。值可以是多种类型,如:JSONObject/ JSONArray / String /Booleans / Integers /Longs / Doubles 或者 NULL 。值不能是除此之外的其他类型。

当被请求的时该类可以将类型转换成其他的类型。

1. 当被请求的类型是boolean ,字符串可以强制转换成“true” 或者”false”

String s = "false" ;

Boolean B = new Boolean(s);

查看 Boolean 类的源代码可以知道原理。 s 为“ true”( 不区分大小写 ) B true 否则都为 false,

 

2. 当请求的类型为 double 可以用 doubleValues(), 字符串用 valueOf(String) 转换。

int long 都是类似的方法

 

3. 当请求的类型所 String, 非空值可以通过 valueOf(Object)

String.valueOf(Object)

 

 

注意:这个类有两种表达 null 的方式,一个是 java 标准的 null, 另一个是这个类中的常量值 NULL 。特别的,

调用 put(name,null) 来删除 name 对应的值,但是调用 put(name,JSONObject.NULL) 来保存一个键值对的值为 JSONObject.NULL

 

JSONObject accumulate (String name, Object value)

在已经存在的 name 键中追加 value 值。

 

getType(name) 如果没有对应的 value ,或者 value 值不能强制转换 成请求的类型,则会抛出 JSONException 异常。

 

optType(name) 如果没有对应的 value, 或者 value 不能强制转换成请求的类型,则返回系统的或者用户支持默认的数据类型。

 

JSONArray

 

实现原理是通过一个 List<Objcet> 保存 values。

 

 

其他解释的链接:http://3688429.blog.51cto.com/3678429/682956

猜你喜欢

转载自zhuruenzhe2011-163-com.iteye.com/blog/1663994
今日推荐