JSon是什么

  JSon(JavaScript Object Notation),即javascript对象标记,但是要注意的是,JSon并不是javascript语言的一部分,事实上,它可以说是与javaScript同级,w3c同样为JSon定义了标准。目前,JSon使用范围越来越广泛,自从它出现,就不断的蚕食XML的份额,相对于XML来说,JSon是一种轻量级的数据交换格式,不需要严格的标签。JSon并不复杂,目前多数web站点都采用了JSon格式来交换数据。
下面是xml:

<?xml version="1.0" encoding="ISO-8859-1"?>

<nitf>

<head>
<title>Colombia Earthquake</title>
</head>

<body>

<headline>
<hl1>143 Dead in Colombia Earthquake</hl1>
</headline>
<byline>
<bytag>By Jared Kotler, Associated Press Writer</bytag>
</byline>
<dateline>
<location>Bogota, Colombia</location>
<date>Monday January 25 1999 7:28 ET</date>
</dateline>

</body>

</nitf>

下面是JSon:

{
"employees": [
{ "firstName":"John" , "lastName":"Doe" },
{ "firstName":"Anna" , "lastName":"Smith" },
{ "firstName":"Peter" , "lastName":"Jones" }
]
}

    对比很容易发现JSon的优势,足够轻量级,会提高交换数据效率。要弄懂JSon,必须要理解三个概念:
1.什么是JSon,2.什么是JSon字符串,3. 序列化与反序列化
JSon是一种轻量级的数据交换格式,即JSon本质上就是可跨平台跨语言的满足特定标准的数据。JSon的表现形式是字符串,满足JSon格式的字符串就称为JSon字符串。要注意的是,JSon并没有严格的对象概念,尽管它传入别的编程语言多数是以对象的形式传入,网上多数将JSon对象解释成JavaScript对象。
至于什么是序列化与反序列化,这里我通过JSon在Python的应用来解释。首先,JSon数据类型在Python中
是不同的,需要进行转换。默认执行以下转换:

JSON Python
object dict
array list
string str
number(int) int
number(real) float
true True
false False
null None

序列化:把Python数据类型转换成json数据类型,反序列化:把json数据类型转换成Python数据类型,即反序列化。

# coding:utf-8
import json

json_str = '{"employees": ' \
              '[{ "firstName":"John" , "lastName":"Doe" },' \
              '{ "firstName":"Anna" , "lastName":"Smith" },' \
              '{ "firstName":"Peter" , "lastName":"Jones" }' \
              ']' \
          '}'

student = json.loads(json_str)  # 把Python数据类型转换成json数据类型,即序列化
print(student)
print(type(student))

s = json.dumps(json_str)  # 把json数据类型转换成Python数据类型,即反序列化
print(s)
print(type(s))

输出:
JSon是什么