Python – Mooie afdruk JSON

JSON betekent J ava S crypt O bject N notatie. Het is een formaat voor het structureren van gegevens. Dit formaat wordt door verschillende webapplicaties gebruikt om met elkaar te communiceren. In dit artikel zullen we leren over JSON Pretty Print

Wat is JSON?

JSON (JavaScript Object Notation) is een op tekst gebaseerd gegevensformaat dat uitwisselbaar is met veel programmeertalen. Het wordt vaak gebruikt voor gegevensoverdracht tussen client-servertoepassingen. Meestal worden verkleinde versies van JSON-tekst verzonden om bandbreedte te besparen. Voor foutopsporing en analyse is echter een verfraaide versie of een mooie print-JSON vereist. In wezen betekent mooie print-JSON dat u de juiste inspringing, witruimte en scheidingstekens heeft.

Voorbeeld:

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

json.dumps() in Python

Gebruik eerst de methode json.loads() om JSON String naar te converteren Python voorwerp. Om dit object naar een mooie JSON-string te converteren, wordt de methode json.dumps() gebruikt. Hieronder vindt u voorbeelden en stappen om deze gevallen beter te begrijpen.

Syntaxis: json.dumps(obj, streepje, scheidingsteken)

Parameter:

  • obj: Serialiseer obj als een JSON-geformatteerde stream
  • inspringen: Als inspringen een niet-negatief geheel getal of een tekenreeks is, worden JSON-array-elementen en objectleden mooi afgedrukt met dat inspringingsniveau. Een inspringniveau van 0, negatief of zal alleen nieuwe regels invoegen.
  • scheidingstekens: Indien opgegeven, moeten scheidingstekens een (item_separator, key_separator) tupel zijn.

Mooie afdruk JSON-tekenreeks

Deze methode heeft de parameter indent om het aantal spaties op te geven en een separatorparameter om het scheidingsteken tussen sleutel en waarde op te geven. Het scheidingsteken is standaard een komma tussen sleutel-waardeparen en een dubbele punt tussen sleutel en waarde. Als de parameter indent van json.dumps() negatief, 0 of een lege tekenreeks is, zijn er geen inspringingen en worden er alleen nieuwe regels ingevoegd. Standaard is de inspringing Geen en worden de gegevens op één regel weergegeven.

De code neemt een JSON-tekenreeks met leerlingrecords, parseert deze in een Python-gegevensstructuur en drukt vervolgens de JSON-gegevens mooi af met de juiste inspringing voor een betere leesbaarheid.

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)>

Uitgang:

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

Pretty-Printed JSON-gegevens in een bestand met streepje=0 .

De code neemt een JSON-tekenreeks met leerlingrecords, parseert deze in een Python-gegevensstructuur en drukt vervolgens de JSON-gegevens mooi af zonder inspringing, waardoor deze compact en minder leesbaar worden.

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)>

Uitgang:

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

Schrijf Pretty Print JSON-gegevens naar een bestand

Om een ​​Python-object als JSON Pretty Print-formaatgegevens naar een bestand te schrijven, wordt de methode json.dump() gebruikt. Net als de methode json.dumps() heeft deze de parameters voor inspringingen en scheidingstekens om verfraaide JSON te schrijven.

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> )>

Uitgang:

bestandsnaam.json

JSON-gegevens lezen en deze mooi afdrukken

Gebruik json.load() om JSON uit een bestand of URL te lezen. Gebruik vervolgens json.dumps() om het object (verkregen door het lezen van het bestand) te converteren naar een mooie JSON-tekenreeks.

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)>

Uitgang:

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

Gebruik makend van pprint-module naar Pretty-print JSON om ons JSON-formaat af te drukken

Deze code leest JSON-gegevens uit een bestand met de naam test.json, parseert deze in een Python-gegevensstructuur en drukt deze vervolgens af met behulp van zowel de ingebouwde print> functie en de pprint> module. De pprint> module wordt gebruikt om de JSON-gegevens mooi af te drukken met specifieke opmaakopties zoals een inspringing van 2, een lijnbreedte van 30 tekens en een compacte weergave.

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)>

Uitgang:

{'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]'}') 

Pretty-print JSON vanaf de opdrachtregel

In dit voorbeeld proberen we gegevens af te drukken via de opdrachtregel. Om JSON-objecten vanaf de opdrachtregel te valideren en mooi af te drukken, biedt Python het json.tool-pakket.

Python3




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

Uitgang:

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