Android关于JSON解析

来源:互联网 发布:mac日历广告如何禁止 编辑:程序博客网 时间:2024/06/07 05:29

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);//地址是一个对象{},即创建一个JsonObjectJsonObject 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。

0 0
原创粉丝点击