Python JSON: Encode(dumps), Decode(memuat) & Baca File JSON
Apa yang dimaksud dengan JSON Python?
JSON in Python adalah format standar yang terinspirasi oleh JavaSkrip untuk pertukaran data dan transfer data sebagai format teks melalui jaringan. Umumnya, JSON dalam format string atau teks. JSON dapat digunakan oleh API dan database, dan JSON merepresentasikan objek sebagai pasangan nama/nilai. JSON merupakan singkatan dari JavaNotasi Objek Skrip.
Python Sintaks JSON:
JSON ditulis sebagai pasangan kunci dan nilai.
{ "Key": "Value", "Key": "Value", }
JSON sangat mirip dengan Python kamus. Python mendukung JSON, dan memiliki perpustakaan bawaan sebagai JSON.
Perpustakaan JSON di Python
'marsekal'Dan'acar' modul eksternal dari Python mempertahankan versi JSON Python perpustakaan. Bekerja dengan JSON di Python untuk melakukan operasi terkait JSON seperti pengkodean dan dekode, Anda perlu terlebih dahulu mengimpor Perpustakaan JSON dan untuk itu di perpustakaan Anda .py file,
import json
Metode berikut tersedia dalam JSON Python modul
metode | Description |
---|---|
kesedihan() | pengkodean ke objek JSON |
membuang() | penulisan string yang dikodekan pada file |
memuat() | Dekode string JSON |
memuat() | Dekode saat file JSON dibaca |
Python ke JSON (Pengkodean)
JSON Perpustakaan dari Python melakukan penerjemahan berikut Python objek menjadi objek JSON secara default
Python | JSON |
---|---|
dict | obyek |
daftar | susunan |
unicode | String |
nomor – int, panjang | nomor – int |
mengapung | nomor – nyata |
Benar | Benar |
Salah | Salah |
None | Null |
Konversi Python data ke JSON disebut operasi Encoding. Encoding dilakukan dengan bantuan metode library JSON – kesedihan()
JSON dump() masuk Python
json.dumps() in Python adalah metode yang mengubah objek kamus Python ke dalam format data string JSON. Berguna jika objek harus berada dalam format string untuk operasi seperti penguraian, pencetakan, dsb.
Sekarang mari kita lakukan contoh pengkodean json.dumps pertama kita dengan 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)
Keluaran:
{"person": {"name": "Kenn", "sex": "male", "age": 28}})
Mari kita lihat contohnya Python tulis JSON ke file untuk membuat file JSON kamus menggunakan fungsi yang sama membuang()
# 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)
Keluaran:
Tidak ada yang ditampilkan…Di sistem Anda, json_file.json telah dibuat. Anda dapat memeriksa file itu seperti yang ditunjukkan di bawah ini, tulis JSON ke file Python contoh.
JSON ke Python (penguraian kode)
Decoding string JSON dilakukan dengan bantuan metode bawaan json.memuat() & json.beban() perpustakaan JSON di Python. Di sini tabel terjemahan menunjukkan contoh objek JSON Python objek yang berguna untuk melakukan decoding Python dari string JSON.
JSON | Python |
---|---|
obyek | dict |
susunan | daftar |
String | unicode |
nomor – int | nomor – int, panjang |
nomor – nyata | mengapung |
Benar | Benar |
Salah | Salah |
Null | None |
Mari kita lihat parsing dasar JSON Python contoh decoding dengan bantuan json.loads fungsi,
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'))
Keluaran:
{'person': {'name': 'Kenn', 'sex': 'male', 'age': 28}} Type of dict_obj <class 'dict'> Person...... {'name': 'John', 'sex': 'male'}
Mendekode File JSON atau Mengurai file JSON di Python
Sekarang, kita akan belajar cara membaca file JSON Python dengan Python parsing contoh JSON:
CATATAN: Decoding file JSON adalah operasi terkait File Input / Output (I/O). File JSON harus ada di sistem Anda di lokasi tertentu yang Anda sebutkan dalam program Anda.
Python membaca file JSON Contoh:
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)
Berikut datanya adalah objek kamus Python seperti yang ditunjukkan pada file JSON baca di atas Python contoh.
Keluaran:
{'person': {'name': 'Kenn', 'sex': 'male', 'age': 28}}
Pengkodean Ringkas di Python
Saat Anda perlu mengurangi ukuran file JSON, Anda dapat menggunakan pengkodean ringkas Python.
Contoh,
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)
Keluaran:
'["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 **
Format kode JSON (Cetak cantik)
- Tujuannya adalah untuk menulis kode yang diformat dengan baik untuk pemahaman manusia. Dengan bantuan pencetakan cantik, siapa pun dapat dengan mudah memahami kodenya.
Contoh:
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)
Keluaran:
{ "a" : 4, "b" : 5 }
Untuk lebih memahami hal ini, ubah indentasi menjadi 40 dan amati keluaran-
Memesan kode JSON:
sort_keys atribut dalam Python Argumen fungsi dumps akan mengurutkan kunci dalam JSON dalam urutan menaik. Argumen sort_keys adalah atribut Boolean. Jika nilainya benar, pengurutan diperbolehkan, jika tidak, tidak diperbolehkan. Mari kita pahami dengan Python contoh pengurutan string ke JSON.
Contoh,
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)
Keluaran:
{ "age": 45, "cars": [ { "model": "Audi A1", "mpg": 15.1 }, { "model": "Zeep Compass", "mpg": 18.1 } ], "children": [ "Alice", "Bob" ], "married": true, "name": "Ken", "pets": [ "Dog" ] }
Seperti yang Anda amati, usia kunci, mobil, anak-anak, dll disusun dalam urutan menaik.
Pengkodean Objek Kompleks Python
Objek Kompleks memiliki dua bagian yang berbeda yaitu
- Bagian nyata
- Bagian imajiner
Contoh: 3 +2i
Sebelum melakukan pengodean objek yang kompleks, Anda perlu memeriksa apakah variabel tersebut kompleks atau tidak. Anda perlu membuat fungsi yang memeriksa nilai yang disimpan dalam variabel dengan menggunakan metode instan.
Mari membuat fungsi spesifik untuk memeriksa apakah objek tersebut rumit atau memenuhi syarat untuk dikodekan.
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)
Keluaran:
'[4.0, 5.0]'
Dekode objek JSON kompleks di Python
Untuk mendekode objek kompleks dalam JSON, gunakan parameter object_hook yang memeriksa apakah string JSON berisi objek kompleks atau tidak. Mari kita pahami dengan string ke JSON Python Contoh,
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)
Keluaran:
Complex_object...... (4+5j) Without_complex_object...... {'real': 6, 'img': 7}
Ikhtisar kelas Serialisasi JSON JSONEncoder
Kelas JSONEncoder digunakan untuk serialisasi apa pun Python objek saat melakukan pengkodean. Ini berisi tiga metode pengkodean yang berbeda yaitu
- bawaan(o) – Diimplementasikan di subkelas dan mengembalikan objek serialisasi o obyek.
- menyandikan(o) – Sama seperti dump JSON Python metode mengembalikan string JSON Python struktur data.
- kode ulang(o) – Mewakili string satu per satu dan menyandikan objek o.
Dengan bantuan metode encode() dari kelas JSONEncoder, kita juga dapat mengkodekan apa pun Python objek seperti gambar di bawah ini Python Contoh pembuat enkode JSON.
# 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)
Keluaran:
'{"colour": ["red", "yellow", "green"]}'
Ikhtisar kelas Deserialisasi JSON JSONDecoder
Kelas JSONDecoder digunakan untuk deserialisasi apa pun Python objek saat melakukan decoding. Ini berisi tiga metode decoding yang berbeda
- bawaan(o) – Diimplementasikan di subkelas dan mengembalikan objek yang dideserialisasi o obyek.
- memecahkan kode (o) – Sama seperti pengembalian metode json.loads() Python struktur data string atau data JSON.
- dekode_mentah(o) - Mewakili Python kamus satu per satu dan memecahkan kode objek o.
Dengan bantuan metode decode() kelas JSONDecoder, kita juga dapat mendekode string JSON seperti yang ditunjukkan di bawah ini Python Contoh dekoder JSON.
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)
Keluaran:
{'colour': ['red', 'yellow']}
Mendekode data JSON dari URL: Contoh Kehidupan Nyata
Kami akan mengambil data CityBike NYC (Bike Sharing System) dari URL yang ditentukan (https://gbfs.citibikenyc.com/gbfs/2.3/gbfs.json) dan ubah ke format kamus.
Python memuat JSON dari file Contoh:
CATATAN: - Pastikan perpustakaan permintaan sudah terinstal di Anda Python, Jika tidak maka buka Terminal atau CMD dan ketik
- (Untuk Python 3 atau lebih tinggi) permintaan pemasangan pip3
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])
Keluaran:
<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': '' }
Pengecualian Terkait dengan Perpustakaan JSON di Python:
- Kelas json.JSONDecoderError menangani pengecualian yang terkait dengan operasi decoding. dan ini adalah subkelas dari NilaiKesalahan.
- Pengecualian - json.JSONDecoderError(pesan, dokumen)
- Parameter Pengecualian adalah,
- pesan – Pesan Kesalahan Belum Diformat
- doc – Dokumen JSON diurai
- pos – memulai indeks dokumen ketika gagal
- lineno – baris no show sesuai dengan pos
- titik dua – kolom tidak sesuai dengan pos
Python memuat JSON dari file Contoh:
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")
Tak Terbatas dan NaN Numbers in Python
Format Pertukaran Data JSON (RFC – Permintaan Komentar) tidak mengizinkan Nilai Tak Terbatas atau Nan tetapi tidak ada batasan dalam Python- Pustaka JSON untuk melakukan operasi terkait Nilai Tak Terbatas dan Nan. Jika JSON memperoleh tipe data Tak Terbatas dan Nan, maka JSON akan mengubahnya menjadi literal.
Contoh,
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))
Keluaran:
Infinity <class 'str'> NaN inf <class 'float'>
Kunci berulang dalam String JSON
RFC menentukan nama kunci harus unik dalam objek JSON, tapi itu tidak wajib. Python Pustaka JSON tidak memunculkan pengecualian objek berulang di JSON. Ini mengabaikan semua pasangan nilai kunci yang berulang dan hanya mempertimbangkan pasangan nilai kunci terakhir di antara pasangan tersebut.
- Contoh,
import json repeat_pair = '{"a": 1, "a": 2, "a": 3}' json.loads(repeat_pair)
Keluaran:
{'a': 3}
CLI (Antarmuka Baris Perintah) dengan JSON di dalamnya Python
json.tool menyediakan antarmuka baris perintah untuk memvalidasi sintaksis JSON yang dicetak cantik. Mari kita lihat contoh CLI
$ echo '{"name" : "Kings Authur" }' | python3 -m json.tool
Keluaran:
{ "name": " Kings Authur " }
Keuntungan JSON di Python
- Mudah untuk berpindah kembali antara wadah dan nilai (JSON ke Python dan Python ke JSON)
- Objek JSON yang dapat dibaca manusia (Cetak cantik)
- Banyak digunakan dalam penanganan data.
- Tidak memiliki struktur data yang sama dalam satu file.
Batasan Implementasi JSON di Python
- Dalam deserializer rentang JSON dan prediksi angka
- Panjang maksimum string JSON dan array JSON serta tingkat objek bersarang.
Python Lembar Cheat JSON
Python Fungsi JSON | Description |
---|---|
json.dumps(data_orang) | Buat Objek JSON |
json.dump(data_orang, file_tulis) | Buat File JSON menggunakan File I/O Python |
compact_obj = json.dumps(data, pemisah=(',',':')) | Ringkas Objek JSON dengan menghapus karakter spasi dari Objek JSON menggunakan pemisah |
formatted_obj = json.dumps(dic, indent=4, separators=(',', ': ')) | Memformat kode JSON menggunakan Indent |
diurutkan_string = json.dumps(x, indent=4, sort_keys=True) | Mengurutkan kunci objek JSON berdasarkan urutan abjad |
kompleks_obj = json.dumps(4 + 5j, default=encode_kompleks) | Python Pengkodean Objek Kompleks dalam JSON |
JSONEncoder().encode(warna_dict) | Penggunaan Kelas JSONEncoder untuk Serialisasi |
json.beban(data_string) | Mendekode String JSON di Python kamus menggunakan fungsi json.loads() |
json.loads('{“__complex__”: benar, “nyata”: 4, “img”: 5}', kait_objek = kompleks) | Decoding objek JSON kompleks menjadi Python |
JSONDecoder().decode(warna_string) | Penggunaan Decoding JSON ke Python dengan Deserialisasi |