Computer >> Máy Tính >  >> Lập trình >> Python

Định dạng JSON bằng Python

JSON (Ký hiệu đối tượng tập lệnh Java) có trọng lượng nhẹ, định dạng trao đổi dữ liệu được chấp nhận tốt. Sử dụng kỹ thuật định dạng JSON trong Python, chúng ta có thể chuyển đổi chuỗi JSON thành các đối tượng Python và cũng có thể chuyển đổi Đối tượng Python thành chuỗi JSON.

Để sử dụng các chức năng này, chúng ta cần sử dụng mô-đun json của Python. Mô-đun json đi kèm với thư viện chuẩn Python. Vì vậy, lúc đầu, chúng ta phải nhập nó trước.

import json

Chuyển đổi các đối tượng Python thành Chuỗi JSON

Trong mô-đun json, có một số phương thức như dump () và dumps () để chuyển đổi các đối tượng Python thành chuỗi JSON. Phương thức dump () nhận hai đối số, đối số đầu tiên là đối tượng và đối số thứ hai là đối tượng tệp. Phương thức này tuần tự hóa đối tượng dưới dạng luồng được định dạng JSON để tập tin các đối tượng. Tương tự, phương thức dumps () chỉ nhận một đối số. Đối số là đối tượng. Nó chuyển đổi các đối tượng thành JSON string .

Mã mẫu

import json
from io import StringIO
str_io_obj = StringIO()
#Use JSON Dump to make StringIO
json.dump(["India", "Australia", "Brazil"], str_io_obj)
print('StringIO Object value: ' + str(str_io_obj.getvalue()))
my_json = {
   "name" : "Kalyan",
   "age" : 25,
   "city" : 'Delhi'
}
print(json.dumps(my_json, indent=4))

Đầu ra

StringIO Object value: ["India", "Australia", "Brazil"] {
   "name": "Kalyan",
   "age": 25,
   "city": "Delhi"
}

Chuyển đổi chuỗi JSON thành đối tượng Python

Trong trường hợp này, chúng tôi đang gỡ tuần tự hóa các chuỗi JSON. Có hai phương pháp khác nhau. Đây là tải () và tải (). Cả hai phương thức này đều lấy tệp JSON làm đối số. load () chuyển đổi thành các đối tượng python từ dữ liệu đối tượng tệp và load () chuyển đổi từ dữ liệu kiểu chuỗi.

Mã mẫu

import json
from io import StringIO
str_io_obj = StringIO('["xyz", "abc", "xyz", "pqr"]')
#load from StringIO
print('Load: ' + str(json.load(str_io_obj)))
print('String to Json: ' + str(json.loads('{"xyz" : 1, "abc" : 2, "xyz" : 3, "pqr" : 4}')))

Đầu ra

Load: ['xyz', 'abc', 'xyz', 'pqr']
String to Json: {'xyz': 3, 'abc': 2, 'pqr': 4}

Lớp mã hóa và giải mã JSON trong Python

Lớp JSONEncoder được sử dụng để chuyển đổi Đối tượng Python sang định dạng JSON. Ở đây trong ví dụ này, chúng ta sẽ thấy cách một đối tượng số phức có thể được chuyển đổi thành đối tượng kiểu JSON bằng cách sử dụng JSONEncoder.

Mã mẫu

import json
class Comp_Encoder(json.JSONEncoder):
   def default(self, comp_obj):
      if isinstance(comp_obj, complex):
      return [comp_obj.real, comp_obj.imag]
      return json.JSONEncoder.default(self, comp_obj)
      print(json.dumps(5+8j, cls=Comp_Encoder))

Đầu ra

[5.0, 8.0]

Lớp JSONDecoder thực hiện hành động ngược lại.

Mã mẫu

import json
my_str = '{"Asim" : 25, "Priyesh" : 23, "Asim" : "28"}'
#Decode JSON using the JSONDecoder
print(json.JSONDecoder().decode(my_str))
print(json.JSONDecoder().raw_decode(my_str))

Đầu ra

{'Asim': '28', 'Priyesh': 23}
({'Asim': '28', 'Priyesh': 23}, 44)