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)