Python – Pretty Print JSON

JSON znamená J ava S krypta Ó bject N otace. Je to formát pro strukturování dat. Tento formát používají různé webové aplikace ke vzájemné komunikaci. V tomto článku se dozvíme o pěkném tisku JSON

Co je JSON?

JSON (JavaScript Object Notation) je textový datový formát, který je zaměnitelný s mnoha programovacími jazyky. Běžně se používá pro přenos dat mezi aplikacemi klient-server. Obvykle se z důvodu úspory šířky pásma přenášejí minifikované verze textu JSON. Pro ladění a analýzu je však vyžadována zkrášlená verze nebo pěkně vytištěný JSON. Pěkný tisk JSON v podstatě znamená správné odsazení, mezery a oddělovače.

Příklad:

  Input:   '[ {'studentid': 1, 'name': 'ABC', 'subjects': ['Python', 'Data Structures']}]'   Output:   [ { 'studentid': 1, 'name': 'ABC', 'subjects': [ 'Python', 'Data Structures' ] } ] 

json.dumps() v Pythonu

Nejprve pomocí metody json.loads() převeďte řetězec JSON na Krajta objekt. K převodu tohoto objektu na pěkný tištěný řetězec JSON se používá metoda json.dumps(). Níže jsou uvedeny příklady a kroky k lepšímu pochopení těchto případů.

Syntax: json.dumps(obj, odrážka, oddělovač)

Parametr:

  • obj: Serializujte obj jako stream ve formátu JSON
  • Odrážka: Pokud je odsazení nezáporné celé číslo nebo řetězec, prvky pole JSON a členové objektu budou pěkně vytištěny s touto úrovní odsazení. Úroveň odsazení 0, záporná nebo vloží pouze nové řádky.
  • oddělovače: Je-li zadáno, oddělovače by měly být (item_separator, key_separator) n-tice.

Pretty Print JSON String

Tato metoda má parametr odsazení, který určuje počet mezer, a parametr oddělovače, který určuje oddělovač mezi klíčem a hodnotou. Ve výchozím nastavení je oddělovač čárka mezi páry klíč–hodnota a dvojtečka mezi klíčem a hodnotou. Pokud je parametr odsazení funkce json.dumps() záporný, 0 nebo prázdný řetězec, pak nejsou žádná odsazení a vkládají se pouze nové řádky. Ve výchozím nastavení je odsazení None a data jsou reprezentována na jednom řádku.

Kód vezme řetězec JSON obsahující záznamy studentů, analyzuje jej do datové struktury Pythonu a poté pěkně vytiskne data JSON se správným odsazením pro lepší čitelnost.

Python3




import> json> json_data> => '[ {> 'studentid'> :> 1> ,> 'name'> :> 'ABC'> ,> 'subjects'> : [> 'Python'> ,> 'Data Structures'> ]},> > {> 'studentid'> :> 2> ,> 'name'> :> 'PQR'> ,> > 'subjects'> : [> 'Java'> ,> 'Operating System'> ]} ]'> obj> => json.loads(json_data)> json_formatted_str> => json.dumps(obj, indent> => 4> )> print> (json_formatted_str)>

Výstup:

[ { 'studentid': 1, 'name': 'ABC', 'subjects': [ 'Python', 'Data Structures' ] }, { 'studentid': 2, 'name': 'PQR', 'subjects': [ 'Java', 'Operating System' ] } ] 

Pěkně vytištěná data JSON do souboru s odsazení=0 .

Kód vezme řetězec JSON obsahující záznamy studentů, analyzuje jej do datové struktury Pythonu a poté pěkně vytiskne data JSON s nulovým odsazením, díky čemuž jsou kompaktní a méně čitelná.

Python3




import> json> json_data> => '[ {> 'studentid'> :> 1> ,> 'name'> :> 'ABC'> ,> > 'subjects'> : [> 'Python'> ,> 'Data Structures'> ]},> > {> 'studentid'> :> 2> ,> 'name'> :> 'PQR'> ,> > 'subjects'> : [> 'Java'> ,> 'Operating System'> ]} ]'> obj> => json.loads(json_data)> json_formatted_str> => json.dumps(obj, indent> => 0> )> print> (json_formatted_str)>

Výstup:

[ { 'studentid': 1, 'name': 'ABC', 'subjects': [ 'Python', 'Data Structures' ] }, { 'studentid': 2, 'name': 'PQR', 'subjects': [ 'Java', 'Operating System' ] } ] 

Zapište data Pretty Print JSON do souboru

Chcete-li zapsat objekt Python jako data formátu JSON Pretty Print do souboru, použije se metoda json.dump(). Stejně jako metoda json.dumps() má parametry odsazení a oddělovače pro zápis zkrášleného JSON.

Python3




import> json> data> => [{> 'studentid'> :> 1> ,> 'name'> :> 'ABC'> ,> > 'subjects'> : [> 'Python'> ,> 'Data Structures'> ]},> > {> 'studentid'> :> 2> ,> 'name'> :> 'PQR'> ,> > 'subjects'> : [> 'Java'> ,> 'Operating System'> ]}]> with> open> (> 'filename.json'> ,> 'w'> ) as write_file:> > json.dump(data, write_file, indent> => 4> )>

Výstup:

název_souboru.json

Čtení dat JSON a pěkně si je vytiskněte

Chcete-li číst JSON ze souboru nebo adresy URL, použijte json.load(). Potom pomocí json.dumps() převeďte objekt (získaný čtením souboru) na pěkný tištěný řetězec JSON.

Python3




import> json> with> open> (> 'filename.json'> ,> 'r'> ) as read_file:> > > obj> => json.load(read_file)> > pretty_json> => json.dumps(obj, indent> => 4> )> > print> (pretty_json)>

Výstup:

[ { 'studentid': 1, 'name': 'ABC', 'subjects': [ 'Python', 'Data Structures' ] }, { 'studentid': 2, 'name': 'PQR', 'subjects': [ 'Java', 'Operating System' ] } ] 

Použitím modul pprint pro pěkný tisk JSON pro tisk našeho formátu JSON

Tento kód čte data JSON ze souboru s názvem test.json, analyzuje je do datové struktury Pythonu a poté je vytiskne pomocí obou vestavěných print> funkce a pprint> modul. The pprint> modul se používá k pěknému tisku dat JSON se specifickými možnostmi formátování, jako je odsazení 2, šířka řádku 30 znaků a kompaktní reprezentace.

Python3




import> json> import> pprint> with> open> (> 'test.json'> ,> 'r'> ) as json_data:> > student> => json.load(json_data)> > print> (student)> > print> (> ' '> )> pp> => pprint.PrettyPrinter(indent> => 2> , width> => 30> , compact> => True> )> print> (> 'Pretty Printing using pprint module'> )> pp.pprint(student)>

Výstup:

{'Teacher_id': 1, 'name': 'Suraj', 'Salary': 50000, 'attendance': 80, 'Branch': ['English', 'Geometry', 'Physics', 'World History'], 'email': '[email protected]'} Pretty Printing using pprint module ('{'Teacher_id': 1, 'name': ' ''Suraj', 'Salary': 50000, ' ''attendance': 80, ' ''Branch': ['English', ' ''Geometry', 'Physics', ' ''World History'], 'email': ' ''[email protected]'}') 

Pěkně tiskněte JSON z příkazového řádku

V tomto příkladu se snažíme tisknout data pomocí příkazového řádku. Pro ověření a vytištění objektů JSON z příkazového řádku nabízí Python balíček json.tool.

Python3




echo {> 'studentid'> :> 1> ,> 'name'> :> 'ABC'> ,> > 'subjects'> : [> 'Python'> ,> 'Data Structures'> ]} | python> -> m json.tool>

Výstup:

{ 'studentid': 1, 'name': 'ABC', 'subjects': [ 'Python', 'Data Structures' ] }