美文网首页
教你一招:让你的json文件更好看

教你一招:让你的json文件更好看

作者: 皮皮大 | 来源:发表于2021-04-20 00:31 被阅读0次

    json美化输出

    有时候,我们拿到手的json文件就是一整行,连在一起:十分的不美观,很难观察到里面的具体信息。本文介绍的是如何利用Python内的json包进行美化输出。

    image

    对比

    我们对比转化前后的json文件,在vscode中打开的效果:

    1、转化前:

    image

    2、转化后:

    image

    步骤1

    我们先将原来的json文件转成Python的字典形式:

    # 1、打开json文件转成字典类型
    
    with open("old.json",encoding="utf-8") as f:
        json_to_dict = json.load(f)  # json转成字典
    
    print(json_to_dict)
    

    步骤2

    将步骤1中得到的字典内容再转成新的json文件,注意换行和中文乱码问题:

    # 2、将字典类型的数据转成json,需要格式输出、美观
    
    with open("new.json", "w", encoding='utf-8') as f:
        json.dump(json_to_dict,   # 待写入数据
                  f, # File对象
                  indent=2,  # 空格缩进符,写入多行
                  sort_keys=True,  # 键的排序
                  ensure_ascii=False)  # 显示中文
    

    json包使用

    方法 作用
    json.dumps() 将python对象编码成Json字符串:字典到json
    json.loads() 将Json字符串解码成python对象:json到字典
    json.dump() 将python中的对象转化成json储存到文件中
    json.load() 将文件中的json的格式转化成python对象提取出来

    重要的参数对照:

    json.dumps(obj,   # 待转化的对象
               skipkeys=False,  # 默认值是False,若dict的keys内的数据不是python的基本类型(str,unicode,int,long,float,bool,None),设置为False时,就会报TypeError的错误。此时设置成True,则会跳过这类key
               ensure_ascii=True,  # 默认是ASCII码,若设置成False,则可以输出中文
               check_circular=True,  # 若为False,跳过对容器类型的循环引用检查
               allow_nan=True,  # 若allow_nan为假,则ValueError将序列化超出范围的浮点值(nan、inf、-inf),严格遵守JSON规范,而不是使用JavaScript等价值(nan、Infinity、-Infinity)
               cls=None,
               indent=None, # 参数根据格式缩进显示,表示缩进几个空格
               separators=None,   # 指定分隔符;包含不同dict项之间的分隔符和key与value之间的分隔符;同时去掉`: `
               encoding="utf-8",  # 编码
               default=None, # 默认是一个函数,应该返回可序列化的obj版本或者引发类型错误;默认值是只引发类型错误
               sort_keys=False,  # 若为False,则字典的键不排序;设置成True,按照字典排序(a到z)
               **kw)
    

    相关文章

      网友评论

          本文标题:教你一招:让你的json文件更好看

          本文链接:https://www.haomeiwen.com/subject/qtlglltx.html