Om JSON
JSON (JavaScript Object Notation) er et filformat og datalagringsstandard, der bruger nøgleværdipar til at gemme og udveksle data. Det er det mest udbredte dataudvekslingsformat, der ofte ses i RESTful API'er, lette databaser, konfigurationsfiler og anden offline eller online software, der skal gemme, hente og udveksle data. De fleste programmeringssprog inkluderer biblioteker til at analysere og skrive JSON -data som standard, og JSON er et programmeringssprogs agnostisk dataformat. Værdier, der er gemt i en JSON -fil eller nyttelast, indeholder normalt strenge, tal og datatyper, der kan serialiseres, f.eks. Lister (arrays).
JSON og Python ordbøger
JSON -data i python konverteres til et ordbogsobjekt ved hjælp af indlæsningsmetode. Det ses ofte, at nogle mennesker sidestiller json -data og en pythonordbog, da syntaksen til at definere dem begge er næsten den samme. Imidlertid er json -data ikke andet end en tekststreng struktureret i en stiv syntaks, mens en pythonordbog er et datastrukturobjekt, der er gemt i hukommelsen. Hvis du vil gemme ordbogsdata i en tekstfil eller sende dem til et andet ikke-python-program, skal du først konvertere dem til en tekststreng (bytes). Denne dumpede / konverterede tekststreng er defineret i JSONs standardsyntaks, og processen med at konvertere en pythonordbog til en json -kompatibel streng kaldes serialisering.
Læsning og dumpning af JSON -data i Python
JSON -data kan hentes som et svar fra en server, læses fra fil, skåret fra URL -forespørgselsparametre og så videre. Denne artikel vil hovedsageligt fokusere på at læse json -data fra en lokalt gemt fil. Lad os antage, at en test.json -fil indeholder følgende data:
{'codename': 'Eoan Ermine', 'version': 'Ubuntu 19.10'}
For at læse test.json -filen i python kan du bruge koden herunder:
importerejson
med åben ('test.json') somf:
data=json.belastning(f)
dump=json.lossepladser(data)
Print (data)
Print (type(data))
Print (dump)
Print (type(dump))
Den første linje i ovenstående kode importerer json -modul. I den næste linje bruges med åben til sikkert at læse filindholdet. Inden for met open block bruges json.load -metoden til at læse og gemme filindhold i datavariablen. Data indlæst i det foregående trin konverteres tilbage til json -streng ved hjælp af metoden json.dump. Kørsel af koden ovenfor viser følgende output:
{'kodenavn':'Eoan Ermine', 'version':'Ubuntu 19.10'}<klasse 'dikter'>
{'kodenavn':'Eoan Ermine', 'version':'Ubuntu 19.10'}
<klasse 'str'>
Bemærk i output ovenfor, at json.load -metoden læser rå json -data til en pythonordbog, mens json.dumps -metoder konverterer en ordbog til en streng, der er kompatibel med JSON -struktur. Når et JSON-objekt er blevet konverteret til et pythonordbogsobjekt, kan du bruge indbyggede pythonordbogsmetoder til at håndtere dataene. Eksemplet ovenfor er temmelig grundlæggende og inkluderer ikke arrays i JSON -data eller indlejrede værdier. Men inden for python kan du håndtere disse værdier som alle andre indlejrede ordbøger og lister.
Sortering og smuk udskrivning af JSON -data
Json.dump -metoden understøtter nogle valgfrie parametre til sortering af nøgler og smuk udskrivning af output for forbedret læsbarhed.
importerejsonmed åben ('test.json') somf:
data=json.belastning(f)
dump=json.lossepladser(data,sort_nøgler=Sand,indrykning=4)
Print (dump)
Koden ovenfor viser følgende output:
{'codename': 'Eoan Ermine',
'version': 'Ubuntu 19.10'
}
Datatypekonverteringer
Listen nedenfor illustrerer, hvordan JSON -værdier konverteres til python -objekter og omvendt.
JSON | Python |
snor | s |
nummer | int eller float |
sandt falsk | Sandt falsk |
nul | Ingen |
array | liste |
objekt | dikt |
Json.tool kommandolinjemodul
Python indeholder et flot kommandolinjeværktøj json.tool, der kan bruges til at validere og smukt udskrive JSON -strenge og filer.
$ ekko'{' codename ':' Eoan Ermine ',' version ':' Ubuntu 19.10 '}'| python3 -m json.værktøjKørsel af kommandoen ovenfor viser dig følgende output:
{'codename': 'Eoan Ermine',
'version': 'Ubuntu 19.10'
}
Du kan også bruge json.tool med JSON -filer. Erstat in_file og out_file i kommandoen herunder med dine ønskede værdier:
$ python3 -m json.værktøjin_file out_fileUdover smuk udskrivning, sortering og validering af JSON -data gør json.tool ikke noget andet. Så hvis du vil manipulere eventuelle JSON-data, skal du skrive din egen brugerdefinerede kode ved hjælp af det indbyggede JSON-modul.