详细信息见:JSON官网http://www.json.org/
JSON 基本定义
l JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
l JSON 是轻量级的文本数据交换格式
l JSON 独立于语言 *
l JSON 具有自我描述性,更易理解
JSON 使用 JavaScript 语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。
JSON基本语法:
l 数据在名称/值对中
l 数据由逗号分隔
l 花括号保存对象(花括号可以理解为一个容器)
l 方括号保存数据
JSON的值可以是:
· 数字(整数或浮点数)
· 字符串(在双引号中)
· 逻辑值(true或 false)
· 数组(在方括号中)
· 对象(在花括号中)
· null
JSON 对象
· JSON 对象在花括号中书写:
· 对象可以包含多个名称/值对:
{ "firstName":"John" ,"lastName":"Doe" }
JSON 数组
· JSON 数组在方括号中书写:
· 数组可包含多个对象:
{
"employees": [
{ "firstName":"John" ,"lastName":"Doe" },
{ "firstName":"Anna" ,"lastName":"Smith" },
{ "firstName":"Peter" ,"lastName":"Jones" }
]
}
在上面的例子中,对象 "employees" 是包含三个对象的数组。每个对象代表一条关于某人(有姓和名)的记录。
JSON 文件
· JSON 文件的文件类型是 ".json"
· JSON 文本的 MIME 类型是 "application/json"
JSON与XML区别:
l XML里在元素的开始和结尾处有尖括号和标签名:JSON使用花括号,而且只在数据的开始和结束时使用。
l JSON更简练。
l JSON可以在JavaScript里简单的传递到eval()方法里使用
l JSON里有数组{每个元素没有自己的名称}
l 在XML里可以对一个元素使用任意想要的名称,在JSON里不能使用Javascript里的保留字
JAVA解析JSON:
1、JSON-java最重要的类有三个。
JSONObject : 包装一个map。用来表示一个{k:v,k2:v2,k3:[1,2]}形式的json数据
JSONArray :包装一个ArrayList。用来表示一个[1,2,{k:v}]形式的json数据
JSONTokener:包装一个Reader。用来存储、读取、操作一个表示JSON数据的字符串
2、原理
1、JSONObject和JSONArray都可以用一个JSONTokener作为构造参数去实例化。
2、解析时可能会产生多个JSONObject或者JSONArray。但是他们都是操作同一个JSONTokener。
3、JSONObject和JSONArray可以分别通过JSONTokener提供的方法解析出对方。可以实现嵌套。
参考:http://www.w3school.com.cn/json/
http://www.json.org/