logo

Python - Pretty Print JSON

JSON significa J ava S cripta O objecte N otació. És un format per estructurar dades. Aquest format és utilitzat per diferents aplicacions web per comunicar-se entre elles. En aquest article, aprendrem sobre JSON pretty print

Què és JSON?

JSON (JavaScript Object Notation) és un format de dades basat en text que és intercanviable amb molts llenguatges de programació. S'utilitza habitualment per a la transmissió de dades entre aplicacions client-servidor. Normalment, es transmeten versions reduïdes del text JSON per estalviar ample de banda. Tanmateix, per a la depuració i l'anàlisi, cal una versió embellida o un JSON d'impressió bonic. Bàsicament, un JSON d'impressió bonic significa tenir un sagnat, espais en blanc i separadors adequats.

Exemple:



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

json.dumps() a Python

Primer, utilitzeu el mètode json.loads() per convertir la cadena JSON a Python objecte. Per convertir aquest objecte en una cadena JSON d'impressió bonica, s'utilitza el mètode json.dumps(). A continuació es mostren exemples i passos per entendre millor aquests casos.

Sintaxi: json.dumps (obj, sagnat, separador)

Paràmetre:

material angular
  • obj: Serialitza obj com a flux amb format JSON
  • sagnat: Si el sagnat és un nombre enter o una cadena no negatius, els elements de la matriu JSON i els membres de l'objecte s'imprimiran bastant amb aquest nivell de sagnat. Un nivell de sagnat de 0, negatiu, o només inserirà noves línies.
  • separadors: Si s'especifica, els separadors haurien de ser una tupla (separador_element, separador_clau).

Pretty Print JSON String

Aquest mètode té el paràmetre sagnat per especificar el nombre d'espais i un paràmetre separador per especificar el separador entre clau i valor. De manera predeterminada, el separador és una coma entre parells clau-valor i dos punts entre clau i valor. Si el paràmetre de sagnat de json.dumps() és negatiu, 0 o una cadena buida, no hi ha sagnats i només s'insereixen noves línies. Per defecte, el sagnat és Cap i les dades es representen en una única línia.

El codi pren una cadena JSON que conté registres d'estudiants, l'analitza en una estructura de dades de Python i, a continuació, imprimeix les dades JSON amb la sagnia adequada per millorar la llegibilitat.

Python 3




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

>

>

Sortida:

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

Dades JSON molt impreses en un fitxer amb sagnat=0 .

El codi pren una cadena JSON que conté registres d'estudiants, l'analitza en una estructura de dades de Python i després imprimeix les dades JSON amb un sagnat zero, fent-les compactes i menys llegibles.

Python 3




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

>

granandhra

>

Sortida:

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

Escriu dades JSON de Pretty Print al fitxer

Per escriure un objecte Python com a dades de format JSON Pretty Print en un fitxer, s'utilitza el mètode json.dump(). Igual que el mètode json.dumps(), té els sagnats i els paràmetres de separació per escriure JSON embellit.

Python 3




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

>

>

Sortida:

filename.json

Llegint dades JSON i imprimiu-les

Per llegir JSON des d'un fitxer o URL, utilitzeu json.load(). A continuació, utilitzeu json.dumps() per convertir l'objecte (obtingut de la lectura del fitxer) en una cadena JSON d'impressió bonica.

Python 3




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

>

en ordre
>

Sortida:

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

Utilitzant mòdul pprint per imprimir JSON molt bé per imprimir el nostre format JSON

Aquest codi llegeix dades JSON d'un fitxer anomenat test.json, les analitza en una estructura de dades de Python i, a continuació, les imprimeix utilitzant tant el sistema integrat.print>funció i lapprint>mòdul. Elpprint>El mòdul s'utilitza per imprimir molt bé les dades JSON amb opcions de format específiques, com ara un sagnat de 2, una amplada de línia de 30 caràcters i una representació compacta.

Python 3




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

>

>

Sortida:

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

Imprimeix força JSON des de la línia d'ordres

En aquest exemple, estem intentant imprimir dades mitjançant la línia d'ordres. Per validar i imprimir bé objectes JSON des de la línia d'ordres, Python ofereix el paquet json.tool.

Python 3




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

>

arquitectura de Linux

>

Sortida:

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