首页 文章

如何打印JSON文件?

提问于
浏览
655

我有一个JSON文件,这是一个混乱,我想漂亮 - 在python中最简单的方法是什么?我知道PrettyPrint有一个“对象”,我认为它可以是一个文件,但我不知道如何传入文件 - 只是使用文件名不起作用 .

7 回答

  • 8

    为了能够从命令行进行漂亮打印并能够控制缩进等,您可以设置类似于此的别名:

    alias jsonpp="python -c 'import sys, json; print json.dumps(json.load(sys.stdin), sort_keys=True, indent=2)'"
    

    然后以下列方式之一使用别名:

    cat myfile.json | jsonpp
    jsonpp < myfile.json
    
  • 19

    你可以使用内置的pprint .

    如何使用json数据读取文件并将其打印出来 .

    import json
    import pprint
    
    with open('filename.txt', 'r') as f:
        data = f.read()
        json_data = json.loads(data)
    
    pprint.pprint(json_data)
    
  • 209

    json 模块已经使用 indent 参数实现了一些基本的漂亮打印:

    >>> import json
    >>>
    >>> your_json = '["foo", {"bar":["baz", null, 1.0, 2]}]'
    >>> parsed = json.loads(your_json)
    >>> print(json.dumps(parsed, indent=4, sort_keys=True))
    [
        "foo", 
        {
            "bar": [
                "baz", 
                null, 
                1.0, 
                2
            ]
        }
    ]
    

    要解析文件,请使用 json.load()

    with open('filename.txt', 'r') as handle:
        parsed = json.load(handle)
    
  • 41

    您可以在命令行上执行此操作:

    cat some.json | python -m json.tool
    

    (正如问题评注中已经提到的那样) .

    实际上,就命令行上的json处理而言,python不是我最喜欢的工具 . 对于简单漂亮的打印是可以的,但如果你想操纵json,它可能会变得过于复杂 . 你很快就需要编写一个单独的脚本文件,你可能最终得到的键是你的“某些键”(python unicode),这使得选择字段变得更加困难而且并没有真正朝着漂亮的方向发展 . - 印刷 .

    我用jq . 以上可以通过以下方式完成:

    cat some.json | jq ''
    

    并且您获得颜色作为奖励(以及更容易扩展的方式) .

  • 1040

    Pygmentize Python json.tool =使用语法突出显示的漂亮打印

    Pygmentize是一种杀手级工具 . See this.

    我将python json.tool与pygmentize结合起来

    echo '{"foo": "bar"}' | python -m json.tool | pygmentize -l json
    

    有关pygmentize安装说明,请参阅上面的链接 .

    这个演示如下图所示:

    demo

  • 30

    使用这个功能,不要再记得你的JSON是否是 strdict - 只需看看漂亮的印刷品:

    import json
    
    def pp_json(json_thing, sort=True, indents=4):
        if type(json_thing) is str:
            print(json.dumps(json.loads(json_thing), sort_keys=sort, indent=indents))
        else:
            print(json.dumps(json_thing, sort_keys=sort, indent=indents))
        return None
    
    pp_json(your_json_string_or_dict)
    
  • 4

    下面是一个简单的例子,在Python中以一种很好的方式将JSON打印到控制台,而不需要JSON作为本地文件在您的计算机上:

    import pprint
    import json 
    from urllib.request import urlopen # (Only used to get this example)
    
    # Getting a JSON example for this example 
    r = urlopen("https://mdn.github.io/fetch-examples/fetch-json/products.json")
    text = r.read() 
    
    # To print it
    pprint.pprint(json.loads(text))
    

相关问题