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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值