前言
JSON是一个轻量级的数据交换格式。Python也可以很好的使用JSON,但是使用的逻辑与其他的语言有点差别。
JSON实质
JSON其实是一个单独的语言,跟javascript没有多大关系,并不是傍着javascript出现的。它的存在是为了跨语言交换数据!
假设:世界上只有一种计算机语言。
所有人使用一种语言进行数据交互没有什么问题。
假设:世界上只有两种语言。
人们设计一种数据转换规则就可以了。语言A与语言B就能进行数据交换。
悲催的是。。。。。。
人们发明了很多计算机语言。
如果每两个语言就要设置一个数据交换规则(五种语言就要疯)。
于是 就诞生了中间语言,每个语言只要能把数据包装成这个中间语言就可以了!
这个中间语言最好能够
1、跨语言交流。
2、易读。
3、网络传输效率高。
JSON符合所有条件!
Python与JSON
JSON是一个中间语言,进行数据传输,在Python中,JSON的载体是字符串。
json_str='{"name":"qiyue","age":18}' #JSON中字符串必须使用双引号
因为JSON属于一个中间格式,所以也有自己的规则。Python中字符串可以用单引号也可以使用双引号。但是为了表达JSON字符串必须使用双引号。否则无法解析。
注意:这里的JSON载体是字符串。所以上面的字符串其实就是一个JSON对象。
反序列化
那么我们怎么使用JSON呢,python中有一个类型与JSON可以完美契合,那就是字典!python也提供方法直接把JSON字符串直接转换为字典!
import json
json_str='{"name":"haha","age":18}' #必须使用双引号
jsonDict=json.loads(json_str) #把jsonObject转换为python的dict
print(type(jsonDict))
print(jsonDict)
<class 'dict'>
{'name': 'haha', 'age': 18}
使用跟字典一样使用即可
print(jsonDict['name'])
把JSON字符串转换为Python dict这就是一个典型的反序列化的过程!
转换表
序列化
import json
student=[
{'name':'hengheng','age':18,'flag':False},
{'name':'haha','age':18}
]
json_str=json.dumps(student)
print(type(json_str))
print(json_str)
结果为:
<class 'str'>
[{"age": 18, "flag": false, "name": "hengheng"}, {"age": 18, "name": "haha"}]