python 处理 JSON
json.laod 加载 json 文件
使用load(file_stream):作用从文件流直接读取并转换为dict字典或dict字典链表
# 加载配置,configuration_path:配置文件路径
def load_conf(configuration_path):
with open(configuration_path, 'r') as f:
data = json.load(f)
f.close()
return data
json.dump 写 json 文件
使用dump():将可转为json对象的对象直接写入文件(将两个步骤结合成一个步骤)
def save_conf(confiuration_path, pre_trans_obj):
with open(confiuration_path,'w') as f:
json.dump(pre_trans_obj, f, ensure_ascii=False)
f.close()
json.loads 将json字符串转成 json 对象
dict1 = """{"name": "张三", "id": 123345, "address": "广东深圳"}"""
dict1 = json.loads(dict1)
print(dict1)
print(type(dict1))
输出结果:
{'name': '张三', 'id': 123345, 'address': '广东深圳'}
<class 'dict'>
json.dumps 将 json 对象转成 json 字符串
语法
json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding="utf-8", default=None, sort_keys=False, **kw)
json.dumps 简单例子
dict1 = {"name": "张三", "id": 123345, "address": "广东深圳"}
print(dic1t)
print(type(dict1))
jsonStr = json.dumps(dict1)
print(jsonStr)
输出结果:
{'name': '张三', 'id': 123345, 'address': '广东深圳'}
<class 'dict'>
- json.dumps 会将中文字符转为unicode
- 解决办法1:在json.loads()后解码成正常中文
- 解决办法2:在 json.dumps 可以加入 ensure_ascii=False 这个参数解决
jsonStr = json.dumps(dict1, ensure_ascii=False)
json.dumps 格式化展示
需求:将 json 数据格式化展示
1、借助外部工具
2、使用json.dumps转成字符串时格式化
dict1 = {"name": "张三", "id": 123345, "address": "广东深圳"}
jsonStr = json.dumps(dict1, sort_keys=True, indent=4, separators=(',', ': '))
print(jsonStr)
输出结果
{
"address": "\u5e7f\u4e1c\u6df1\u5733",
"id": 123345,
"name": "\u5f20\u4e09"
}
- 输出结果为编码后的数据,我们在 json.dumps 可以加入 ensure_ascii=False 这个参数解决
dict1 = {"name": "张三", "id": 123345, "address": "广东深圳"}
jsonStr = json.dumps(dict1, sort_keys=True, indent=4, separators=(',', ': '), ensure_ascii=False)
print(jsonStr)
此时的输出结果
{
"address": "广东深圳",
"id": 123345,
"name": "张三"
}