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。