由于自己之前的原因,知道json是一种格式的数据和字典有点类似,从形式上看都有key和values值来构成。比如我们的接口返回数据,大部分都是json的格式。今天特地去网上百度了一下,解决了困扰一时的问题。
一、字典
它的类型是dict,是一种存储数据的结构。它的键名如果是字符,可以用双引号(单引号)引起来,如果是数字则可以不用。同理键值也一样,如果是字符,可以用双引号(单引号)引起来,如果是数字则可以不用。另外键名不能重复,重复了会更新成后面的值。
二、json
它的类型是str,是一字符的格式。json的格式要求必须且只能使用双引号作为key或者值的边界符号,不能使用单引号,而且“key”必须使用双引号,如果值为数字可以不使用双引号。
总结:
1:json格式的数据,在python中以字符串str格式存在的而字典是dict格式;
2:json中的空置为 null,字典中的空值为 None;
3:json中所有的key都是字符串,一定要用双引号括起来;如果value是数字则可不必,但是要是也是字符串就也必须要用双引号;
三、将字典转换成json格式
将导入json,使用json.dumps()函数即可
import json
#将字典转换成json字符串
dict_data = {'姓名':'jayce','性别':'女', "age": 23, 10:None, None:True}
reslut_json = json.dumps(dict_data)
print(type(reslut_json),reslut_json)
结果: {"\u59d3\u540d": "jayce", "\u6027\u522b": "\u5973", "age": 23, "10": null, "null": true}
证实了json是字符串格式,且在json中的空置为 null。
如果是多个字典的话,就放在列表中去嵌套,如下:
dict_data = [{'姓名':'jayce','性别':'女', "age": 23, 10:None, None:True},{'姓名':'jayce','性别':'女', "age": 23, 10:None, None:True}]
四、将json格式转换成字典
同样将导入json,使用json.loads()函数即可,记得在json数据的最外面添加单引号,把数据放在里面,作为一个字符串。
#将json字符串转为字典格式
json_data ='{"data":' \
'{"姓名": "jayce", "性别": "女", "age": 23}}'
result_dict= json.loads(json_data)
print(type(result_dict),result_dict)
结果: {'data': {'姓名': 'jayce', '性别': '女', 'age': 23}}