Lag et JSON -svar i Python

Lag et JSON -svar i Python

JSON (JavaScript Object Notation) -fil er et veldig populært medium for å utveksle data mellom forskjellige formater. Den inneholder data i tekstformat som støttes av forskjellige språk som Python, PHP, Perl, etc. Hovedformålet med JSON -filen er å overføre data mellom serveren og klienten. Forespørslene genereres av Python for å hente dataene fra en bestemt ressurs URI. Hvis responsen fra forespørselen returneres i JSON -format, kan innholdet i svaret hentes ved hjelp av responsen.json () funksjon. Den returnerer responsen ved å bruke et Python Dictionary -objekt. Hvordan denne funksjonen kan brukes til å analysere JSON -respons ved bruk av Python Request -biblioteket vil bli vist i denne opplæringen.

JSON -svar:

Forespørselsmodulen til Python inneholder JSON -dekoderen for å jobbe med JSON -dataene. Responsen.JSON () -funksjonen returnerer en JSON -svar hvis JSON -dekoderen fungerer ordentlig. Responsen.JSON () -funksjonen reiser unntaket hvis JSON -dekoderen mislykkes og JSON -responsen ikke inneholder noen data eller ugyldige data. Returverdien på responsen.heve_for_status () -funksjonen eller responsen.Status_code er påkrevd å bli sjekket før du utfører svaret.json () funksjon.

Ulike bruksområder for respons.json ():

Tre forskjellige bruksområder av responsen.JSON () -funksjonen vil bli vist i denne delen av opplæringen.

Eksempel 1: Enkel bruk av respons.JSON ()

Den enkle bruken av responsen.JSON () -funksjonen vil bli forklart i dette eksemplet. Responsen for GET -forespørselen fra URI, https: // API.github.com/ er lagret i en variabel navngitt respons. Deretter blir verdien av responsvariabelen sjekket. Hvis svarvariabelen inneholder noen ugyldig respons, vil den skrive ut en feilmelding. Hvis responsvariabelen inneholder en gyldig respons som er statusakoden til responsen og innholdet, vil en suksessmelding skrives ut.

# Importer forespørsler modul
Importer forespørsler
# Opprett en Få forespørsel
Svar = forespørsler.få ('https: // api.github.com/')
# Kontroller svaret
Hvis svar:
# Skriv ut svarskoden
Skriv ut ('Statuskoden for responsen er %d' %respons.status_kode)
# Skriv ut JSON -innholdet
Print ('JSON -innholdet er: \ n %s' %respons.json ())
# Skriv ut suksessmeldingen
utskrift ('\ nre forespørselen blir håndtert vellykket.')
ellers:
# Skriv ut feilmeldingen for ugyldig respons
trykk ('Ugyldig respons.')

Produksjon:

Følgende utgang vises etter å ha utført skriptet ovenfor.

Eksempel-2: Bruk av respons.JSON () med unntakshåndtering

Måten å bruke responsen.JSON () -funksjonen med unntakshåndtering vil bli vist i dette eksemplet. Httperror -modulen importeres med forespørselsmodulen i skriptet for å håndtere unntaket. Her vil URI -adressen bli hentet fra brukeren for å bruke forespørslene.få () funksjon. Responsen fra denne forespørselen vil bli lagret i responsvariabelen. Neste, svar.heve_for_status () -funksjonen brukes til å sjekke svaret på forespørselen om den er gyldig eller ugyldig. Hvis responsen er ugyldig, vil et unntak bli generert og koden til en hvilken som helst unntatt blokkering vil bli utført basert på unntaket. Hvis responsen er gyldig, vil innholdet i responsvariabelen bli iterert ved hjelp av en for loop for å skrive ut verdiene til ordboken i hver linje som inneholder svardataene.

# Importer forespørsler modul
Importer forespørsler
# Importer httperror for unntakshåndtering
fra forespørsler.Unntak importerer Httperror
# Definer URI
uri = input ('Skriv inn en gyldig uri: \ n')
# Skriv ut ventemelding
trykk ('Venter på responsen… \ n')
prøve:
# Opprett en Få forespørsel om å lese feedsinnhold i GitHub
Svar = forespørsler.Get (URI)
# Heve unntaket hvis responsen ikke lyktes
respons.heve_for_status ()
# Les JSON -innholdet
jsonResponse = respons.JSON ()
Print ("JSON -innholdet er: \ n")
# Les og skriv ut hvert nøkkelverdipar fra JSON-responsen
For nøkkel, verdi i JSONResponse.elementer ():
Print (Key, ":", Verdi)
# Skriv ut feilmelding for HTTP -feilen
unntatt httperror som http_err:
Print ('HTTP -feil oppstod: %S' %http_err)
# Skriv ut feilmelding for HTTP -feilen
Bortsett fra unntak som feil:
Print ('Annen feil oppstod: %s' %feil)

Produksjon:

Følgende utdata vises etter å ha utført skriptet når en URI-verdi ikke-eksistens vil bli gitt av brukeren. Her hadde Httperror -unntaket blitt generert ved siden av den tilsvarende feilmeldingen.


Følgende utdata vises etter å ha utført skriptet når en ugyldig URI -verdi vil bli gitt av brukeren. Her hadde det andre unntaket blitt generert med en tilsvarende feilmelding.

Følgende utdata vises etter å ha utført skriptet når en gyldig URI -verdi vil bli gitt av brukeren. Her er JSON -innholdet skrevet ut riktig.

Eksempel-3: Bruk av respons.json () med spørringsstreng

Måten å bruke responsen.JSON () -funksjon med spørringsstreng vil bli vist i dette eksemplet. Her, forespørslene.få () funksjon brukt en spørringsstrengverdi med URI ved hjelp av params. Det vil søke på oppføringene etter Perl -språket i de gitte depotene. Hvis svarvariabelen inneholder et gyldig svar, vil depotnavnet og beskrivelsen bli skrevet ut, ellers vil det være en feilmelding.

# Importer forespørsler modul
Importer forespørsler
# Søker i Githubs depot ved hjelp av spørringsstrengen
Svar = forespørsler.få(
'https: // api.github.com/search/depoter ',
params = 'q': 'Forespørsler+språk: perl',
)
# Kontroller svaret
Hvis svar:
# Les JSON -innholdet
json_response = svar.JSON ()
# Les det aktuelle depotelementet
depot = json_response ['elementer'] [0]
# Skriv ut depotnavnet
Print ('Repository Name: %s' %depot ["Navn"])
# Skriv ut depotbeskrivelsen
Print ('Repository Beskrivelse: %S' %depot ["Beskrivelse"])
ellers:
# Skriv ut feilmeldingen for ugyldig respons
trykk ('Ugyldig respons.')

Produksjon:

Følgende utgang vises etter å ha utført skriptet ovenfor. Repotnavnet og beskrivelsen for Perl -språket hadde blitt skrevet ut her.

Konklusjon:

Ulike måter å sende forespørselen til en bestemt URI og lese svaret ved å bruke svaret på.JSON () -funksjonen ble vist i denne opplæringen ved hjelp av enkle eksempler. Jeg håper denne opplæringen vil hjelpe leserne til å forstå bruken av JSON -respons i Python og bruke den ordentlig i manuset deres når det er påkrevd.