JSON Python Parsing: Isang Simpleng Gabay

JSON Python Parsing: Isang Simpleng Gabay

Ang JSON (kumakatawan sa 'JavaScript Object Notation') ay isang format na batay sa teksto na nagpapadali sa pagpapalitan ng data sa pagitan ng magkakaibang mga application. Halimbawa, isang application nakasulat sa C ++ ang pagpapatakbo sa Windows ay madaling makipagpalitan ng data ng JSON sa isang application na nakasulat sa sawa at tumatakbo sa Linux. Ang pagiging simple at kakayahang umangkop nito ay humantong sa malawakang paggamit sa mga nagdaang taon, lalo na sa kagustuhan sa mga naunang format na batay sa XML.





Mayroong mga library at toolkit na magagamit para sa pag-parse at pagbuo ng JSON mula sa halos anumang wika at kapaligiran. Ang artikulong ito ay nakatuon sa mga pamamaraan at isyu na nagmumula sa pagproseso ng JSON gamit ang sawa.





Ilang Sample ng JSON

Ang pinakakaraniwang entidad ng JSON na makakaharap mo ay isang bagay : isang hanay ng mga key-value mapping sa format na ipinakita sa ibaba.





kung paano baguhin ang ningning sa monitor

tao.json:

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

Narito kung paano ka maaaring kumatawan sa isang hanay ng mga bagay. Sa representasyong ito, ang bawat item ng array ay isang object. Ang sumusunod ay isang sample ng suweldo ng mga manlalaro ng baseball.



sweldo.json:

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

Siyempre, maaari mo ring kinatawan ang isang hanay ng mga scalar din. Parang ganito:





[
'hello',
'world',
35
]

Parsing JSON sa Python

Ang Python ay nagbibigay ng json module na maaaring magamit sa parehong parse JSON, pati na rin makabuo ng JSON mula sa mga bagay sa python at listahan.

Ipinapakita ng sumusunod na code na snippet kung paano buksan ang isang JSON file at mai-load ang data sa isang variable.





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

Kapag mayroon kang isang string na naglalaman ng data ng JSON, maaari mo itong i-convert sa isang bagay na sawa (o listahan) na may mga sumusunod:

bakit ang printer offline windows 10
obj = json.loads('''{
'firstName': 'Alice',
'lastName': 'Hall',
'age': 35
}''')

Upang mai-parse ang isang JSON URL, maaari kang lumikha ng isang object ng URL gamit ang urllib2 at gamit json.load () tulad ng dati.

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

Mga Error sa Paghawak

Kapag ang JSON ay may mga error, makakakuha ka ng a ValueError . Maaari mong hawakan ito at gumawa ng pagkilos na pagwawasto kung kinakailangan.

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

Parsing JSON Mula sa Command Line

Minsan, kapaki-pakinabang na i-parse ang JSON gamit ang linya ng utos ng python, marahil upang suriin ang mga error o upang makakuha ng mahusay na naka-indent na output.

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

Upang makakuha ng naka-indent na output mula sa nasa itaas na file ng JSON, magagawa mo ang sumusunod:

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

At narito kung paano mo mai-load ang object ng JSON sa sawa at makuha lamang ang kailangan mo.

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

Pag-access sa Data

Kapag na-load mo na ang data ng JSON sa isang variable na sawa, maaari mong ma-access ang data tulad ng gagawin mo sa anumang dikta ng sawa (o ilista kung maaaring mangyari). Halimbawa, ang data sa JSON sa itaas ay maaaring ma-access tulad ng sumusunod:

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

Uri ng data

Ang mga uri ng data ay awtomatikong natutukoy mula sa data. Tandaan na edad ay na-parse bilang isang integer.

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

Ang sumusunod na talahanayan ng conversion ay ginagamit upang mai-convert mula sa JSON patungong sawa.

Parsing JSON Gamit ang isang Pasadyang Klase

Bilang default, ang isang object na JSON ay parsed sa isang sawa dikta . Minsan maaaring kailanganin mong awtomatikong lumikha ng isang bagay ng iyong sariling klase mula sa data ng JSON. Maaari mong gawin iyon sa pamamagitan ng pagtukoy ng isang object_hook pagpapaandar na humahawak sa conversion. Ipinapakita ng sumusunod na halimbawa kung paano.

Narito ang isang pasadyang klase na kumakatawan sa a Tao .

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)

Ang isang halimbawa ng klase na ito ay nilikha sa pamamagitan ng pagpasa ng mga kinakailangang argumento tulad ng sumusunod:

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

Upang magamit ang klase na ito upang lumikha ng mga pagkakataon kapag ini-parse ang JSON, kailangan mo ng object_hook tinukoy ang pagpapaandar tulad ng sumusunod: Ang pag-andar ay tumatanggap ng isang sawa dikta at nagbabalik ng isang bagay ng tamang klase.

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

Maaari mo na itong gamitin object_hook pag-andar kapag tinatawagan ang JSON parser.

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

Mga halimbawa ng Paggamit ng JSON

Ang JSON ay napakapopular sa kasalukuyan. Maraming mga website at application ng SaaS (Software Bilang Isang Serbisyo) ay nag-aalok ng output ng JSON na maaaring matupok nang direkta ng mga application. Ang ilan sa mga magagamit ng publiko ay kasama ang:

  • StackOverflow / StackExchange. Narito ang isang URL na nagbabalik ng isang listahan ng mga katanungan sa format na JSON.
  • Nag-aalok ang GitHub ng isang JSON api sa https://developer.github.com/v3/.
  • At narito ang Flickr API: https://developer.yahoo.com/flickr/.

Kung naghahanap ka ng higit pang mga halimbawa sa kung paano ito magagamit nang mahusay, tingnan ang gabay na ito pagbuo ng isang bot ng social media gamit ang Python .

saan nagtitipid ang netflix ng mga nai-download na pelikula

Gumagamit ka ba ng JSON upang ubusin o magbigay ng mga serbisyo? At gumagamit ka ba ng python sa iyong stack ng teknolohiya? Ipaliwanag sa mga komento sa ibaba.

Magbahagi Magbahagi Mag-tweet Email Ito ba ay Worth Upgrading sa Windows 11?

Ang Windows ay muling idisenyo. Ngunit sapat na ba iyon upang kumbinsihin kang lumipat mula sa Windows 10 patungong Windows 11?

Basahin Susunod
Mga Kaugnay na Paksa
  • Programming
  • Programming
  • Sawa
Tungkol sa May-akda Jay Sridhar(17 Mga Artikulo Na-publish) Higit pa Mula kay Jay Sridhar

Mag-subscribe sa aming newsletter

Sumali sa aming newsletter para sa mga tip sa tech, pagsusuri, libreng ebook, at eksklusibong deal!

Mag-click dito upang mag-subscribe