Python JSON: Kodlama(dökümler), Kod Çözme(yüklemeler) ve JSON Dosyasını Okuma
JSON nedir? Python?
JSON in Python ilham alan standart bir formattır JavaBir ağ üzerinden metin biçiminde veri alışverişi ve veri transferi için betik. Genellikle JSON dize veya metin biçimindedir. API'ler ve veritabanları tarafından kullanılabilir ve nesneleri ad/değer çiftleri olarak temsil eder. JSON, şunun kısaltmasıdır: JavaKomut Dosyası Nesne Gösterimi.
Python JSON Söz Dizimi:
JSON, anahtar ve değer çifti olarak yazılmıştır.
{ "Key": "Value", "Key": "Value", }
JSON şuna çok benzer: Python sözlük. Python JSON'u destekler ve JSON olarak yerleşik bir kitaplığa sahiptir.
JSON Kütüphanesi Python
'mareşal' ve 'turşu' harici modüller Python bir sürümünü sürdürmek JSON Python kütüphane. JSON ile çalışma Python Kodlama ve kod çözme gibi JSON ile ilgili işlemleri gerçekleştirmek için öncelikle ithalat JSON kitaplığınızda ve bunun için .py dosyası,
import json
JSON'da aşağıdaki yöntemler mevcuttur Python modül
Yöntem | Açıklama |
---|---|
dökümler() | JSON nesnelerine kodlama |
çöplük() | dosyaya kodlanmış dize yazma |
yükler() | JSON dizesinin kodunu çözün |
yük() | JSON dosyası okunurken kod çözme |
Python JSON'a (Kodlama)
JSON Kütüphanesi Python Aşağıdaki çeviriyi gerçekleştirir Python nesneleri varsayılan olarak JSON nesnelerine dönüştürür
Python | JSON |
---|---|
dikte etmek | nesne |
liste | Dizi |
unicode | dizi |
sayı – int, uzun | sayı – int |
şamandıra | sayı – gerçek |
Gerçek | Gerçek |
Yanlış | Yanlış |
Hayır | Null |
dönüştürme Python Verileri JSON'a dönüştürme işlemine Kodlama işlemi denir. Kodlama, JSON kütüphane yönteminin yardımıyla yapılır – dökümler()
JSON,()'u içine atar Python
json.dumps() in Python sözlük nesnelerini dönüştüren bir yöntemdir Python JSON dize veri biçimine. Ayrıştırma, yazdırma vb. işlemler için nesnelerin dize biçiminde olması gerektiğinde kullanışlıdır.
Şimdi ilk json.dumps kodlama örneğimizi şununla gerçekleştirelim: Python:
import json x = { "name": "Ken", "age": 45, "married": True, "children": ("Alice","Bob"), "pets": ['Dog'], "cars": [ {"model": "Audi A1", "mpg": 15.1}, {"model": "Zeep Compass", "mpg": 18.1} ] } # sorting result in asscending order by keys: sorted_string = json.dumps(x, indent=4, sort_keys=True) print(sorted_string)
Çıktı:
{"person": {"name": "Kenn", "sex": "male", "age": 28}})
Bir örnek görelim Python aynı işlevi kullanarak sözlüğün JSON dosyasını oluşturmak için dosyaya JSON yazın çöplük()
# here we create new data_file.json file with write mode using file i/o operation with open('json_file.json', "w") as file_write: # write json data into file json.dump(person_data, file_write)
Çıktı:
Gösterilecek bir şey yok… Sisteminizde json_file.json oluşturuldu. Bu dosyayı aşağıdaki JSON yazma dosyasında gösterildiği gibi kontrol edebilirsiniz. Python örnek.
JSON'a Python (Kod çözme)
JSON dize kod çözme yerleşik yöntemin yardımıyla yapılır json.loads() & json.load() JSON kütüphanesinin Python. Burada çeviri tablosu JSON nesnelerinin örneğini göstermektedir. Python nesneler kod çözme işlemini gerçekleştirmeye yardımcı olan Python JSON dizesinin.
JSON | Python |
---|---|
nesne | dikte etmek |
Dizi | liste |
dizi | unicode |
sayı – int | sayı – int, uzun |
sayı – gerçek | şamandıra |
Gerçek | Gerçek |
Yanlış | Yanlış |
Null | Hayır |
Temel bir ayrıştırma JSON'u görelim Python yardımıyla kod çözme örneği json.loads fonksiyonu,
import json # json library imported # json data string person_data = '{ "person": { "name": "Kenn", "sex": "male", "age": 28}}' # Decoding or converting JSON format in dictionary using loads() dict_obj = json.loads(person_data) print(dict_obj) # check type of dict_obj print("Type of dict_obj", type(dict_obj)) # get human object details print("Person......", dict_obj.get('person'))
Çıktı:
{'person': {'name': 'Kenn', 'sex': 'male', 'age': 28}} Type of dict_obj <class 'dict'> Person...... {'name': 'John', 'sex': 'male'}
JSON Dosyasının Kodunu Çözme veya JSON dosyasını Ayrıştırma Python
Şimdi JSON dosyasını nasıl okuyacağımızı öğreneceğiz. Python ile Python JSON örneğini ayrıştırın:
NOT: JSON dosyasının kodunu çözmek, Dosya Girişi/Çıkışı (G/Ç) ile ilgili işlemdir. JSON dosyası sisteminizde programınızda belirttiğiniz konumda bulunmalıdır.
Python JSON dosyasını oku Örnek:
import json #File I/O Open function for read data from JSON File with open('X:/json_file.json') as file_object: # store file data in object data = json.load(file_object) print(data)
İşte veriler bir sözlük nesnesidir Python yukarıda gösterildiği gibi JSON dosyasını okuyun Python örnek.
Çıktı:
{'person': {'name': 'Kenn', 'sex': 'male', 'age': 28}}
Kompakt Kodlama Python
JSON dosyanızın boyutunu küçültmeniz gerektiğinde kompakt kodlamayı kullanabilirsiniz. Python.
Örnek,
import json # Create a List that contains dictionary lst = ['a', 'b', 'c',{'4': 5, '6': 7}] # separator used for compact representation of JSON. # Use of ',' to identify list items # Use of ':' to identify key and value in dictionary compact_obj = json.dumps(lst, separators=(',', ':')) print(compact_obj)
Çıktı:
'["a", "b", "c", {"4": 5, "6": 7}]' ** Here output of JSON is represented in a single line which is the most compact representation by removing the space character from compact_obj **
JSON kodunu biçimlendirin (Güzel baskı)
- Amaç, insanların anlayabilmesi için iyi biçimlendirilmiş kod yazmaktır. Güzel baskının yardımıyla herkes kodu kolayca anlayabilir.
Örnek:
import json dic = { 'a': 4, 'b': 5 } ''' To format the code use of indent and 4 shows number of space and use of separator is not necessary but standard way to write code of particular function. ''' formatted_obj = json.dumps(dic, indent=4, separators=(',', ': ')) print(formatted_obj)
Çıktı:
{ "a" : 4, "b" : 5 }
Bunu daha iyi anlamak için girintiyi 40 olarak değiştirin ve çıktıyı gözlemleyin.
JSON kodunu sipariş etme:
sıralama anahtarları öznitelik Python dumps fonksiyonunun argümanı JSON'daki anahtarı artan düzende sıralayacaktır. sort_keys argümanı bir Boolean niteliğidir. Doğru olduğunda sıralamaya izin verilir, aksi takdirde izin verilmez. Anlayalım Python JSON sıralama örneğine dize.
Örnek,
import json x = { "name": "Ken", "age": 45, "married": True, "children": ("Alice", "Bob"), "pets": [ 'Dog' ], "cars": [ {"model": "Audi A1", "mpg": 15.1}, {"model": "Zeep Compass", "mpg": 18.1} ], } # sorting result in asscending order by keys: sorted_string = json.dumps(x, indent=4, sort_keys=True) print(sorted_string)
Çıktı:
{ "age": 45, "cars": [ { "model": "Audi A1", "mpg": 15.1 }, { "model": "Zeep Compass", "mpg": 18.1 } ], "children": [ "Alice", "Bob" ], "married": true, "name": "Ken", "pets": [ "Dog" ] }
Anahtarların yaşını gözlemleyebileceğiniz gibi, arabalar, çocuklar vb. artan sırada düzenlenmiştir.
Karmaşık Nesne kodlaması Python
Karmaşık bir nesnenin iki farklı parçası vardır:
- Gerçek kısım
- Hayali kısım
Örnek: 3 +2i
Karmaşık bir nesnenin kodlamasını gerçekleştirmeden önce, bir değişkenin karmaşık olup olmadığını kontrol etmeniz gerekir. Bir değişkende depolanan değeri bir örnek yöntemi kullanarak kontrol eden bir fonksiyon oluşturmanız gerekir.
Nesnenin karmaşık veya kodlamaya uygun olup olmadığını kontrol eden özel bir fonksiyon oluşturalım.
import json # create function to check instance is complex or not def complex_encode(object): # check using isinstance method if isinstance(object, complex): return [object.real, object.imag] # raised error using exception handling if object is not complex raise TypeError(repr(object) + " is not JSON serialized") # perform json encoding by passing parameter complex_obj = json.dumps(4 + 5j, default=complex_encode) print(complex_obj)
Çıktı:
'[4.0, 5.0]'
Karmaşık JSON nesnesi kod çözme Python
JSON'daki karmaşık nesneyi çözmek için, JSON dizesinin karmaşık nesneyi içerip içermediğini kontrol eden bir object_hook parametresi kullanın. Dizeyi JSON'a dönüştürerek anlayalım Python Örnek,
import json # function check JSON string contains complex object def is_complex(objct): if '__complex__' in objct: return complex(objct['real'], objct['img']) return objct # use of json loads method with object_hook for check object complex or not complex_object =json.loads('{"__complex__": true, "real": 4, "img": 5}', object_hook = is_complex) #here we not passed complex object so it's convert into dictionary simple_object =json.loads('{"real": 6, "img": 7}', object_hook = is_complex) print("Complex_object......",complex_object) print("Without_complex_object......",simple_object)
Çıktı:
Complex_object...... (4+5j) Without_complex_object...... {'real': 6, 'img': 7}
JSON Serileştirme sınıfı JSONEncoder'a genel bakış
JSONEncoder sınıfı herhangi bir öğenin serileştirilmesi için kullanılır. Python Kodlama gerçekleştirirken nesne. Üç farklı kodlama yöntemi içerir;
- varsayılan(o) – Alt sınıfta uygulanır ve serileştirme nesnesini döndürür o nesne.
- kodlama(o) – JSON dökümleriyle aynı Python yöntem JSON dizesini döndürür Python veri yapısı.
- iterencode(o) – Dizeyi birer birer temsil edin ve o nesnesini kodlayın.
JSONEncoder sınıfının encode() yönteminin yardımıyla herhangi bir şeyi de kodlayabiliriz. Python aşağıda gösterildiği gibi nesne Python JSON kodlayıcı örneği.
# import JSONEncoder class from json from json.encoder import JSONEncoder colour_dict = { "colour": ["red", "yellow", "green" ]} # directly called encode method of JSON JSONEncoder().encode(colour_dict)
Çıktı:
'{"colour": ["red", "yellow", "green"]}'
JSON Seri durumdan çıkarma sınıfı JSONDecoder'a genel bakış
JSONDecoder sınıfı herhangi bir seri durumdan çıkarmak için kullanılır. Python Kod çözme işlemi sırasında nesne. Üç farklı kod çözme yöntemi içerir;
- varsayılan(o) – Alt sınıfta uygulanır ve seri durumdan çıkarılmış nesneyi döndürür o nesne.
- kod çözme(o) – json.loads() yönteminin dönüşüyle aynı Python JSON dizesinin veya verilerinin veri yapısı.
- raw_decode(o) - Temsil etmek Python sözlüğü tek tek ve nesnenin kodunu çözün o.
JSONDecoder sınıfının decode() metodunun yardımıyla JSON stringinin kodunu aşağıda gösterildiği gibi çözebiliriz. Python JSON kod çözücü örneği.
import json # import JSONDecoder class from json from json.decoder import JSONDecoder colour_string = '{ "colour": ["red", "yellow"]}' # directly called decode method of JSON JSONDecoder().decode(colour_string)
Çıktı:
{'colour': ['red', 'yellow']}
URL'den JSON verilerinin kodunun çözülmesi: Gerçek Hayattan Örnek
CityBike NYC'nin (Bisiklet Paylaşım Sistemi) verilerini belirtilen URL'den alacağız (https://gbfs.citibikenyc.com/gbfs/2.3/gbfs.json) ve sözlük formatına dönüştürün.
Python JSON'u dosyadan yükle Örnek:
NOT:- İstek kitaplığının bilgisayarınızda zaten kurulu olduğundan emin olun. Python, Değilse Terminal veya CMD'yi açın ve şunu yazın:
- (For Python 3 veya üstü) pip3 yükleme istekleri
import json import requests # get JSON string data from CityBike NYC using web requests library json_response= requests.get("https://gbfs.citibikenyc.com/gbfs/2.3/gbfs.json") # check type of json_response object print(type(json_response.text)) # load data in loads() function of json library bike_dict = json.loads(json_response.text) #check type of news_dict print(type(bike_dict)) # now get stationBeanList key data from dict print(bike_dict['stationBeanList'][0])
Çıktı:
<class 'str'> <class 'dict'> { 'id': 487, 'stationName': 'E 20 St & FDR Drive', 'availableDocks': 24, 'totalDocks': 34, 'latitude': 40.73314259, 'longitude': -73.97573881, 'statusValue': 'In Service', 'statusKey': 1, 'availableBikes': 9, 'stAddress1': 'E 20 St & FDR Drive', 'stAddress2': '', 'city': '', 'postalCode': '', 'location': '', 'altitude': '', 'testStation': False, 'lastCommunicationTime': '2018-12-11 10:59:09 PM', 'landMark': '' }
JSON Kitaplığıyla İlgili İstisnalar Python:
- Sınıf json.JSONDecoderError Kod çözme işlemiyle ilgili istisnayı işler. ve bu bir alt sınıftır Değer Hatası.
- İstisna - json.JSONDecoderError(msg, belge)
- İstisna parametreleri şunlardır:
- msg – Biçimlendirilmemiş Hata mesajı
- doc – JSON belgeleri ayrıştırıldı
- pos – başarısız olduğunda dokümanın dizinini başlat
- lineno – satır no gösterileri pozisyona karşılık gelir
- iki nokta üst üste – sütun no, konuma karşılık gelir
Python JSON'u dosyadan yükle Örnek:
import json #File I/O Open function for read data from JSON File data = {} #Define Empty Dictionary Object try: with open('json_file_name.json') as file_object: data = json.load(file_object) except ValueError: print("Bad JSON file format, Change JSON File")
Sonsuz ve NaN Numbers in Python
JSON Veri Değişim Formatı (RFC – Yorum İsteği) Sonsuz veya Nan Değerine izin vermez ancak herhangi bir kısıtlama yoktur. Python- Sonsuz ve Nan Değeri ile ilgili işlemleri gerçekleştirmek için JSON Kütüphanesi. Eğer JSON, INFINITE ve Nan veri türünü alırsa, onu literal'e dönüştürür.
Örnek,
import json # pass float Infinite value infinite_json = json.dumps(float('inf')) # check infinite json type print(infinite_json) print(type(infinite_json)) json_nan = json.dumps(float('nan')) print(json_nan) # pass json_string as Infinity infinite = json.loads('Infinity') print(infinite) # check type of Infinity print(type(infinite))
Çıktı:
Infinity <class 'str'> NaN inf <class 'float'>
JSON String'de tekrarlanan anahtar
RFC, anahtar adının bir JSON nesnesinde benzersiz olması gerektiğini belirtir ancak bu zorunlu değildir. Python JSON kitaplığı, JSON'da tekrarlanan nesnelere ilişkin bir istisna oluşturmaz. Tekrarlanan tüm anahtar/değer çiftlerini yok sayar ve yalnızca aralarındaki son anahtar/değer çiftini dikkate alır.
- Örnek,
import json repeat_pair = '{"a": 1, "a": 2, "a": 3}' json.loads(repeat_pair)
Çıktı:
{'a': 3}
JSON ile CLI (Komut Satırı Arayüzü) Python
json.tool JSON güzel yazdırma sözdizimini doğrulamak için komut satırı arayüzünü sağlar. Bir CLI örneğini görelim
$ echo '{"name" : "Kings Authur" }' | python3 -m json.tool
Çıktı:
{ "name": " Kings Authur " }
JSON'un avantajları Python
- Kapsayıcı ve değer arasında geri geçiş yapmak kolaydır (JSON'dan Python ve Python JSON'a)
- İnsan tarafından okunabilen (Güzel baskı) JSON Nesnesi
- Veri işlemede yaygın olarak kullanılır.
- Tek dosyada aynı veri yapısına sahip değildir.
JSON'un Uygulama Sınırlamaları Python
- JSON aralığının seri durumdan çıkarılmasında ve bir sayının tahmin edilmesinde
- JSON dizesinin maksimum uzunluğu ve JSON dizileri ve nesnenin iç içe geçme düzeyleri.
Python JSON Hile Sayfası
Python JSON İşlevi | Açıklama |
---|---|
json.dumps(person_data) | JSON Nesnesi Oluştur |
json.dump(kişi_verileri, dosya_yazma) | Dosya G/Ç'sini kullanarak JSON Dosyası Oluşturun Python |
kompakt_obj = json.dumps(veri, ayırıcılar=(',',':')) | Ayırıcı kullanarak JSON Nesnesinden boşluk karakterini kaldırarak JSON Nesnesini sıkıştırın |
formatted_obj = json.dumps(dic, girinti=4, ayırıcılar=(',', ': ')) | Girintiyi kullanarak JSON kodunu biçimlendirme |
sorted_string = json.dumps(x, girinti=4, sort_keys=Doğru) | JSON nesne anahtarını alfabetik sıraya göre sıralama |
karmaşık_nesne = json.dumps(4 + 5j, varsayılan=karmaşık_kodlama) | Python JSON'da Karmaşık Nesne kodlaması |
JSONEncoder().encode(colour_dict) | Serileştirme için JSONEncoder Sınıfının Kullanımı |
json.loads(data_string) | JSON Dizisinin kodunu çözme Python json.loads() işlevini kullanan sözlük |
json.loads('{“__complex__”: true, “gerçek”: 4, “img”: 5}', nesne_kancası = is_complex) | Karmaşık JSON nesnesinin kodunun çözülmesi Python |
JSONDecoder().decode(colour_string) | JSON Kod Çözme Kullanımı Python Seri durumdan çıkarma ile |