Denne opplæringen viser hvor enkelt det er å bruke Python programmeringsspråket til å jobbe med JSON data.
Før jeg begynner emnet, la oss kort definere hva vi mener med JSON. La oss se hvordan JSONs hovedwebside definerer det:
JSON (JavaScript Object Notation) er et lett data-utvekslingsformat. Det er lett for mennesker å lese og skrive. Det er enkelt for maskiner å analysere og generere. Det er basert på en delmengde av JavaScript-programmeringsspråket, Standard ECMA-262 3rd Edition - desember 1999. JSON er et tekstformat som er helt språkavhengig, men bruker konvensjoner som er kjent for programmerere av C-familien av språk, inkludert C , C + +, C #, Java, JavaScript, Perl, Python og mange andre. Disse egenskapene gjør JSON til et ideelt språk for data-utveksling.
Dermed er JSON en enkel måte å lage og lagre datastrukturer i JavaScript. Grunnen til at du ser JavaScript i akronym skyldes det faktum at et JavaScript-objekt blir opprettet når du lagrer data med JSON. Men ikke bekymre deg, du trenger ikke å vite JavaScript for å jobbe med JSON-filer, men det handler om selve JSON-syntaksen (formatet).
Kort sagt, JSON er en måte vi lagrer og utveksler data på, som er oppnådd gjennom sin syntaks, og brukes i mange webapplikasjoner. Det fine med JSON er at det har et menneskelig lesbart format, og dette kan være en av grunnene til at du bruker det i dataoverføring, i tillegg til effektiviteten når du arbeider med APIer.
Et eksempel på JSON-formatert data er som følger:
"navn": "Frank", "alder": 39, "isEmployed": true
I denne opplæringen vil jeg vise deg hvordan du bruker Python til å jobbe med JSON-filer. Så, la oss komme i gang!
Python gjør det enkelt å jobbe med JSON-filer. Modulen som brukes til dette formålet er json
modul. Denne modulen skal inkluderes (innebygd) i Python-installasjonen, og du trenger derfor ikke å installere noen eksterne moduler som vi gjorde da vi jobbet med PDF- og Excel-filer. Det eneste du trenger for å kunne bruke denne modulen er å importere det:
importer json
Men hva gjør json
bibliotek gjør? Dette biblioteket analyserer hovedsakelig JSON fra filer eller strenger. Det analyserer også JSON i en ordbok eller liste i Python og omvendt, som konverterer en Python-ordbok eller liste inn i JSON-strenger.
Reading JSON betyr at du konverterer JSON til en Python-verdi (objekt). Som nevnt ovenfor, json
biblioteket analyserer JSON i en ordbok eller liste i Python. For å gjøre det bruker vi laster()
funksjon (last fra en streng), som følger:
importer json jsonData = '"navn": "Frank", "alder": 39' jsonToPython = json.loads (jsonData)
Hvis du vil se produksjonen, gjør du en skriv ut jsonToPython
, I så fall får du følgende utgang:
u'age ': 39, navn': u'Frank '
Dvs., dataene returneres som en Python-ordbok (JSON objektdatastruktur). Så, vil uttalelsen skriv ut jsonToPython ['navn']
returnere noen utdata? Fortsett, prøv det.
I forrige avsnitt så vi hvordan du konverterer JSON til en Python-verdi (dvs. ordbok). I denne delen vil jeg vise deg hvordan vi kan konvertere (kode) en Python-verdi til JSON.
Si at vi har følgende ordbok i Python:
importer json pythonDictionary = 'navn': 'Bob', 'alder': 44, 'erEmployed': True dictionaryToJson = json.dumps (pythonDictionary)
Hvis vi print dictionaryToJson
, vi får følgende JSON data:
"alder": 44, "erEmployert": sant, "navn": "Bob"
Så denne utgangen betraktes som datarepresentasjon av objektet (ordbok). Metoden dumper()
var nøkkelen til en slik operasjon.
Det er viktig å merke seg at JSON ikke kan lagre alle typer Python objekter, men bare følgende typer: Lister; ordbøker, booleans; tall; Tegnstrenger; og ingen. Således må alle andre typer konverteres for å bli lagret i JSON.
La oss si at vi har følgende klasse:
klasse Ansatt (objekt): def __init __ (selv, navn): self.name = navn
La oss si at vi opprettet et nytt objekt abder
, som følger:
abder = Ansatt ('Abder')
Hva om vi ønsket å konvertere dette objektet til JSON? Det er json.dumps (abder)
? I dette tilfellet vil du få en feil som ligner på følgende:
Traceback (siste samtalen sist): File "test.py", linje 8, iabderJson = json.dumps (abder) File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", linje 243, i dumper returnerer _default_encoder.encode (obj) File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", linje 207, i kode koder = self.iterencode (o, _one_shot = True) File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py" , linje 270, i iterencode retur _iterencode (o, 0) File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py" , linje 184, i standard heve TypeError (repr (o) + "er ikke JSON serializable") TypeError: <__main__.Employee object at 0x10e74b750> er ikke JSON serializable
Men er det en løsning? Heldigvis er det. Jeg liker løsningen beskrevet på Python Tips nettsiden. For å løse dette problemet kan vi definere en metode som ligner på følgende:
def jsonDefault (objekt): returnere objekt .__ dict__
Kodes deretter objektet inn i JSON som følger:
jsonAbder = json.dumps (abder, default = jsonDefault)
Hvis du skriv ut jsonAbder
, du bør få følgende utgang:
"navn": "Abder"
Vi har nå kodet et Python-objekt (abder
) til JSON.
Fra denne opplæringen kan vi merke at Python igjen og igjen viser at det ikke bare er evnen til å jobbe med forskjellige applikasjoner, men også fleksibiliteten til å jobbe med forskjellige problemer mens du arbeider med et program, som vi så i den siste delen av opplæringen.
Hvis du vil vite mer om json
modul, kan du besøke dokumentasjonssiden.
Vi har bygget en komplett guide for å hjelpe deg med å lære JavaScript, enten du er bare i gang som webutvikler eller du vil utforske mer avanserte emner.
Lær Python med vår komplette pythonveiledning, enten du er bare i gang eller du er en erfaren coder som ønsker å lære nye ferdigheter..