Как prettyprint файл JSON?



У меня есть файл JSON, который является беспорядком, который я хочу prettyprint-- какой самый простой способ сделать это в python? Я знаю, что PrettyPrint принимает "объект", который, я думаю, может быть файлом, но я не знаю, как передать файл-просто использование имени файла не работает.

635   7  

7 ответов:

The json модуль уже реализует некоторые основные распечатки с

Вы можете сделать это в командной строке:

cat some.json | python -m json.tool

(Как уже упоминалось в комментарии к вопросу).

на самом деле python не является моим любимым инструментом, насколько это касается обработки json в командной строке. Для простой красивой печати все в порядке, но если вы хотите манипулировать json, он может стать чрезмерно сложным. Вскоре вам нужно будет написать отдельный файл сценария, вы можете получить карты, ключи которых являются u "some-key" (python unicode), что делает выбор поля сложнее и не идут в направлении печати.

Я использую jq. Вышесказанное можно сделать с помощью:

cat some.json | jq ''

и вы получаете цвета в качестве бонуса (и способ легче расширяемость).

Pygmentize + Python json.tool = красивая печать с подсветкой синтаксиса

пигментация-это инструмент убийцы. это видеть.

я объединяю python json.инструмент с пигментацией

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

см. ссылку выше для инструкции по установке pygmentize.

демонстрация этого находится на изображении ниже:

demo

используйте эту функцию и не потеть, чтобы помнить, если ваш JSON является str или dict снова-просто посмотрите на красивую печать:

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)

вы можете использовать встроенный 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)

чтобы иметь возможность довольно печатать из командной строки и иметь возможность контролировать отступ и т. д. вы можете настроить псевдоним, подобный этому:

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

вот простой пример красивой печати JSON на консоль в хорошем смысле на Python, не требуя, чтобы 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))

Comments

    Ничего не найдено.