[python] Wie druckt man eine JSON-Datei?



Answers

Sie können dies in der Befehlszeile tun:

cat some.json | python -m json.tool

(wie bereits in den Kommentaren zu der Frage erwähnt).

Eigentlich ist Python nicht mein Lieblingswerkzeug, was die json-Verarbeitung in der Kommandozeile betrifft. Für einfaches hübsches Drucken ist ok, aber wenn Sie den JSON manipulieren möchten, kann es übermäßig kompliziert werden. Sie müssten bald eine separate Skript-Datei schreiben, Sie könnten mit Karten enden, deren Schlüssel "some-key" (Python-Unicode) sind, was die Auswahl von Feldern erschwert und nicht wirklich in die Richtung von hübsch geht -Drucken.

Ich benutze jq . Das obige kann getan werden mit:

cat some.json | jq ''

und du bekommst Farben als Bonus (und einfachere Erweiterbarkeit).

Question

Ich habe eine JSON-Datei, die ein Chaos ist, das ich prettyprint - was ist der einfachste Weg, dies in Python zu tun? Ich weiß, dass PrettyPrint ein "Objekt" nimmt, von dem ich denke, dass es eine Datei sein kann, aber ich weiß nicht, wie ich eine Datei weitergeben soll - nur die Verwendung des Dateinamens funktioniert nicht.




Benutze diese Funktion und verschwinde nicht, wenn du dich daran erinnerst, ob dein JSON wieder ein str oder dict - schau dir nur den hübschen Print an:

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)



Um in der Lage zu sein, über die Kommandozeile schön zu drucken und Kontrolle über die Einrückung usw. zu haben, können Sie einen ähnlichen Alias ​​erstellen:

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

Und dann verwende den Alias ​​auf eine der folgenden Arten:

cat myfile.json | jsonpp
jsonpp < myfile.json



Related