Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การจัดรูปแบบ JSON ใน Python


JSON (Java Script Object Notation) มีน้ำหนักเบา รูปแบบการแลกเปลี่ยนข้อมูลที่เป็นที่ยอมรับ การใช้เทคนิคการจัดรูปแบบ JSON ใน Python ทำให้เราแปลงสตริง JSON เป็นวัตถุ Python และแปลง Python Objects เป็นสตริง JSON ได้

ในการใช้ฟังก์ชันเหล่านี้ เราจำเป็นต้องใช้โมดูล json ของ Python โมดูล json มาพร้อมกับไลบรารีมาตรฐาน Python เลยต้องนำเข้าไว้ก่อน

import json

การแปลงอ็อบเจ็กต์ Python เป็นสตริง JSON

ในโมดูล json มีวิธีการบางอย่าง เช่น dump() และ dumps() เพื่อแปลงอ็อบเจ็กต์ Python เป็นสตริง JSON วิธีการถ่ายโอนข้อมูล () รับสองอาร์กิวเมนต์ อันแรกคืออ็อบเจ็กต์ และอันที่สองคืออ็อบเจกต์ไฟล์ เมธอดนี้ทำให้วัตถุเป็นอนุกรมในรูปแบบ JSON สตรีม เพื่อไฟล์วัตถุ ในทำนองเดียวกัน วิธี dumps() รับเพียงหนึ่งอาร์กิวเมนต์ อาร์กิวเมนต์เป็นวัตถุ มันแปลงวัตถุเป็น JSON สตริง .

โค้ดตัวอย่าง

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

ผลลัพธ์

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

การแปลงสตริง JSON เป็นอ็อบเจ็กต์ Python

ในกรณีนี้ เรากำลังยกเลิกการทำให้เป็นอนุกรมของสตริง JSON มีสองวิธีที่แตกต่างกัน คือ load() และ loads() ทั้งสองวิธีนี้ใช้ไฟล์ JSON เป็นอาร์กิวเมนต์ load() แปลงเป็นอ็อบเจกต์ python จากข้อมูลไฟล์อ็อบเจ็กต์ และ loads() แปลงจากข้อมูลประเภทสตริง

โค้ดตัวอย่าง

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

ผลลัพธ์

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

คลาสตัวเข้ารหัสและตัวถอดรหัส JSON ใน Python

คลาส JSONEncoder ใช้เพื่อแปลง Python Objects เป็นรูปแบบ JSON ในตัวอย่างนี้ เราจะมาดูกันว่าวัตถุจำนวนเชิงซ้อนสามารถแปลงเป็นวัตถุประเภท JSON โดยใช้ JSONEncoder ได้อย่างไร

โค้ดตัวอย่าง

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

ผลลัพธ์

[5.0, 8.0]

คลาส JSONDecoder ดำเนินการย้อนกลับ

โค้ดตัวอย่าง

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

ผลลัพธ์

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