Android关于JSON解析

JSON是一种轻量级的数据交换格式,是基于JavaScript的一个子集。

Json有四个基本类一个异常
基本类:JSONObject、JSONArray、JSONStringer、 JSONTokener
异常:JSONException

基础结构:对象(JsonObject)与数组(JsonArray)
对象:即用{}括起来的内容。数据结构为{key:value,key:value...}的键值对的结构。
数组:即用[]括起来的内容。数据结构为["java","c","c++"...]

JSON相关练习
1、JSONObject, JSONArray来构建json文本

 假设现在要创建这样一个json文本    
{    
   "phone" : ["12345678", "87654321"], // 数组    
   "name" : "yuanzhifei89", // 字符串    
   "age" : 100, // 数值    
   "address" : { "country" : "china", "province" : "jiangsu" }, // 对象    
   "married" : false // 布尔值    
           }   

/**解答*/
JsonObject Person = new JsonObject();
//电话号码是一个数组[],所以创建一个JsonArray 
JsonArray phone = new JsonArray();
phone.put("12345678").put("87654321");
person.put("phone",phone);

person.put("name","yuanzhifei89");
person.put(100);
//地址是一个对象{},即创建一个JsonObject
JsonObject address = new JsonObject();
address.put("country","china").put("province","jiangsu" );
person.put("address",adress);

person.put("married",flase);

2、

String jsonString ={"url":"http://www.cnblogs.com/qianxudetianxia"};

/**解答*/
JsonObject object = new JsonObject(jsonString);
String url = object.getString("url");

3、

String jsonString ={"name":"android"," version":"Beta1.0"};

/**解答*/
JsonObject object = new JsonObject(jsonString);
JsonString name = object.getString("name");
JsonString version = object.getString("version ");

4、

String jsonString ={"number":[1,2,3]};

/**解答*/
JsonObject object = new JsonObject(jsonString);
JsonArray array = object.getJsonArray("number");
for(int i = 0; i < array.length();i++){
    //因为array里面的数据是int型
    System.println(array.getInt(i));
}

5、

String jsonString ={"number":[[1],[2],[3]]};

/**解答*/
JsonObject object = new JsonObject(jsonString);
JsonArray array = object.getJsonArray("number");
for(int i = 0; i < array.length();i++){
    //获取数组中的数组
    System.println(array.getJsonArray(i).getInt(0));
}

6、

String jsonString ={"mobile":[{"name":"android"},{"name":"iphone"}]};

/**解答*/
JsonObject object = new JsonObject(jsonString);
JsonArray array = object.getJsonArray("mobile");
for(int i = 0; i < array.length();i++){
    //此处是获取两个对象中的值
System.println(array.getJsonObject(i).getString("name"));
}

上面的例子,使用getType在碰到查找不到节点的时候,会抛出异常。
如果使用optType,找不到节点,则返回null或者默认值。

//无url节点,抛出异常
String url = demoJson.getString(“url”);

//无url节点,返回空,如果为基本类型,则返回默认值
String url = demoJson.optString(“url”);

<1>.JSON的优点:
  A.数据格式比较简单,易于读写,格式都是压缩的,占用带宽小;
  B.易于解析,客户端JavaScript可以简单的通过eval()进行JSON数据的读取;
  C.支持多种语言,包括ActionScript, C, C#, ColdFusion, Java, JavaScript, Perl, PHP, Python, Ruby等服务器端语言,便于服务器端的解析;
  D.在PHP世界,已经有PHP-JSON和JSON-PHP出现了,偏于PHP序列化后的程序直接调用,PHP服务器端的对象、数组等能直接生成JSON格式,便于客户端的访问提取;
  E.因为JSON格式能直接为服务器端代码使用,大大简化了服务器端和客户端的代码开发量,且完成任务不变,并且易于维护。
<2>.JSON的缺点
  A.没有XML格式这么推广的深入人心和喜用广泛,没有XML那么通用性;
  B.JSON格式目前在Web Service中推广还属于初级阶段。

最后Json解析 PK xml解析

(1).可读性方面。
JSON和XML的数据可读性基本相同,JSON和XML的可读性可谓不相上下,一边是建议的语法,一边是规范的标签形式,XML可读性较好些。
(2).可扩展性方面。
XML天生有很好的扩展性,JSON当然也有,没有什么是XML能扩展,JSON不能的。
(3).编码难度方面。
XML有丰富的编码工具,比如Dom4j、JDom等,JSON也有json.org提供的工具,但是JSON的编码明显比XML容易许多,即使不借助工具也能写出JSON的代码,可是要写好XML就不太容易了。
(4).解码难度方面。
XML的解析得考虑子节点父节点,让人头昏眼花,而JSON的解析难度几乎为0。这一点XML输的真是没话说。
(5).流行度方面。
XML已经被业界广泛的使用,而JSON才刚刚开始,但是在Ajax这个特定的领域,未来的发展一定是XML让位于JSON。到时Ajax应该变成Ajaj(Asynchronous Javascript and JSON)了。
(6).解析手段方面。
JSON和XML同样拥有丰富的解析手段。
(7).数据体积方面。
JSON相对于XML来讲,数据的体积小,传递的速度更快些。
(8).数据交互方面。
JSON与JavaScript的交互更加方便,更容易解析处理,更好的数据交互。
(9).数据描述方面。
JSON对数据的描述性比XML较差。
(10).传输速度方面。
JSON的速度要远远快于XML。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值