JSON Python Ayrıştırma: Basit Bir Kılavuz

JSON Python Ayrıştırma: Basit Bir Kılavuz

JSON ('JavaScript Object Notation' anlamına gelir), çeşitli uygulamalar arasında veri alışverişini kolaylaştıran metin tabanlı bir formattır. Örneğin, bir uygulama C++ ile yazılmış Windows üzerinde çalışan, python ile yazılmış ve Linux üzerinde çalışan bir uygulama ile JSON verilerini kolayca değiş tokuş edebilir. Sadeliği ve esnekliği, özellikle önceki XML tabanlı formatların tercih edilmesinde, son yıllarda yaygın bir kullanıma yol açmıştır.





Hemen hemen her dilden ve ortamdan JSON'u ayrıştırmak ve oluşturmak için kullanılabilecek kitaplıklar ve araç takımları vardır. Bu makale, python kullanarak JSON'un işlenmesinden kaynaklanan yöntemler ve sorunlar üzerinde yoğunlaşmaktadır.





Bazı JSON Örnekleri

Karşılaşacağınız en yaygın JSON varlığı bir nesne : aşağıda gösterilen biçimde bir dizi anahtar/değer eşlemesi.





yangın tabletinde google play nasıl edinilir

kişi.json:

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

Bir dizi nesneyi nasıl temsil edebileceğiniz aşağıda açıklanmıştır. Bu gösterimde dizinin her bir öğesi bir nesnedir. Aşağıdaki beyzbol oyuncularının maaşlarının bir örneğidir.



maaşlar.json:

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

Tabii ki, bir dizi skaler de temsil edebilirsiniz. Şuna benziyor:





[
'hello',
'world',
35
]

Python'da JSON'u Ayrıştırma

Python şunları sağlar: json hem JSON'u ayrıştırmak hem de python nesnelerinden ve listelerinden JSON oluşturmak için kullanılabilen modül.

Aşağıdaki kod parçacığı, bir JSON dosyasının nasıl açılacağını ve verilerin bir değişkene nasıl yükleneceğini gösterir.





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

JSON verilerini içeren bir dizginiz olduğunda, onu aşağıdakilerle bir python nesnesine (veya listesine) dönüştürebilirsiniz:

wii nasıl kurulur
obj = json.loads('''{
'firstName': 'Alice',
'lastName': 'Hall',
'age': 35
}''')

Bir JSON URL'sini ayrıştırmak için şunu kullanarak bir URL nesnesi oluşturabilirsiniz: urllib2 ve kullan json.load() eskisi gibi.

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

İşleme Hataları

JSON'da hatalar olduğunda, bir DeğerHatası . Bunu halledebilir ve gerekirse düzeltici önlem alabilirsiniz.

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

JSON'u Komut Satırından Ayrıştırma

Bazen, hataları kontrol etmek veya güzel girintili çıktılar elde etmek için, python komut satırını kullanarak JSON'u ayrıştırmak yararlıdır.

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

Yukarıdaki JSON dosyasından girintili çıktı almak için aşağıdakileri yapabilirsiniz:

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

JSON nesnesini python'a nasıl yükleyebileceğiniz ve yalnızca ihtiyacınız olanı nasıl çıkarabileceğiniz aşağıda açıklanmıştır.

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

Verilere Erişim

JSON verilerini bir python değişkenine yükledikten sonra, verilere herhangi bir python dict (veya duruma göre liste) yaptığınız gibi erişebilirsiniz. Örneğin, yukarıdaki JSON verilerine aşağıdaki gibi erişilebilir:

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

Veri tipleri

Veri türleri, verilerden otomatik olarak belirlenir. Bunu not et yaş bir tamsayı olarak ayrıştırılır.

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

JSON'dan python'a dönüştürmek için aşağıdaki dönüşüm tablosu kullanılır.

Özel Bir Sınıf Kullanarak JSON'u Ayrıştırma

Varsayılan olarak, bir JSON nesnesi bir python'a ayrıştırıldı dikte . Bazen JSON verilerinden kendi sınıfınıza ait bir nesneyi otomatik olarak oluşturmanız gerekebilir. Bunu belirterek yapabilirsiniz nesne_kancası dönüştürme işlemini gerçekleştiren işlev. Aşağıdaki örnek nasıl olduğunu gösterir.

İşte bir temsil eden özel bir sınıf Kişi .

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)

Bu sınıfın bir örneği, gerekli argümanlar aşağıdaki gibi geçirilerek oluşturulur:

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

JSON ayrıştırırken örnekler oluşturmak üzere bu sınıfı kullanmak için bir nesne_kancası aşağıdaki gibi tanımlanmış işlev: İşlev bir python alır dikte ve doğru sınıftan bir nesne döndürür.

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

Artık bunu kullanabilirsiniz nesne_kancası JSON ayrıştırıcısını çağırırken işlev.

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

JSON Kullanım Örnekleri

JSON günümüzde oldukça popülerdir. Birçok web sitesi ve SaaS (Bir Hizmet Olarak Yazılım) uygulaması, doğrudan uygulamalar tarafından tüketilebilen JSON çıktısı sunar. Halka açık olanlardan bazıları şunlardır:

  • StackOverflow/StackExchange. İşte bir URL bu, JSON biçiminde bir soru listesi döndürür.
  • GitHub, https://developer.github.com/v3/ adresinde bir JSON api'si sunar.
  • Ve işte Flickr API'si: https://developer.yahoo.com/flickr/.

Nasıl iyi bir şekilde kullanılacağına dair daha fazla örnek arıyorsanız, bu kılavuza göz atın. Python kullanarak bir sosyal medya botu oluşturmak .

fortnite oynamak için playstation plus'a ihtiyacın var mı

Hizmetleri tüketmek veya sağlamak için JSON kullanıyor musunuz? Ve teknoloji yığınınızda python kullanıyor musunuz? Aşağıdaki yorumlarda açıklayın.

Paylaş Paylaş Cıvıldamak E-posta Windows 11'e Yükseltmeye Değer mi?

Windows yeniden tasarlandı. Ancak bu sizi Windows 10'dan Windows 11'e geçmeye ikna etmek için yeterli mi?

Sonrakini Oku
İlgili konular
  • Programlama
  • Programlama
  • piton
Yazar hakkında Jay Sridhar(17 Makale Yayınlandı) Jay Sridhar'dan Daha Fazla

Haber bültenimize abone ol

Teknik ipuçları, incelemeler, ücretsiz e-kitaplar ve özel fırsatlar için bültenimize katılın!

Abone olmak için buraya tıklayın