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.

Python JSON Kodlama Örneği

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

Python JSON Kod Çözme Örneği

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

JSON dosyası ayrıştırılıyor Python

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
}

JSON kodunu biçimlendirme Örneği

Bunu daha iyi anlamak için girintiyi 40 olarak değiştirin ve çıktıyı gözlemleyin.

JSON kodunu biçimlendirme Örneği

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:

  1. Gerçek kısım
  2. Hayali kısım

Karmaşık Nesne Kodlaması Python

Ö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")

JSON Kütüphanesi Python

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

JSON ile Komut Satırı Arayüzü

$ 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