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": "张三"
}

posted @ 2022-05-14 23:32  DeyouKong  阅读(162)  评论(0编辑  收藏  举报