Hvordan analysere JSON i Python

JSON er et populært format for datautveksling. Python leveres med en innebygd JSON-modul for å analysere og arbeide med JSON-data. Og denne opplæringen vil lære deg alt om å jobbe med JSON i Python.

På slutten av denne opplæringen har du lært:

  • det grunnleggende om JSON,
  • hvordan analysere og lage JSON-strenger i Python, og
  • hvordan du leser fra og skriver til JSON-filer i Python.

La oss starte!⏳

Hva er JSON?

JSON står for JavaScript Object Notation, og det er et tekstbasert format for datautveksling. Selv om JSON i utgangspunktet er inspirert av JavaScript-objekter, støtter nesten alle programmeringsspråk arbeid med JSON.

Hvis du noen gang har jobbet med APIer eller lest gjennom konfigurasjonsfiler – ville du sannsynligvis ha vært borti JSON.

📑 Du sender og mottar data i JSON når du spør etter APIer. Og JSON er også mye brukt i klient-server-kommunikasjon i programvareapplikasjoner. I tillegg kan du bruke JSON for generell datalagring også.

Formatet til JSON er veldig likt det til en Python-ordbok. Ordbøker er kraftige innebygde datastrukturer i Python som lagrer data i nøkkelverdi-par.

Før vi går videre, her er noen punkter som er verdt å merke seg:

  • I Python lagres et JSON-objekt som en ordbok.
  • En matrise i JSON lagres som en Python-liste.
  • I JSON er de boolske verdiene angitt som sanne og usanne. I Python blir disse konvertert til boolerne True og False.

For mer informasjon om datatypene som er oversatt fra JSON til Python, les dokumentene her.

Siden json-modulen er en del av Python-standardbiblioteket, trenger du ikke å installere den. Du kan importere til din nåværende katalog, slik:

import json

Hvordan laste inn en JSON-streng i Python

Den generelle syntaksen for å laste en JSON-streng i Python er:

<dict_obj> = json.loads(<json_str>)

Her,

  • er Python-ordboken som du vil laste inn JSON-strengen til,
  • er en hvilken som helst gyldig JSON-streng.

Dette laster inn i Python-ordboken .

La oss kode et eksempel. Her er json_str en JSON-streng.

json_str=""'
{
    "books": [
        {
            "title": "The Wind in the Willows",
            "author": "Kenneth Grahame",
            "year": "1908"
        },
        {
            "title": "To the Lighthouse",
            "author": "Virginia Woolf",
            "year": "1927"
        }
    ]
}
'''

Og kodebiten nedenfor viser hvordan du kan laste inn JSON-strengen json_str inn i en Python-ordbok ved å bruke loads()-metoden. Du kan bruke den innebygde type()-funksjonen for å bekrefte at py_dict er en Python-ordbok.

py_dict = json.loads(json_str)

type(py_dict)

# Output: dict

print(py_dict)

# Output
{'books': [{'title': 'The Wind in the Willows', 
'author': 'Kenneth Grahame', 'year': '1908'}, 
{'title': 'To the Lighthouse', 'author': 'Virginia Woolf', 'year': '1927'}]}

Som vist i koden ovenfor, er alle feltene i JSON-strengen nøkkelverdi-par i py_dict.

Hvordan lage JSON-strenger i Python

La oss anta at du har en Python-ordbok. Så hvordan lager du en JSON-streng fra den?

Du kan gjøre det ved å bruke dumps()-metoden med denne syntaksen:

<json_str> = json.dumps(<dict_obj>)

Her,

  • er Python-ordboken som du vil lage JSON-strengen fra,
  • er den resulterende JSON-strengen.

Så dumps()-metoden dumper inn i en JSON-streng .

Til vår eksisterende Python-ordbok py_dict. la oss legge til en ny nøkkel «filmer». Du kan gjøre det som vist i følgende kodebit:

py_dict["movies"] = [{"title":"The Imitation Game","year":"2014",
"lang":"en","watched":True}]

La oss nå dumpe den modifiserte ordboken til en ny JSON-streng json_str2 ved å bruke dumps()-metoden.

json_str2 = json.dumps(py_dict)

print(json_str2)

# Output
{"books": [{"title": "The Wind in the Willows", "author": "Kenneth Grahame", "year": "1908"}, 
{"title": "To the Lighthouse", "author": "Virginia Woolf", "year": "1927"}], 
"movies": [{"title": "The Imitation Game", "year": "2014", "lang": "en", "watched": true}]}

Som du kan se i eksemplet ovenfor, er utdata-JSON-strengen vanskelig å lese gjennom uten riktig formatering. Du kan bruke det valgfrie parameterinnrykk for å legge til innrykk.

Og du kan gjøre dette ved å sette innrykk til et heltall som 2, som vist nedenfor:

json_str2 = json.dumps(py_dict, indent = 2)
print(json_str2)

# Output
{
  "books": [
    {
      "title": "The Wind in the Willows",
      "author": "Kenneth Grahame",
      "year": "1908"
    },
    {
      "title": "To the Lighthouse",
      "author": "Virginia Woolf",
      "year": "1927"
    }
  ],
  "movies": [
    {
      "title": "The Imitation Game",
      "year": "2014",
      "lang": "en",
      "watched": true
    }
  ]
}

Se hvordan utdataene har blitt formatert med innrykk, og det er enkelt å følge gjennom.

Merk: 💡 Hvis du vil at nøklene skal sorteres i alfabetisk rekkefølge, kan du sette parameteren sort_keys til True.

Som du kan se i kodebiten nedenfor, er nøklene nå sortert i alfabetisk rekkefølge.

json_str2 = json.dumps(py_dict, indent = 2, sort_keys=True)
print(json_str2)

# Output
{
  "books": [
    {
      "author": "Kenneth Grahame",
      "title": "The Wind in the Willows",
      "year": "1908"
    },
    {
      "author": "Virginia Woolf",
      "title": "To the Lighthouse",
      "year": "1927"
    }
  ],
  "movies": [
    {
      "lang": "en",
      "title": "The Imitation Game",
      "watched": true,
      "year": "2014"
    }
  ]

Og nøklene vises nå i alfabetisk rekkefølge: «forfatter», «tittel» og «år».

Så langt har du lært hvordan du jobber med JSON-strenger i Python. I neste avsnitt lærer du hvordan du arbeider med JSON-filer.

Hvordan lese en JSON-fil i Python

For å lese en JSON-fil i Python, bruk følgende syntaks:

json.load(<json-file>) 

# where <json-file> is any valid JSON file.

Legg merke til hvordan vi bruker load()-metoden og ikke loads()-metoden. loads() laster en JSON-streng, mens load() laster en JSON-fil.

Du bør vurdere å bruke kontekstbehandling når du arbeider med filer i Python. Du kan også prøve å lese filer som følger, uten å bruke kontekstbehandling:

my_file = open('students.json','r')

contents = my_file.read()

print(contents)

file.close()

Hvis du ikke lukker filen, kan det oppstå et potensielt sløsing med ressurser.

Men når du arbeider med kontekstbehandlere, lukkes filene automatisk når filoperasjonene er fullført.

Og du kan bruke kontekstbehandling til å lese filer, som vist nedenfor:

with open('students.json','r') as file:   
   data = json.load(file) 
   print(data) 

# Output 

{'students': [{'roll_num': 'cs27', 'name': 'Anna', 'course': 'CS'}, 
{'roll_num': 'ep30', 'name': 'Kate', 'course': 'PHY'}]}

Mens du leser fra en fil, spesifiser modusen som lest—indikert med «r» i koden ovenfor.

Merk: For å enkelt navigere gjennom gjeldende katalog, sørg for at JSON-filen er i samme mappe som main.py, som vist i bildet nedenfor. Hvis JSON-filen din er i en annen mappe, må du spesifisere banen til filen.

Les JSON-filen i Python.

I neste avsnitt lærer du hvordan du skriver til en JSON-fil.✍

Hvordan skrive til en JSON-fil i Python

For å skrive til en eksisterende JSON-fil eller opprette en ny JSON-fil, bruk dump()-metoden som vist:

json.dump(<dict_obj>,<json_file>)

# where <dict_obj> is a Python dictionary 

# and <json_file> is the JSON file 

Så syntaksen ovenfor dumper ordboken inn i JSON-filen .

I forrige seksjon hadde vi ordboken py_dict. La oss nå dumpe det inn i en ny JSON-fil. Og la oss gi den navnet new_file.json.

Og følgende kodecelle viser hvordan du kan bruke dump()-funksjonen:

with open('new_file.json','w') as file:
  json.dump(py_dict,file)

Merk: Åpning av en fil i skrivemodus (w) overskriver innholdet hvis filen eksisterer. Hvis filen ikke eksisterer, opprettes filen.

Etter å ha utført kodecellen ovenfor, vil du se at en ny JSON-fil er opprettet i gjeldende arbeidskatalog. Og du kan gå videre og undersøke innholdet i JSON-filen.

Opprett JSON-fil i Python

Når du skriver til filer, er hovedmålet datalagring. Og hvis du vil beholde formateringen, kan du også bruke parameterne innrykk og sort_keys.

Konklusjon

⏲ ​​Det er på tide med en rask oppsummering.

I denne opplæringen har du lært:

  • det grunnleggende om bruk av JSON,
  • hvordan du bruker metodene loads() og load() for å lese henholdsvis JSON-streng og JSON-filer,
  • hvordan du bruker metodene dumps() og dump() for å dumpe Python-ordbøker inn i henholdsvis JSON-strenger og JSON-filer.

Jeg håper du fant denne opplæringen nyttig. God læring!

Du kan også se på JSON-verktøy for å analysere, formatere og validere.

  10 beste digitale opplevelsesplattformer (DXP) i 2022