一、什么是JSON?
JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate. It is based on a subset of the JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999. JSON is a text format that is completely language independent but uses conventions that are familiar to programmers of the C-family of languages, including C, C++, C#, Java, JavaScript, Perl, Python, and many others. These properties make JSON an ideal data-interchange language.
这是JSON官网的一段描述,大概意思是说JSON是一种完全与语言无关的,容易解析和生成,用作轻量级数据交换的文本格式,可以在多种不同语言间交换数据。
比如某学校“三年级一班”有4个学生张三、李四、王五、马六,我们可以很容易的生成如下的代码表示这些内容:
{
"class": "三年级一班",
"students": [
"zhangsan",
"lisi",
"wangwu",
"maliu"
]
}
在java,c++,c#,python等几乎所有的高级语言中你都可以自己编程解析它,或者用别人写好的方法或函数解析它们。
二、JSON的结构
JSON is built on two structures:
A collection of name/value pairs. In various languages, this is realized as an object, record, struct, dictionary, hash table, keyed list, or associative array.
An ordered list of values. In most languages, this is realized as an array, vector, list, or sequence.
JSON有两种结构:
-
名称/值对的集合,在大多数语言中被实现为对象,字典,散列表,键控列表或关联数组。
一个对象是一组无序的名称/值对。一个对象以
{
开始,以}
结束。每个名称后面跟着:
把名称/值分开,每对之间用,
隔开。例如:
{"name":"liufei","age":23,"address":"BeiJing"}
-
有序的值列表,在大多数语言中,这被实现为数组,向量,列表或序列。
一个数组是值的有序集合。阵列以
[
开始,以]
结尾。值由,
分开。例如:
[1,2,3,4]
在这里多次提到的值,它可以是多种类型:
可以是一个字符串(在双引号中),或一个数字,或true
,false
,或null
。或对象或一个数组,这些结构可以嵌套。
这些是通用数据结构。几乎所有现代编程语言都以一种或另一种形式支持它们。
三、JSON与JS
关系
很多人搞不清楚 JSON 和 Js 对象的关系,甚至连谁是谁都不清楚。其实,可以这么理解:
JSON 是 JS 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串。
解析与生成
要实现从对象转换为 JSON 字符串,使用 JSON.stringify() 方法:
var json = JSON.stringify({a: 'Hello', b: 'World'}); //结果是 '{"a": "Hello", "b": "World"}'
要实现从 JSON 转换为对象,使用 JSON.parse() 方法:
var obj = JSON.parse('{"a": "Hello", "b": "World"}'); //结果是 {a: 'Hello', b: 'World'}
四、常见的Java解析JSON工具包
JSON官网列出的工具如下:
以下是几个比较常见的JSON工具包介绍:
-
jdk库自带的JSONObject
-
Google的gson
-
阿里的FastJson
-
Jackson
-
Oracle的jsonp
-
net.sf.json
参考
http://blog.youkuaiyun.com/lmdsoft/article/details/51193007
http://blog.youkuaiyun.com/zhanggang740/article/details/52278373
http://www.cnblogs.com/zhanglu-cape/p/3960029.html
http://blog.youkuaiyun.com/leaderway/article/details/52374325