JSON
JSON是指JavaScript对象表示法(JavaScript Object Notation)
- 独立于语言和平台
- 和XML类似,存储和交换文本信息
- 比XML语言更快、更易解析
语法规则如下:
(1)使用键值对(key:value)表示对象属性
(2)使用(,)分隔多条数据
(3)使用花括号{}包含对象
(4)使用方括号[]表示数组
基本结构
1、JSON键/值对
- 格式:字段名称(包含在双引号内)后面一个冒号然后是值
- 例如:“name”:“xiaohong”
2、 JSON的值
数字、字符串、逻辑值、数组、对象、null
3、JSON对象{}
- 格式:{key:value,key:value,....}的键值对结构,取值方法“对象.key“获取属性,这个属性可以是数字、字符串、数组、对象。
4、JSON数组[] - 格式:[字段1,字段2,字段3,.....],其中字段值对类型可以是数字、字符串、数组、对象、使用索引获取值
下面写一个示例:
{
"name":"中国",
"province":[{
"name":"湖北",
"cities":{
"city":["武汉","襄阳"]
}},{
"name":"辽宁",
"cities":{
"city":["沈阳","大连","鞍山"]
}
}]
}
从python2.6开始加入了json模块,使用import json导入就可以使用,Json模块提供了Python对象的序列化和反序列化功能:
(1)序列化(encoding):将一个Python对象编码转换成JSON字符串的过程
(2)反序列化(decoding):将JSON字符串解码转换成Python对象的过程
基本应用
json模块提供了4个方法:dumps()、dump()、loads()、load(),用于字符串和Python数据类型间进行转换。其中loads()和load()方法用于Python对象的反序列化,dumps()和dump()用于Python对象的序列化
json.loads()
把JSON格式字符串解码成Python对象。从JSON类型向Python原始类型转换的对照如下:
JSON | Python |
---|---|
object | dict |
array | list |
string | unicoce |
number(int) | int.long |
number(real) | float |
true | True |
false | False |
null | null |
json.dumps()
实现将Python类型编码为JSOn字符串,返回一个str对象,从Python类型转换的对照如下表
Python | JSON |
---|---|
str,unicode | string |
int,long,float | number |
True | true |
False | false |
None | null |
json.load()
读取文件中JSON形式的字符串元素,转换为Python类型,它与json.loads()方法不同点在于一个读取的是字符串一个读取的是文件。
以下示例读取一个名为listStr.json和dictStr.json的文件内容,代码如下:
import json
str_list=json.load(open("listStr.json"))
print(str_list)
str_dict=json.load(open("dictStr.json"))
print(str_dict)
json.dump()
将Python内置类型序列化json对象后写入文件,它和json.dumps()的区别也是处理文件/字符串
import json
str_list=[{"city":"北京"},{"name":"小明"}]
json.dump(str_list,open("listStr.json","w"),ensure_ascii=False)