Com llegir i escriure fitxers JSON a Python

How Read Write Json Files Python



En aquest article s’explicarà com gestionar fitxers i dades JSON en llenguatge de programació Python. Python ve amb un mòdul json integrat que facilita la manipulació de dades JSON i és senzill.

Quant a JSON

JSON (JavaScript Object Notation) és un format d’arxiu i estàndard d’emmagatzematge de dades que utilitza parells clau-valor per emmagatzemar i intercanviar dades. És el format d’intercanvi de dades més utilitzat, que es veu sovint a les API RESTful, bases de dades lleugeres, fitxers de configuració i altres programes fora de línia o en línia que necessiten emmagatzemar, recuperar i intercanviar dades. La majoria de llenguatges de programació inclouen biblioteques per analitzar i escriure dades JSON per defecte i JSON és un format de dades agnòstiques de llenguatge de programació. Els valors emmagatzemats en un fitxer JSON o càrrega útil solen contenir cadenes, números i tipus de dades serialitzables, com ara llistes (matrius).







Diccionaris JSON i Python

Les dades JSON de Python es converteixen en un objecte de diccionari mitjançant el mètode de càrrega. Sovint es veu que algunes persones equiparen dades json i un diccionari python, ja que la sintaxi per definir-les ambdues és gairebé la mateixa. Tanmateix, les dades json no són altra cosa que una cadena de text estructurada en una sintaxi rígida mentre que un diccionari python és un objecte d’estructura de dades emmagatzemat a la memòria. Si voleu emmagatzemar les dades del diccionari en un fitxer de text o enviar-les a un altre programa que no sigui de Python, primer haureu de convertir-les en una cadena de text (bytes). Aquesta cadena de text convertida o bolcada es defineix a la sintaxi estàndard de JSON i el procés de conversió d’un diccionari python en una cadena compatible amb JSON s’anomena serialització.



Lectura i descàrrega de dades JSON a Python

Les dades JSON es poden recuperar com a resposta d'un servidor, llegir-les des d'un fitxer, dividir-les a partir de paràmetres de consulta d'URL, etc. Aquest article se centrarà principalment en la lectura de dades JSON d’un fitxer emmagatzemat localment. Suposem que un fitxer test.json conté les dades següents:



{'codename': 'Eoan Ermine', 'version': 'Ubuntu 19.10'}

Per llegir el fitxer test.json a Python, podeu utilitzar el codi següent:





importaciójson

amb obert ('test.json') comf:
dades=json.càrrega(f)

abocador=json.abocadors(dades)

imprimir (dades)
imprimir (tipus(dades))
imprimir (abocador)
imprimir (tipus(abocador))

La primera línia del codi anterior importa el mòdul json. A la següent línia, amb obert s’utilitza per llegir amb seguretat el contingut del fitxer. Dins del bloc amb obert, el mètode json.load s’utilitza per llegir i emmagatzemar el contingut del fitxer a la variable de dades. Les dades carregades al pas anterior es tornen a convertir en cadena json mitjançant el mètode json.dump. En executar el codi anterior es mostrarà la següent sortida:

{'nom en clau':'Eoan Ermine', 'versió':'Ubuntu 19.10'}
<classe 'dictar'>
{'nom en clau':'Eoan Ermine', 'versió':'Ubuntu 19.10'}
<classe 'str'>

Fixeu-vos a la sortida anterior que el mètode json.load llegeix dades json en brut en un diccionari python mentre que els mètodes json.dumps converteixen un diccionari en una cadena que és compatible amb l'estructura JSON. Un cop s'ha convertit un objecte JSON en un objecte de diccionari python, podeu utilitzar mètodes de diccionari Python integrats per gestionar les dades. L'exemple anterior és força bàsic i no inclou matrius a les dades JSON ni als valors imbricats. Tanmateix, dins de python, podeu gestionar aquests valors com qualsevol altre diccionari i llistat imbricats.



Ordenació i impressió de dades JSON

El mètode json.dump admet alguns paràmetres opcionals per ordenar les claus i imprimir bastant la sortida per millorar la llegibilitat.

importaciójson

amb obert ('test.json') comf:
dades=json.càrrega(f)

abocador=json.abocadors(dades,ordenar_ claus=És cert,sagnia=4)
imprimir (abocador)

El codi anterior mostrarà la sortida següent:

{
'codename': 'Eoan Ermine',
'version': 'Ubuntu 19.10'
}

Conversions de tipus de dades

La llista següent il·lustra com es converteixen els valors JSON en objectes python i viceversa.

JSON Python
corda pàg
número int o flotant
cert, fals Cert, fals
nul Cap
matriu llista
objecte dict

Mòdul de línia d’ordres Json.tool

Python inclou una bonica utilitat de línia d'ordres json.tool que es pot utilitzar per validar i imprimir bonament cadenes i fitxers JSON.

$ echo'{' codename ':' Eoan Ermine ',' version ':' Ubuntu 19.10 '}'| python3 -m json.eina

L'execució de l'ordre anterior us mostrarà la següent sortida:

{
'codename': 'Eoan Ermine',
'version': 'Ubuntu 19.10'
}

També podeu utilitzar json.tool amb fitxers JSON. Substituïu in_file i out_file a l'ordre següent pels valors desitjats:

$ python3 -m json.einain_file out_file

A part d’imprimir, ordenar i validar les dades JSON, json.tool no fa res més. Per tant, si voleu manipular qualsevol dada JSON, heu d’escriure el vostre propi codi personalitzat mitjançant el mòdul JSON integrat.