目录
1 JSON结构
▲JSON结构
{
"name" : "Chuck",
"phone" : {
"type" : "intl",
"number" : "+1 734 303 4456"
},
"email" : {
"hide" : "yes"
}
}
▲XML结构
<person>
<name>Chuck</name>
<phone type="intl">
+1 734 303 4456
</phone>
<email hide="yes" />
</person>
▲JSON与XML的区别:
XML可以在元素中添加attribute属性,如<phone type="intl"> ,而JSON中只有key-value对;
XML中有顶级元素<person>,而JSON最外层为{}
2 解析JSON
▲利用JSON库中的json.load()函数将json转化成python对象解析
▲示例一:
###json转化成字典
import json
data = '''
{
"name" : "Chuck",
"phone" : {
"type" : "intl",
"number" : "+1 734 303 4456"
},
"email" : {
"hide" : "yes"
}
}'''
info = json.loads(data)###json.loads解析JSON
print(info)
print(type(info))
print('User count:', len(info))
print('Name', info['name'])
print('phone number', info['phone']['number'])
▲示例二:
###json转化成列表
import json
data = '''
[
{ "id" : "001",
"x" : "2",
"name" : "Chuck"
} ,
{ "id" : "009",
"x" : "7",
"name" : "Brent"
}
]'''
info = json.loads(data)###json.loads解析JSON
print(info)###info为包含两个字典的列表
print(type(info))###list
print('User count:', len(info))
for item in info:###列表循环输出
print('Name', item['name'])
print('Id', item['id'])
print('Attribute', item['x'])
3 python对象转化成JSON
▲用json.dumps()转换
▲可以应用于以下对象,Python 对象会被转换为 JSON(JavaScript)等效项:
Python | JSON |
dict | Object |
list | Array |
tuple | Array |
str | String |
int | Number |
float | Number |
True | true |
False | false |
None | null |
import json
print(json.dumps({"name": "Bill", "age": 63}))
print(json.dumps(["apple", "bananas"]))
print(json.dumps(("apple", "bananas")))
print(json.dumps("hello"))
print(json.dumps(42))
print(json.dumps(31.76))
print(json.dumps(True))
print(json.dumps(False))
print(json.dumps(None))
▲示例
###dic转化成json
import json
x = {
"name": "Bill",
"age": 63,
"married": True,
"divorced": False,
"children": ("Jennifer","Rory","Phoebe"),
"pets": None,
"cars": [
{"model": "Porsche", "mpg": 38.2},
{"model": "BMW M5", "mpg": 26.9}
]
}
print(json.dumps(x))
输出内容
{"name": "Bill", "age": 63, "married": true, "divorced": false, "children": ["Jennifer", "Rory", "Phoebe"], "pets": null, "cars": [{"model": "Porsche", "mpg": 38.2}, {"model": "BMW M5", "mpg": 26.9}]}
▲上面的实例打印一个 JSON 字符串,但它不是很容易阅读,没有缩进和换行。采用indent参数进行缩进
json.dumps(x, indent=4)
输出内容:
{
"name": "Bill",
"age": 63,
"married": true,
"divorced": false,
"children": [
"Jennifer",
"Rory",
"Phoebe"
],
"pets": null,
"cars": [
{
"model": "Porsche",
"mpg": 38.2
},
{
"model": "BMW M5",
"mpg": 26.9
}
]
}
▲separators参数定义分隔符,默认值为(", ", ": "),这意味着使用逗号和空格分隔每个对象,使用冒号和空格将键与值分开:
json.dumps(x, indent=4, separators=(". ", " = "))
输出内容:
####.分隔不同对象,=分隔key和values####
{
"name" = "Bill".
"age" = 63.
"married" = true.
"divorced" = false.
"children" = [
"Jennifer".
"Rory".
"Phoebe"
].
"pets" = null.
"cars" = [
{
"model" = "Porsche".
"mpg" = 38.2
}.
{
"model" = "BMW M5".
"mpg" = 26.9
}
]
}
▲sort_keys=True时对结果进行排序
json.dumps(x, indent=4, sort_keys=True)
输出内容:
{
"age": 63,
"cars": [
{
"model": "Porsche",
"mpg": 38.2
},
{
"model": "BMW M5",
"mpg": 26.9
}
],
"children": [
"Jennifer",
"Rory",
"Phoebe"
],
"divorced": false,
"married": true,
"name": "Bill",
"pets": null
}