在使用的时候先导入json库: import json
方法 | 描述 |
---|---|
json.dumps() | 将 Python 对象编码成 JSON 字符串 |
json.loads() | 将已编码的 JSON 字符串解码为 Python 对象 |
json.dump() | 将Python内置类型序列化为json对象后写入文件 |
json.load() | 读取文件中json形式的字符串元素转化为Python类型 |
json.dumps()
import json
jsonStr = {'name':'zhangsan', 'age':13}
# 将Python对象编码成json字符串
print(json.dumps(jsonStr))
{“name”: “zhangsan”, “age”: 13}
json.loads()
jsonStr = '{"name": "zhangsan", "age": "13"}'
obj = json.loads(jsonStr)
print(obj)
print(obj["name"])
{‘name’: ‘zhangsan’, ‘age’: ‘13’}
zhangsan
json.dump(), json.load()
jsonStr = {'name':'zhangsan', 'age':13}
with open('test.txt', 'w+') as f:
json.dump(jsonStr, f)
with open('test.txt', 'r+') as f:
print(json.load(f))
{‘name’: ‘zhangsan’, ‘age’: 13}
对于正常的json字符串,使用json.loads()可以获得Python字典对象
jsonStr = '{"name":"zhangsan", "age":13}'
print(json.loads(jsonStr))
{‘name’: ‘zhangsan’, ‘age’: 13}
对于其它格式的json字符串,就无法正常解析了
jsonStr = "{'name':'zhangsan', 'age':13}"
print(json.loads(jsonStr))
TypeError: the JSON object must be str, bytes or bytearray, not ‘dict’
解决方法, 引入demjson库: import demjson
jsonStr = "{'name':'zhangsan', 'age':13}"
jsonStr1 = demjson.encode(demjson.decode(jsonStr))
print(json.loads(jsonStr1))
print(json.loads(jsonStr1)["name"])
{‘age’: 13, ‘name’: ‘zhangsan’}
zhangsan