Python Veri Sürekliliği - JSON Modülü

JSON kısaltması JavaScript Object Notation. Hafif bir veri değişim formatıdır. Birçok programlama dili tarafından desteklenen, dilden bağımsız ve platformlar arası bir metin formatıdır. Bu format, web sunucusu ile istemciler arasında veri alışverişi için kullanılır.

JSON formatı turşuya benzer. Bununla birlikte, turşu serileştirme Python'a özgüdür, oysa JSON biçimi birçok dil tarafından uygulanmaktadır, dolayısıyla evrensel standart haline gelmiştir. Python'un standart kütüphanesindeki json modülünün işlevselliği ve arayüzü, turşu ve mareşal modüllerine benzer.

Pickle modülünde olduğu gibi, json modülü de sağlar dumps() ve loads() Python nesnesinin JSON kodlu dizeye serileştirilmesi için işlev ve dump() ve load() işlevler, dizgeleştirilmiş Python nesnelerini dosyaya yazar ve dosyadan okur.

  • dumps() - Bu işlev, nesneyi JSON biçimine dönüştürür.

  • loads() - Bu işlev bir JSON dizesini Python nesnesine geri dönüştürür.

Aşağıdaki örnek, bu işlevlerin temel kullanımını göstermektedir -

import json
   data=['Rakesh',{'marks':(50,60,70)}]
   s=json.dumps(data)
json.loads(s)

Dumps () işlevi isteğe bağlı sort_keys bağımsız değişkenini alabilir. Varsayılan olarak False'dir. True olarak ayarlanırsa, sözlük tuşları JSON dizesinde sıralı olarak görünür.

Dumps () işlevi, değer olarak bir sayı alan indent adında başka bir isteğe bağlı parametreye sahiptir. Baskı çıktısına benzer şekilde, json dizesinin biçimlendirilmiş temsilinin her segmentinin uzunluğuna karar verir.

Json modülü ayrıca yukarıdaki işlevlere karşılık gelen nesne yönelimli API'ye sahiptir. Modülde tanımlanmış iki sınıf vardır - JSONEncoder ve JSONDecoder.

JSONEncoder sınıfı

Bu sınıfın amacı Python veri yapıları için kodlayıcıdır. Her Python veri türü, aşağıdaki tabloda gösterildiği gibi karşılık gelen JSON türüne dönüştürülür -

Python JSON
Dikte nesne
liste, tuple dizi
Str dizi
int, float, int- & float-türetilmiş Enums numara
Doğru doğru
Yanlış yanlış
Yok boş

JSONEncoder sınıfı, JSONEncoder () yapıcısı tarafından başlatılır. Aşağıdaki önemli yöntemler kodlayıcı sınıfında tanımlanmıştır -

Sr.No. Yöntemler ve Açıklama
1

encode()

Python nesnesini JSON formatına serileştirir

2

iterencode()

Nesneyi kodlar ve nesnedeki her öğenin kodlanmış biçimini veren bir yineleyici döndürür.

3

indent

Kodlanmış dizenin girinti düzeyini belirler

4

sort_keys

anahtarların sıralı olarak görünüp görünmemesini sağlamak için true veya false olur.

5

Check_circular

True ise, konteyner türü nesnede döngüsel referansı kontrol edin

Aşağıdaki örnek Python liste nesnesini kodlamaktadır.

e=json.JSONEncoder()
e.encode(data)

JSONDecoder sınıfı

Bu sınıfın nesnesi, json dizesinde kodunun Python veri yapısına geri dönmesine yardımcı olur. Bu sınıftaki ana yöntem decode () yöntemidir. Aşağıdaki örnek kod, önceki adımda kodlanmış dizeden Python liste nesnesini alır.

d=json.JSONDecoder()
d.decode(s)

Json modülü tanımlar load() ve dump() JSON verilerini nesneye benzer bir dosyaya yazmak için işlevler - bu bir disk dosyası veya bayt akışı olabilir ve verileri bunlardan geri okur.

dökümü ()

Bu işlev JSONed Python nesne verilerini bir dosyaya yazar. Dosya 'w' moduyla açılmalıdır.

import json
data=['Rakesh', {'marks': (50, 60, 70)}]
   fp=open('json.txt','w')
   json.dump(data,fp)
   fp.close()

Bu kod, mevcut dizinde 'json.txt' oluşturacaktır. İçeriği şu şekilde gösterir -

["Rakesh", {"marks": [50, 60, 70]}]

yük()

Bu işlev, dosyadan JSON verilerini yükler ve ondan Python nesnesini döndürür. Dosya okuma izniyle açılmalıdır ('r' moduna sahip olmalıdır).

Example

fp=open('json.txt','r')
   ret=json.load(fp)
   print (ret)
   fp.close()

Output

['Rakesh', {'marks': [50, 60, 70]}]

json.tool modül ayrıca dosyadaki verileri doğrulayan ve JSON nesnesini oldukça biçimlendirilmiş bir şekilde yazdıran bir komut satırı arayüzüne sahiptir.

C:\python37>python -m json.tool json.txt
[
   "Rakesh",   
   {
      "marks": [
         50,
         60,
         70
      ]
   }
]