JSON Python jäsentäminen: yksinkertainen opas

JSON Python jäsentäminen: yksinkertainen opas

JSON (lyhenne sanoista 'JavaScript Object Notation') on tekstipohjainen muoto, joka helpottaa tietojen vaihtoa eri sovellusten välillä. Esimerkiksi sovellus kirjoitettu C ++: lla Windows -käyttöjärjestelmä voi helposti vaihtaa JSON -tietoja pythonilla kirjoitettuun ja Linuxia käyttävään sovellukseen. Sen yksinkertaisuus ja joustavuus ovat johtaneet laajaan käyttöön viime vuosina, etenkin aiempien XML-pohjaisten muotojen sijaan.





Saatavilla on kirjastoja ja työkalupakkeja JSON -tiedoston jäsentämiseen ja luomiseen lähes mistä tahansa kielestä ja ympäristöstä. Tämä artikkeli keskittyy menetelmiin ja ongelmiin, jotka johtuvat JSON: n käsittelystä pythonilla.





Jotkut JSON -näytteet

Yleisin kohtaamasi JSON -entiteetti on esine : joukko avainarvojen kuvauksia alla esitetyssä muodossa.





miksi levyn käyttö on niin korkea Windows 10

person.json:

{
'firstName': 'Alice',
'lastName': 'Hall',
'age': 35
}

Näin voit esittää joukon objekteja. Tässä esityksessä taulukon jokainen kohde on objekti. Seuraavassa on esimerkki baseball -pelaajien palkoista.



palkat.json:

[ {
'year' : 1985,
'teamId' : 'ATL',
'leagueId' : 'NL',
'playerId' : 'barkele01',
'salary' : 870000
}, {
'year' : 1985,
'teamId' : 'ATL',
'leagueId' : 'NL',
'playerId' : 'bedrost01',
'salary' : 550000
} ]

Voit tietysti edustaa myös skalaareja. Se näyttää tältä:





[
'hello',
'world',
35
]

JSON -jäsennys Pythonissa

Python tarjoaa json moduuli, jota voidaan käyttää sekä jäsentämään JSON että luomaan JSON python -objekteista ja -luetteloista.

Seuraava koodinpätkä näyttää kuinka avataan JSON -tiedosto ja ladataan tiedot muuttujaan.





import json
with open('sample.json', 'r') as fp:
obj = json.load(fp)

Kun sinulla on JSON -tietoja sisältävä merkkijono, voit muuntaa sen python -objektiksi (tai -luetteloksi) seuraavasti:

kuinka sallia salaman toimiminen kromilla
obj = json.loads('''{
'firstName': 'Alice',
'lastName': 'Hall',
'age': 35
}''')

Voit jäsentää JSON -URL -osoitteen luomalla URL -objektin urllib2 ja käyttää json.load () kuten ennen.

import urllib2, json
url = urllib2.urlopen('http://site.com/sample.json')
obj = json.load(url)

Käsittelyvirheet

Kun JSONissa on virheitä, näyttöön tulee ValueError . Voit käsitellä sitä ja ryhtyä korjaaviin toimenpiteisiin tarvittaessa.

try:
obj = json.loads('''{
'firstName': 'Alice',
'lastName: 'Hall',
'age': 35
}''')
except ValueError:
print('error loading JSON')

JSON -jäsennys komentoriviltä

Joskus on hyödyllistä jäsentää JSON python -komentorivillä, ehkä tarkistaa virheet tai saada kauniisti sisennetty tulostus.

cat glossary.json
# prints
{'glossary': {'GlossDiv': {'GlossList': {'GlossEntry': {'GlossDef': {'GlossSeeAlso': ['GML', 'XML'], 'para': 'A meta-markup language, used to create markup languages such as DocBook.'}, 'GlossSee': 'markup', 'Acronym': 'SGML', 'GlossTerm': 'Standard Generalized Markup Language', 'Abbrev': 'ISO 8879:1986', 'SortAs': 'SGML', 'ID': 'SGML'}}, 'title': 'S'}, 'title': 'example glossary'}}

Voit saada sisennetyn tuloksen yllä olevasta JSON -tiedostosta seuraavasti:

python -mjson.tool glossary.json
# prints
{
'glossary': {
'GlossDiv': {
'GlossList': {
'GlossEntry': {
'Abbrev': 'ISO 8879:1986',
'Acronym': 'SGML',
'GlossDef': {
'GlossSeeAlso': [
'GML',
'XML'
],
'para': 'A meta-markup language, used to create markup languages such as DocBook.'
},
'GlossSee': 'markup',
'GlossTerm': 'Standard Generalized Markup Language',
'ID': 'SGML',
'SortAs': 'SGML'
}
},
'title': 'S'
},
'title': 'example glossary'
}
}

Ja tässä voit ladata JSON -objektin pythoniin ja purkaa vain tarvitsemasi.

python -c 'import json; fp = open('glossary.json', 'r'); obj = json.load(fp); fp.close(); print(obj['glossary']['title']')
# prints
example glossary

Tietojen käyttö

Kun olet ladannut JSON -tiedot python -muuttujaan, voit käyttää tietoja samalla tavalla kuin mitä tahansa python -sanelua (tai tapauskohtaista luetteloa). Esimerkiksi yllä oleviin JSON -tietoihin pääsee käsiksi seuraavasti:

firstName = obj['firstName']
lastName = obj['Hall']
age = obj['age']

Tietotyypit

Tietotyypit määritetään automaattisesti tiedoista. Ota huomioon, että ikä jäsennetään kokonaislukuna.

print(type(obj['firstName']), type(obj['lastName']), type(obj['age']))
# prints

Seuraavaa muuntotaulukkoa käytetään muuntamiseen JSONista pythoniksi.

JSON -jäsennys mukautetun luokan avulla

Oletuksena JSON -objekti on jäsennetty pythoniksi sanella . Joskus saatat joutua luomaan automaattisesti oman luokkasi objektin JSON -tiedoista. Voit tehdä sen määrittämällä objekti_koukku toiminto, joka käsittelee muunnoksen. Seuraava esimerkki näyttää kuinka.

Tässä on mukautettu luokka, joka edustaa a Henkilö .

class Person:
def __init__(self, firstName, lastName, age):
self.firstName = firstName
self.lastName = lastName
self.age = age
def __str__(self):
return '{{'firstName' = '{0}','lastName' = '{1}', 'age' = {2}}}'.format(self.firstName, self.lastName, self.age)

Tämän luokan ilmentymä luodaan antamalla vaaditut argumentit seuraavasti:

person = Person('Crystal', 'Newell', 27)

Jotta voit käyttää tätä luokkaa luomaan ilmentymiä JSON -jäsennyksen yhteydessä, tarvitset objekti_koukku funktio määritellään seuraavasti: Toiminto vastaanottaa pythonin sanella ja palauttaa oikean luokan objektin.

def obj_creator(d):
return Person(d['firstName'], d['lastName'], d['age'])

Voit nyt käyttää tätä objekti_koukku -toimintoa kutsuttaessa JSON -jäsennintä.

with open('sample.json', 'r') as fp:
obj = json.load(fp, object_hook = obj_creator)
print(obj)
# prints
{'firstName' = 'Alice','lastName' = 'Hall', 'age' = 35}

Esimerkkejä JSON -käytöstä

JSON on erittäin suosittu nykyään. Monet sivustot ja SaaS (Software As A Service) -sovellukset tarjoavat JSON -lähtöä, jonka sovellukset voivat kuluttaa suoraan. Jotkut julkisesti saatavilla olevista ovat:

  • StackOverflow/StackExchange. Tässä on URL -osoite joka palauttaa luettelon kysymyksistä JSON -muodossa.
  • GitHub tarjoaa JSON -apin osoitteessa https://developer.github.com/v3/.
  • Ja tässä on Flickr -sovellusliittymä: https://developer.yahoo.com/flickr/.

Jos etsit lisää esimerkkejä sen hyödyntämisestä, tutustu tähän oppaaseen sosiaalisen median botin rakentaminen Pythonin avulla .

kuinka asentaa Windows 10 flash -asemaan

Käytätkö JSONia palveluiden kulutukseen tai tarjoamiseen? Ja käytätkö pythonia tekniikkapinossasi? Selitä alla olevissa kommenteissa.

Jaa Jaa Tweet Sähköposti Kannattaako päivittää Windows 11: een?

Windows on suunniteltu uudelleen. Mutta riittääkö se vakuuttamaan sinut siirtymään Windows 10: stä Windows 11: een?

Lue seuraava
Liittyvät aiheet
  • Ohjelmointi
  • Ohjelmointi
  • Python
Kirjailijasta Jay Sridhar(17 artikkelia julkaistu) Lisää Jay Sridharilta

tilaa uutiskirjeemme

Liity uutiskirjeeseemme saadaksesi teknisiä vinkkejä, arvosteluja, ilmaisia ​​e -kirjoja ja ainutlaatuisia tarjouksia!

Klikkaa tästä tilataksesi