3.7. JSON
JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
3.7.1. JSON语法
对象表示为键值对
数据由逗号分隔
花括号保存对象
方括号保存数组
怎么表示对象
对象以一对花括号包含,里面包含键值对,如 {"a":1, "b": "1"}
,这样子,键值必须以双引号括起来,数据之前以逗号分隔
怎么表示数组
数组以一对方括号包含,如 [1, 2, "2, {"a": 1}]
这样子
JSON对象和JSON字符串 JSON对象比较像python里的字典,但还是有区别的,JSON对象里的字符串只能用双引号,python可以用单引号,JSON对象里只能包括基础数据类型,即数字(包含小数)、字符串、数组、字典、空值,但python字典可以包含其它对象,下面定义一个JSON对象:
{
"key1": 1,
"key2": "1",
"key3": [1, "1"],
"key4": {
"key5": 1
}
}
JSON字符串是将JSON序列化后的字符串,将上面的JSON对象序列化后为:
'{"key3": [1, "1"], "key2": "1", "key1": 1, "key4": {"key5": 1}}'
3.7.2. 在python中使用json
python标准库中自带json模块,可以序列化和反序列化json,在python中json对象就是字典,但python字典不一定是json对象
序列化JSON:
# coding=utf-8
import json
raw_json = {
"key1": 1,
"key2": "1",
"key3": [1, "1"],
"key4": {
"key5": 1
}
}
json_str = json.dumps(raw_json)
print(repr(json_str))
输入为:
'{"key3": [1, "1"], "key2": "1", "key1": 1, "key4": {"key5": 1}}'
[Finished in 0.2s]
反序列化JSON:
# coding=utf-8
import json
raw_json = {
"key1": 1,
"key2": "1",
"key3": [1, "1"],
"key4": {
"key5": 1
}
}
json_str = '{"key3": [1, "1"], "key2": "1", "key1": 1, "key4": {"key5": 1}}'
raw_json = json.loads(json_str)
print(repr(raw_json))
输出结果为:
{u'key3': [1, u'1'], u'key2': u'1', u'key1': 1, u'key4': {u'key5': 1}}
[Finished in 0.2s]