ЈСОН Питхон рашчлањивање: једноставан водич

ЈСОН Питхон рашчлањивање: једноставан водич

ЈСОН (кратица за 'ЈаваСцрипт Објецт Нотатион') је текстуални формат који олакшава размену података између различитих апликација. На пример, апликација написано на Ц ++ покренут на Виндовс -у може лако разменити ЈСОН податке са апликацијом написаном на питхону и покрећеном на Линуку. Његова једноставност и флексибилност довели су до широке употребе последњих година, посебно у односу на раније формате засноване на КСМЛ-у.





Доступне су библиотеке и комплети алата за рашчлањивање и генерисање ЈСОН -а из готово било ког језика и окружења. Овај чланак се концентрише на методе и питања која произилазе из обраде ЈСОН -а помоћу питхона.





Неки узорци ЈСОН -а

Најчешћи ЈСОН ентитет на који ћете наићи је објекат : скуп пресликавања кључ-вредност у доле приказаном формату.





зашто не могу да преместим све апликације на СД картицу

персон.јсон:

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

Ево како можете представити низ објеката. У овом представљању свака ставка низа је објекат. Следи узорак плата бејзбол играча.



плате.јсон:

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

Наравно, можете представљати и низ скалара. Изгледа овако:





[
'hello',
'world',
35
]

Рашчлањивање ЈСОН -а у Питхону

Питхон пружа јсон модул који се може користити за парсирање ЈСОН -а, као и за генерисање ЈСОН -а из питхон објеката и листа.

Следећи исечак кода показује како се отвара ЈСОН датотека и учитавају подаци у променљиву.





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

Када имате низ који садржи ЈСОН податке, можете га претворити у Питхон објект (или листу) са следећим:

тастерска пречица за успављивање рачунара
obj = json.loads('''{
'firstName': 'Alice',
'lastName': 'Hall',
'age': 35
}''')

Да бисте рашчланили ЈСОН УРЛ, можете да креирате УРЛ објекат помоћу урллиб2 и користити јсон.лоад () као пре.

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

Руковање грешкама

Када ЈСОН има грешке, добићете ВалуеЕррор . Можете се носити са тим и предузети корективне мере ако је потребно.

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

Рашчлањивање ЈСОН -а са командне линије

Понекад је корисно рашчланити ЈСОН помоћу командне линије питхон, можда ради провере грешака или добијања лепо увученог излаза.

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

Да бисте добили увучени излаз из горње ЈСОН датотеке, можете учинити следеће:

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

Ево како можете учитати ЈСОН објект у питхон и извући само оно што вам је потребно.

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

Приступање подацима

Након што учитате ЈСОН податке у променљиву питхон, можете приступити подацима као и сваком питхон дикту (или списку у зависности од случаја). На пример, горе наведеним ЈСОН подацима може се приступити на следећи начин:

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

Типови података

Типови података се аутоматски одређују из података. Напоменути да старост се рашчлањује као цео број.

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

Следећа табела конверзије се користи за конверзију из ЈСОН -а у питхон.

Рашчлањивање ЈСОН -а помоћу прилагођене класе

Подразумевано, ЈСОН објекат је рашчлањени у питон дицт . Понекад ћете можда морати да аутоматски креирате објекат своје класе из ЈСОН података. То можете учинити навођењем објецт_хоок функција која управља конверзијом. Следећи пример показује како.

Ево прилагођене класе која представља Особа .

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)

Инстанца ове класе се ствара преношењем потребних аргумената на следећи начин:

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

Да бисте користили ову класу за креирање инстанци приликом рашчлањивања ЈСОН -а, потребан вам је објецт_хоок функција дефинисана на следећи начин: Функција прима питон дицт и враћа објекат исправне класе.

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

Сада можете користити ово објецт_хоок функцију при позивању ЈСОН парсера.

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

Примери коришћења ЈСОН -а

ЈСОН је изузетно популаран у данашње време. Многе веб локације и апликације СааС (софтвер као услуга) нуде ЈСОН излаз који апликације могу директно да користе. Неки од јавно доступних укључују:

  • СтацкОверфлов/СтацкЕкцханге. Ево УРЛ -а који враћа листу питања у ЈСОН формату.
  • ГитХуб нуди ЈСОН апи на хттпс://девелопер.гитхуб.цом/в3/.
  • А ево и Флицкр АПИ -ја: хттпс://девелопер.иахоо.цом/флицкр/.

Ако тражите још примера како то добро искористити, погледајте овај водич за прављење бот друштвених медија помоћу Питхон -а .

начини да зарадите новац играјући видео игре

Да ли користите ЈСОН за конзумирање или пружање услуга? Да ли користите питхон у свом технолошком стеку? Објасните у коментарима испод.

Објави Објави Твеет Емаил Да ли је вредно надоградње на Виндовс 11?

Виндовс је редизајниран. Али да ли је то довољно да вас убеди да пређете са Виндовс 10 на Виндовс 11?

Прочитајте следеће
Повезане теме
  • Програмирање
  • Програмирање
  • Питхон
О аутору Јаи Сридхар(17 објављених чланака) Више од Јаиа Сридхара

Претплатите се на наш билтен

Придружите се нашем билтену за техничке савете, критике, бесплатне е -књиге и ексклузивне понуде!

Кликните овде да бисте се претплатили