JSON Python elemzése: Egyszerű útmutató

JSON Python elemzése: Egyszerű útmutató

A JSON („JavaScript Object Notation”) egy szövegalapú formátum, amely megkönnyíti az adatcserét a különböző alkalmazások között. Például egy alkalmazás C ++ nyelven írva Windows rendszeren futva könnyen kicserélheti a JSON adatokat egy pythonban írt és Linuxon futó alkalmazással. Egyszerűsége és rugalmassága az utóbbi években széles körű használathoz vezetett, különösen a korábbi XML-alapú formátumok helyett.





Könyvtárak és eszközkészletek állnak rendelkezésre a JSON elemzéséhez és létrehozásához szinte bármilyen nyelvről és környezetből. Ez a cikk a JSON python használatával történő feldolgozásával kapcsolatos módszerekre és problémákra összpontosít.





Néhány JSON -minta

A leggyakoribb JSON entitás, amellyel találkozni fog, egy tárgy : kulcsérték-leképezések halmaza az alábbi formátumban.





elérheti a raspberry pi fájlokat a Windowsból

person.json:

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

Így ábrázolhat objektumok tömbjét. Ebben az ábrázolásban a tömb minden eleme objektum. Az alábbi minta a baseball játékosok fizetését tartalmazza.



fizetések.json:

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

Természetesen a skalárok egy sorát is képviselheti. Ez így néz ki:





[
'hello',
'world',
35
]

A JSON elemzése Pythonban

A Python biztosítja json modul, amely egyaránt használható a JSON elemzésére, valamint a JSON létrehozására a python objektumokból és listákból.

A következő kódrészlet bemutatja, hogyan kell megnyitni egy JSON fájlt, és betölteni az adatokat egy változóba.





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

Ha rendelkezik egy karakterlánccal, amely tartalmazza a JSON adatokat, akkor a következőképpen konvertálhatja őket python objektummá (vagy listává):

hogyan lehet bekapcsolni a youtube értesítéseket
obj = json.loads('''{
'firstName': 'Alice',
'lastName': 'Hall',
'age': 35
}''')

A JSON URL elemzéséhez létrehozhat egy URL -objektumot a használatával urllib2 és használni json.load () mint azelőtt.

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

Kezelési hibák

Ha a JSON hibákat észlel, a ValueError . Tudja kezelni, és szükség esetén korrigálni.

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

A JSON elemzése a parancssorból

Néha hasznos lehet a JSON elemzése a python parancssor segítségével, esetleg a hibák keresése vagy szépen behúzott kimenet megszerzése érdekében.

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'}}

A fenti JSON fájl behúzott kimenetének megszerzéséhez tegye a következőket:

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'
}
}

És itt töltheti be a JSON objektumot a pythonba, és csak azt vonhatja ki, amire szüksége van.

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

Az adatok elérése

Miután betöltötte a JSON adatokat egy python változóba, hozzáférhet az adatokhoz, mint bármelyik python -diktátumhoz (vagy adott esetben listához). Például a fenti JSON adatok az alábbiak szerint érhetők el:

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

Adattípusok

Az adattípusok automatikusan kerülnek meghatározásra az adatokból. Vegye figyelembe, hogy kor egész számként értelmezi.

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

A következő konverziós táblázat a JSON -ból python -ba való konvertálásra szolgál.

A JSON elemzése egyéni osztály használatával

Alapértelmezés szerint a JSON objektum az pythonba elemezve diktálni . Néha előfordulhat, hogy a JSON -adatokból automatikusan létre kell hoznia egy saját osztályú objektumot. Ezt megteheti egy an object_hook függvény, amely a konverziót kezeli. A következő példa bemutatja, hogyan.

Itt van egy egyéni osztály, amely a Személy .

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)

Ennek az osztálynak egy példánya a szükséges argumentumok megadásával jön létre az alábbiak szerint:

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

Az osztály használatához példányok létrehozásához a JSON elemzésekor szüksége van egy object_hook függvény a következőképpen definiálva: A függvény python -ot kap diktálni és a helyes osztály objektumát adja vissza.

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

Ezt most használhatja object_hook funkció a JSON elemző meghívásakor.

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

Példák a JSON használatára

A JSON rendkívül népszerű manapság. Sok webhely és SaaS (Software As A Service) alkalmazás kínál JSON kimenetet, amelyet az alkalmazások közvetlenül fogyaszthatnak. A nyilvánosan elérhetők közül néhány:

  • StackOverflow/StackExchange. Itt egy URL amely JSON formátumú kérdéslistát ad vissza.
  • A GitHub JSON API -t kínál a https://developer.github.com/v3/ címen.
  • És itt van a Flickr API: https://developer.yahoo.com/flickr/.

Ha további példákat szeretne találni arra, hogyan használhatja jól, nézze meg ezt az útmutatót közösségi média bot készítése Python segítségével .

Hogyan készítsünk helyreállító lemezt a Windows 8 rendszerhez

JSON -t használ fogyasztásra vagy szolgáltatások nyújtására? És használsz python -t a technológiai veremben? Magyarázza meg az alábbi megjegyzésekben.

Részvény Részvény Csipog Email Érdemes Windows 11 -re frissíteni?

A Windows újra lett tervezve. De ez elég ahhoz, hogy meggyőzze Önt, hogy váltson a Windows 10 -ről a Windows 11 -re?

Olvassa tovább
Kapcsolódó témák
  • Programozás
  • Programozás
  • Piton
A szerzőről Jay Sridhar(17 cikk megjelent) Bővebben: Jay Sridhar

Iratkozzon fel hírlevelünkre

Csatlakozz hírlevelünkhöz, ahol technikai tippeket, értékeléseket, ingyenes e -könyveket és exkluzív ajánlatokat találsz!

Feliratkozáshoz kattintson ide