标准库系列:json
什么是 json
- JavaScript 对象表示法 (JavaScript Object Notatiion)
- 轻量级的文本数据交换格式
- JSON 独立性语言
- JSON 具有自我描述性,更容易理解
- JSON 比XML更小,更快,更易解析
JSON长什么样?
{"firstname":"John","lastname":"Doe"}
{
"employees":[
{"firstName":"John1","lastName":"Doe1"},
{"firstName":"John2","lastName":"Doe2"}
]
}
访问方式:employees[0].lastname
Python中json标准库的作用
- 使用json字符串生成python对象(load)
- 由python对象格式化生成json字符串(dump)
数据类型转换
Python | JSON | Python |
---|---|---|
dict | object | dict |
list,tuple | array | list |
str | string | str |
int, float, int -& float-devived Enums | number | int, float |
True, False, None | true, false, null | True, False, None |
注:
list转array
np.array(a)
array 转list
a.tolist()
Usage
方法 | 功能 |
---|---|
json.dump(obj,fp) | 将python数据类型转换并保存到json格式的文件内 |
json.dumps(obj) | 将python数据类型转换为json格式的字符串 |
json.load(fp) | 从json合适的文件中读取数据并转换为python的类型 |
json.loads(s) | 将json格式的字符转换为python的类型 |
#规范的文件读写方式:
try:
f = open("data\init.json","r")
print(f.read())
finally:
if f:
f.close()
#简化版
with open("data\init.json","w") as f:
print(f.read())
'''dump'''
import json
#person是<class 'dict'>, 打印出来是单引号!!!True
person = {"name":"Sniper","age":30,"tel":["1234567","2345678"],"isonly":True}
#jsonStr是<class 'str'>, 打印出来是双引号!!!true
jsonStr = json.dumps(person)
jsonStr = json.dumps(person, indent=4,sort_key=True)
#indent能够改善缩进形式!
#sort_key能够对key进行排序
with open('data.json','w') as f:
json.dump(person, open())
'''load'''
s = '{"name":"Sniper","age":30,"tel":["1234567","2345678"],"isonly":true}'
pythonOjb = json.loads(s)
'''load from files'''
pythonOjb = json.load(open('emplyees.json','r'))