To Noob Json是什么鬼?

转载请注明出处王亟亟的大牛之路

供应商A:那我们数据怎么交互啊?HTTP吧?那内容呢?JSON?XML?

小菜鸟B:JSON什么鬼?

为了菜鸟们避免以上情况楼主写一发JSON的博文,废话不多!開始!

先梳理下概念

1.JSON是什么

JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)

JSON 是轻量级的文本数据交换格式

JSON 独立于语言 *

JSON 具有自我描写叙述性,更易理解

JSON 使用 Javascript语法来描写叙述数据对象,可是 JSON 仍然独立于语言和平台。

JSON 解析器和 JSON 库支持很多不同的编程语言。

眼下非常多的动态(PHP,JSP。.NET)编程语言都支持JSON。



2.JSON和XML的同样点以及不同点

同样:

JSON 是纯文本

JSON 具有”自我描写叙述性”(人类可读)

JSON 具有层级结构(值中存在值)

JSON 可通过 JavaScript 进行解析

JSON 数据可使用 AJAX 进行传输

不同:

没有结束标签

更短

读写的速度更快

可以使用内建的 JavaScript eval() 方法进行解析

使用数组

不使用保留字

样例:

简单的JSON对象

{
"name": "wjj"
}
简单的样例。这是一个叫name的json对象,属性是字符串wjj。
{
"action": 123
}
我们办了变,他如今有一个属性。只是是int型的。值是123. 在我们人工读的时候,非常轻易就能解读那一段json字符串

JSON的数据类型

JSON 值可以是:

数字(整数或浮点数)
字符串(在双引號中)
逻辑值(true 或 false)
数组(在方括号里)
对象(在花括号里)
null

实例

要被解析的json字符串

{
"phone": [
"1000000",
"2000000"
],
"name": "wjj",
"age": 20,
"address": {
"country": "china",
"province": "shanghai"
},
"married": false
}

上面这段json字符串简单的说明了一个人的一些属性,各种类型的数据一目了然,那我们来试着写写这段JSON.

try {
// 首先最外层是{},是创建一个对象
JSONObject person = new JSONObject();
// 第一个键phone的值是数组。所以须要创建数组对象
JSONArray phone = new JSONArray();
phone.put("1000000").put("2000000");
person.put("phone", phone); person.put("name", "wjj");
person.put("age", 20);
// 键address的值是对象,所以又要创建一个对象
JSONObject address = new JSONObject();
address.put("country", "china");
address.put("province", "shanghai");
person.put("address", address);
person.put("married", false);
} catch (JSONException ex) {
// 键为null或使用json不支持的数字格式(NaN, infinities)
throw new RuntimeException(ex);
}

然后 再试着拆这段JSON

try {

    JSONObject jsonObject = new JSONObject(jsonData);
person.phoneArray=jsonObject.optJSONArray("phone ");
person.name=jsonObject.optString("name");
person.age=jsonObject.optInt("age");
JSONArray jsonObject1=jsonObject.opJSONArray("address");
person.country=jsonObject1.opString("country");
person.province=jsonObject1.opString("province");
person.married=jsonObject.opBoolean("married");
} catch (JSONException e) {
e.printStackTrace();
}

就是如此。一层一层拨开,逻辑非常清晰哦。

再推荐一些方便平时读JSON的地址 :

http://www.bejson.com/

http://json.cn/

今天就到这里。谢谢大家!

上一篇:Smarty的原理_面试


下一篇:ThinkPHP 3.1.2 模板中的变量