Json--浅析android中API调用处理的

1.json概述(json官网:http://www.json.org/json-zh.html

 1)json是一种轻量级的数据交换形式;

 2)json构建于两种结构:
      1."key:value"对的集合;
      2.值的有序列表(a dense indexed sequence of valules);

3)结构:
      jsonObject:{'key':value},相当与Java中Map<String, Object>
      注意:key值只能为String
      value值可以是 八中基本类型、JsonArray、object、null等;

 4)JSON Vs XML
       1.二者都具有相同的可读性;
     2.二者都具有很多解析方法;
     3.json相对xml来讲,体积较小;
     4.json对数据的描述没有xml文件丰富;
     5.json的传递速度较xml

2.android中提供对json的处理;

package:org.json
Classes
JSONArray   A dense indexed sequence of values. 
JSONObject  A modifiable set of name/value mappings. 
JSONStringer    Implements toString() and toString(). 
JSONTokener Parses a JSON (RFC 4627) encoded string into the corresponding object. 
Exceptions
JSONException   Thrown to indicate a problem with the JSON API. 

从API中可以明确得知,有处理数组的json、key-value Map映射的json
1)对于jsonArray,值得注意的一点就是 我可以将一个Collection集合转换成一个Array;
JSONArray(Collection copyFrom)

 2)对于jsonObject,值得注意的一点就是 我可以讲一个Map<String, Obejct>转换成一个jsonObject;
      JSONObject(Map copyFrom)

 3)对于json文本解析类JsonTokener;

3.举例说明

String json = "{"
                 + "  \"query\": \"Pizza\", "
                 + "  \"locations\": [ 94043, 90210 ] "
                 + "}";

Log.i("JsonActivity", "-------->json:"+json);


、、、、

private void testJsonToker(String json) {
        JSONTokener tokener = new JSONTokener(json);

        try {
            JSONObject object = (JSONObject) tokener.nextValue();
            Log.i("JsonActivity", "-------->object:"+object);
            JSONArray nameArrays = object.names();
            Log.i("JsonActivity", "-------->nameArrays:"+nameArrays);
            Iterator<String>keyIter = object.keys();
            for(;keyIter.hasNext();){
                String val = keyIter.next();
                Log.i("JsonActivity", "-------->val:"+val);
            }
            JSONArray valueArrays = object.toJSONArray(nameArrays);
            Log.i("JsonActivity", "-------->valueArrays:"+valueArrays);

            JSONObject object2 = object.accumulate("query", "mianpi");//query有映射
            Log.i("JsonActivity", "-------->object2:"+object2);

            JSONObject object22 = object.accumulate("query2", "jiaozi");//query没有映射
            Log.i("JsonActivity", "-------->object22:"+object22);

            JSONObject object3 = valueArrays.toJSONObject(nameArrays);
            Log.i("JsonActivity", "-------->object3:"+object3);

            JSONObject object4 = valueArrays.toJSONObject(new JSONArray("['one', 'two']"));
            Log.i("JsonActivity", "-------->object4:"+object4);

            //映射的key比value多
            JSONObject object42 = valueArrays.toJSONObject(new JSONArray("['one', 'two', 'three']"));
            Log.i("JsonActivity", "-------->object42:"+object42);

            //映射的key比value少
            JSONObject object43 = valueArrays.toJSONObject(new JSONArray("['one']"));
            Log.i("JsonActivity", "-------->object43"+object43);

        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

Log:
04-15 11:50:17.790: I/JsonActivity(27601): ——–>json:{ “query”: “Pizza”, “locations”: [ 94043, 90210 ] }
04-15 11:50:17.800: I/JsonActivity(27601): ——–>object:{“locations”:[94043,90210],”query”:”Pizza”}
04-15 11:50:17.800: I/JsonActivity(27601): ——–>nameArrays:[“locations”,”query”]
04-15 11:50:17.800: I/JsonActivity(27601): ——–>val:locations
04-15 11:50:17.800: I/JsonActivity(27601): ——–>val:query
04-15 11:50:17.800: I/JsonActivity(27601): ——–>valueArrays:[[94043,90210],”Pizza”]
04-15 11:50:17.800: I/JsonActivity(27601): ——–>object2:{“locations”:[94043,90210],”query”:[“Pizza”,”mianpi”]}
04-15 11:50:17.800: I/JsonActivity(27601): ——–>object22:{“locations”:[94043,90210],”query2”:”jiaozi”,”query”:[“Pizza”,”mianpi”]}
04-15 11:50:17.800: I/JsonActivity(27601): ——–>object3:{“locations”:[94043,90210],”query”:”Pizza”}
04-15 11:50:17.800: I/JsonActivity(27601): ——–>object4:{“two”:”Pizza”,”one”:[94043,90210]}
04-15 11:50:17.800: I/JsonActivity(27601): ——–>object42:{“two”:”Pizza”,”one”:[94043,90210]}
04-15 11:50:17.800: I/JsonActivity(27601): ——–>object43{“one”:[94043,90210]}

从Log分析可看出JsonObject和JsonArray之间的转换关系

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值