Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Python

Python JSON:Encode(dumps), Decode(loads) &Baca File JSON

Apa itu JSON di Python?

JSON di Python adalah format standar yang terinspirasi oleh JavaScript untuk pertukaran data dan transfer data sebagai format teks melalui jaringan. Umumnya, JSON dalam format string atau teks. Ini dapat digunakan oleh API dan database, dan mewakili objek sebagai pasangan nama/nilai. JSON adalah singkatan dari JavaScript Object Notation.

Sintaks Python JSON:

JSON ditulis sebagai pasangan kunci dan nilai.

{
        "Key":  "Value",
        "Key":  "Value",
} 

JSON sangat mirip dengan Kamus Python. Python mendukung JSON, dan memiliki pustaka bawaan sebagai JSON.

Perpustakaan JSON dengan Python

marsekal ' dan 'acar' modul eksternal Python mempertahankan versi JSON Pustaka Python. Bekerja dengan JSON dengan Python untuk melakukan operasi terkait JSON seperti encoding dan decoding, Anda harus mengimpor terlebih dahulu Pustaka JSON dan untuk itu di .py . Anda berkas,

import json

Metode berikut tersedia di modul JSON Python

Metode Deskripsi
dumps() mengkodekan ke objek JSON
buang() penulisan string yang dikodekan pada file
memuat() Decode string JSON
memuat() Decode saat file JSON dibaca

Python ke JSON (Encoding)

JSON Library of Python melakukan terjemahan objek Python berikut ke objek JSON secara default

Python JSON
dikte Objek
daftar Array
unicode Tali
angka – int, panjang angka – int
mengambang angka – nyata
Benar Benar
Salah Salah
Tidak ada Nol

Mengubah data Python ke JSON disebut operasi Encoding. Encoding dilakukan dengan bantuan metode library JSON – dumps()

JSON dumps() dengan Python

json.dumps() di Python adalah metode yang mengubah objek kamus Python menjadi format data string JSON. Ini berguna ketika objek diharuskan dalam format string untuk operasi seperti penguraian, pencetakan, dll.

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 contoh Python menulis JSON ke file untuk membuat file JSON kamus menggunakan fungsi yang sama dump()

# 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 dibuat. Anda dapat memeriksa file itu seperti yang ditunjukkan di bawah, tulis JSON ke file contoh Python.

JSON ke Python (Decoding)

Penguraian string JSON dilakukan dengan bantuan metode bawaan json.loads() &json.load() dari perpustakaan JSON dengan Python. Berikut tabel terjemahan menunjukkan contoh objek JSON ke objek Python yang berguna untuk melakukan decoding dalam Python string JSON.

JSON Python
Objek dikte
Array daftar
Tali unicode
angka – int angka – int, panjang
angka – nyata mengambang
Benar Benar
Salah Salah
Null Tidak ada

Mari kita lihat contoh dasar penguraian kode JSON Python 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'}

Decoding File JSON atau Parsing file JSON dengan Python

Sekarang, kita akan belajar cara membaca file JSON dengan Python dengan contoh Python parse 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 di 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)

Data di sini adalah objek kamus Python seperti yang ditunjukkan pada contoh file JSON baca di atas Python.

Keluaran:

{'person': {'name': 'Kenn', 'sex': 'male', 'age': 28}}

Pengodean Ringkas dengan Python

Saat Anda perlu mengurangi ukuran file JSON, Anda dapat menggunakan enkode ringkas dengan 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)

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 ini, ubah indentasi menjadi 40 dan amati output-

Memesan kode JSON:

sort_keys atribut dalam argumen fungsi dumps Python akan mengurutkan kunci dalam JSON dalam urutan menaik. Argumen sort_keys adalah atribut Boolean. Jika benar, penyortiran diperbolehkan, sebaliknya tidak. Mari kita pahami dengan contoh pengurutan string Python 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 diatur dalam urutan menaik.

Pengkodean Objek Kompleks Python

Objek Kompleks memiliki dua bagian berbeda yaitu

  1. Bagian asli
  2. Bagian imajiner

Contoh:3 +2i

Sebelum melakukan pengkodean objek kompleks, Anda perlu memeriksa variabel kompleks atau tidak. Anda perlu membuat fungsi yang memeriksa nilai yang disimpan dalam variabel dengan menggunakan metode instance.

Mari kita buat fungsi khusus untuk objek pemeriksaan yang kompleks atau memenuhi syarat untuk penyandian.

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

Decoding objek JSON yang kompleks dengan Python

Untuk mendekode objek kompleks di JSON, gunakan parameter object_hook yang memeriksa 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 JSON Serialization class JSONEncoder

Kelas JSONEncoder digunakan untuk serialisasi objek Python apa pun saat melakukan pengkodean. Ini berisi tiga metode pengkodean yang berbeda yaitu

Dengan bantuan metode encode() kelas JSONEncoder, kita juga dapat mengkodekan objek Python apa pun seperti yang ditunjukkan pada contoh encoder JSON Python di bawah ini.

# 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"]}'

Ringkasan kelas Deserialisasi JSON JSONDecoder

Kelas JSONDecoder digunakan untuk deserialisasi objek Python apa pun saat melakukan decoding. Ini berisi tiga metode decoding yang berbeda yaitu

Dengan bantuan metode decode() kelas JSONDecoder, kita juga dapat mendekode string JSON seperti yang ditunjukkan pada contoh dekoder Python JSON di bawah ini.

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 (Sistem Berbagi Sepeda) dari URL yang ditentukan (https://feeds.citibikenyc.com/stations/stations.json) dan mengonversinya ke dalam format kamus.

Python memuat JSON dari file Contoh:

CATATAN:- Pastikan perpustakaan permintaan sudah diinstal di Python Anda, Jika tidak maka buka Terminal atau CMD dan ketik

import json
import requests

# get JSON string data from CityBike NYC using web requests library
json_response= requests.get("https://feeds.citibikenyc.com/stations/stations.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 JSON Library dengan Python:

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

Angka Tak Terbatas dan NaN dengan Python

Format Pertukaran Data JSON (RFC – Permintaan Komentar) tidak mengizinkan Nilai Tak Terbatas atau Nan tetapi tidak ada batasan dalam Pustaka Python- JSON untuk melakukan operasi terkait Nilai Tak Terbatas dan Nilai Nan. Jika JSON mendapatkan tipe data INFINITE dan Nan daripada 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 JSON String

RFC menentukan nama kunci harus unik dalam objek JSON, tetapi itu tidak wajib. Pustaka Python 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 mereka.

import json
repeat_pair = '{"a":  1, "a":  2, "a":  3}'
json.loads(repeat_pair)

Keluaran:

{'a': 3}

CLI (Command Line Interface) dengan JSON dengan Python

json.tool menyediakan antarmuka baris perintah untuk memvalidasi sintaksis cetak cantik JSON. Mari kita lihat contoh CLI

$ echo '{"name" : "Kings Authur" }' | python3 -m json.tool

Keluaran:

{
    "name": " Kings Authur "
}

Kelebihan JSON dengan Python

Batasan Implementasi JSON dengan Python

Lembar Cheat Python JSON

Fungsi Python JSON Deskripsi
json.dumps(person_data) Buat Objek JSON
json.dump(person_data, file_write) Buat File JSON menggunakan File I/O Python
compact_obj =json.dumps(data, separators=(‘,’,’:’)) Ringkaskan Objek JSON dengan menghapus karakter spasi dari Objek JSON menggunakan pemisah
formatted_obj =json.dumps(dic, indent=4, separators=(‘,’, ‘:‘)) Memformat kode JSON menggunakan Indent
sorted_string =json.dumps(x, indent=4, sort_keys=True) Mengurutkan kunci objek JSON menurut urutan abjad
complex_obj =json.dumps(4 + 5j, default=complex_encode) Encoding Objek Kompleks Python di JSON
JSONEncoder().encode(colour_dict) Penggunaan Kelas JSONEncoder untuk Serialisasi
json.loads(data_string) Mendekode String JSON dalam kamus Python menggunakan fungsi json.loads()
json.loads(‘{“__complex__”:true, “real”:4, “img”:5}’, object_hook =is_complex) Decoding objek JSON kompleks ke Python
JSONDecoder().decode(string_warna) Penggunaan Decoding JSON ke Python dengan Deserialisasi

Python

  1. Tipe Data Python
  2. Operator Python
  3. Python sementara Loop
  4. Pernyataan lulus python
  5. Argumen Fungsi Python
  6. Kamus Python
  7. File Python I/O
  8. Java BufferedReader:Cara Membaca File di Java dengan Contoh
  9. Python Periksa Apakah File Ada | Cara Memeriksa Apakah Direktori Ada di Python
  10. Python - File I/O