Json 即JavaScript Object Notation, 是一种常用的轻量级的文本数据交换格式, json数据格式简单, 易于读写。
Json中有两种常用的数据结构, 对象、数组。其中:
对象是由 "{}" 保存的无序的名称/值对集合, 名称与值之间用 ":", 名称/值对之间用 "," 分隔,如{ "name" : "school", "url" : "www.baidu.com" },
数组是由 "[]" 保存的值有序集合, 值与值之间用 "," 分隔,如[ "site1": "baidu", "site2" : "music", "www" ],
json数组中的值可以是字符串(string)、数值(number)、true、false、 null、 对象(object)或者数组(array)以及它们的嵌套。
json文件有以下几点规范:
1) 数据保存在 "名称/值" 的键值对中;
2)数据之间用 "," 分隔, 数组或者对象(字典)的最后一个成员后不能加",";
3)"\" 表示转义字符,用 "{}" 表示对象,用 "[]" 表示数组。
1) json.dump() :将Python对象序列化为json格式的数据流并写入文件类型的对象中
import json
dic = {
"student" :
[
{"name" : "xlh",
"time" : "09:04"}
]
}
with open('./dic.json', mode='w', encoding='utf-8') as f:
json.dump(dic, f)
2) json.dumps() :将Python对象序列化为json格式的字符串
import json
dic = {
"student" :
[
{"name" : "xlh",
"time" : "09:04"}
]
}
data = json.dumps(dic)
print("转换为json前的数据类型为:\n{} \n转换之后数据类型为: {}".format(type(dic), type(data)))
>>>
<class 'dict'>
<class 'str'>
3) json.load() : 从josn文件对象中读取json格式的数据并反序列化成Python对象
import json
with open('./dic.json', encoding='utf-8') as f:
data = json.load(f)
print("读取json文件数据为:\n{}\n数据类型为: {}".format(data, type(data)))
>>>
读取json文件数据为:
{'student': [{'name': 'xlh', 'time': '09:04'}]}
数据类型为: <class 'dict'>
4) json.loads() 将包含json格式数据的字符串反序列化成Python对象
import json
s = '{"name": "cdbe", "data": 10, "des": "json"}'
data = json.loads(s)
print("读取json字符串:\n{}\n数据类型为: {}".format(data, type(data)))
>>>
读取json字符串:
{'name': 'cdbe', 'data': 10, 'des': 'json'}
数据类型为: <class 'dict'>