Как prettyprint файл JSON?
У меня есть файл JSON, который является беспорядком, который я хочу prettyprint-- какой самый простой способ сделать это в python? Я знаю, что PrettyPrint принимает "объект", который, я думаю, может быть файлом, но я не знаю, как передать файл-просто использование имени файла не работает.
7 ответов:
Вы можете сделать это в командной строке:
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.
демонстрация этого находится на изображении ниже:
используйте эту функцию и не потеть, чтобы помнить, если ваш 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