JSON เป็นรูปแบบข้อมูลยอดนิยมที่ใช้สำหรับจัดเก็บข้อมูลที่มีโครงสร้าง
เมื่อคุณสร้างแอปพลิเคชันใน Python คุณอาจตัดสินใจว่าต้องการใช้ JSON ในแอปของคุณ ตัวอย่างเช่น คุณอาจต้องการอ่านข้อมูลจากไฟล์ JSON หรือเขียนข้อมูลที่จัดเก็บในรูปแบบ JSON ลงในไฟล์
ในคู่มือนี้ เราจะแยกวิเคราะห์พื้นฐานของรูปแบบข้อมูล JSON วิธีใช้โมดูล json ของ Python และวิธีทำงานกับ JSON ใน Python จนจบการอ่านบทช่วยสอนนี้ คุณจะเป็นผู้เชี่ยวชาญในการใช้ JSON ในโปรแกรม Python ของคุณ!
JSON คืออะไร?
JSON ย่อมาจาก JavaScript Object Notation เป็นรูปแบบข้อมูลที่ช่วยให้คุณจัดเก็บข้อมูลที่มีโครงสร้าง
บ่อยครั้ง JSON ถูกใช้เพื่อส่งข้อมูลไปและมาจากเซิร์ฟเวอร์ในแอปพลิเคชันเว็บ คุณอาจเคยเห็น ตัวอย่างเช่น API หลายตัว เช่น Fitbit API หรือ Google Maps API คืนค่าข้อมูลในรูปแบบ JSON
นี่เป็นเพราะข้อมูล JSON เป็นมาตรฐาน มีโครงสร้าง และอ่านง่าย
นี่คือตัวอย่างของเรคอร์ด JSON ใน Python:
{
"name": "James Smith",
"id": 202,
"probation": false
}
เรคอร์ดนี้จัดเก็บคีย์ 3 ตัว ซึ่งอยู่ด้านซ้ายของเครื่องหมายทวิภาค (:) และค่า 3 ค่า ซึ่งจัดเก็บอยู่ด้านขวาของเครื่องหมายทวิภาค แต่ละคีย์ถูกผูกกับค่า
รูปแบบข้อมูล JSON ไม่ควรสับสนกับ Dictionary แม้จะดูเหมือน Dictionary แต่ JSON เป็นรูปแบบข้อมูล ในขณะที่ Dictionary เป็นโครงสร้างข้อมูล
นี่หมายความว่า หากคุณต้องการจัดเก็บข้อมูล JSON ใน Dictionary คุณจะต้องแปลงมันเป็น Dictionary หากคุณต้องการจัดเก็บ Dictionary เป็น JSON คุณจะต้องแปลงมันเป็น JSON
Import json ใน Python
ก่อนที่คุณจะเริ่มทำงานกับ JSON objects ใน Python คุณจะต้องนำเข้าโมดูล json ของ Python โมดูลนี้รวมฟังก์ชันหลายตัวที่ช่วยให้คุณทำงานกับข้อมูล JSON
เพื่อนำเข้าโมดูล JSON คุณสามารถใช้คำสั่งนี้:
import json
ตอนนี้ที่เรานำเข้าโมดูล JSON เข้าโค้ดของคุณแล้ว เราสามารถเริ่มทำงานกับฟังก์ชันของมันได้
Parse JSON ใน Python (แปลง JSON เป็น Dictionary)
หนึ่งในฟังก์ชันสำคัญที่สุดที่คุณต้องดำเนินการเมื่อพูดถึงการทำงานกับข้อมูล JSON คือการ parse JSON ให้เป็น Dictionary
เพื่อแปลง JSON เป็น Dictionary คุณสามารถใช้เมธอด json.loads()
json.loads() รับพารามิเตอร์หนึ่งตัว: สตริง JSON ที่คุณต้องการแปลงเป็น Dictionary
สมมติว่าคุณมีสตริง JSON ที่จัดเก็บข้อมูลเกี่ยวกับโปรเจกต์ที่โค้ดเดอร์ได้รับมอบหมายในทีมวิศวกรรม คุณต้องการแปลงสตริง JSON นั้นเป็น Dictionary เพื่อทำเช่นนั้น คุณสามารถใช้โค้ดนี้:
import json
employee = "{'name': 'Linda Richardson', 'projects': ['Directory', 'Homepage']}"
employee_dictionary = json.loads(employee)
print(employee_dictionary)
print(employee_dictionary["name"])
โค้ดของเราคืนค่า:
{'name': 'Linda Richardson', 'projects': ['Directory', 'Homepage']}
Linda Richardson
มาแยกวิเคราะห์โค้ดของเรา แรก เรานำเข้าโมดูล json เข้าโค้ดของเรา จากนั้นเราประกาศสตริงชื่อ employee ที่จัดเก็บเรคอร์ดพนักงานของเราในโครงสร้าง JSON
ต่อไป เราใช้ json.loads() เพื่อแปลงสตริง employee ของเราเป็น JSON จากนั้นเราพิมพ์ Dictionary ใหม่ของเราทางคอนโซล เรายังพิมพ์ค่าของคีย์ name ทางคอนโซล
ตามที่คุณเห็น Dictionary ของเราดูเหมือนสตริง JSON ของเรา แต่ ตอนนี้ข้อมูลของเราจัดเก็บเป็น Dictionary เราสามารถบอกได้เพราะ เมื่อเราพิมพ์ค่าของคีย์ "name" "Linda Richardson" ถูกพิมพ์ทางคอนโซล
แปลง Dictionary เป็น JSON String
เมื่อคุณทำงานกับ Dictionary คุณอาจต้องการแปลงมันเป็น JSON string
นี่เป็นการดำเนินการทั่วไป เพราะ เมื่อคุณบันทึกค่า JSON ลงในไฟล์ มันต้องจัดรูปแบบเป็นสตริง เพื่อแปลง Dictionary เป็น JSON เราสามารถใช้เมธอด json.dumps()
สมมติว่าเราต้องการแปลง Dictionary ที่มีข้อมูลเกี่ยวกับพนักงานเป็น JSON string เราสามารถทำได้ด้วยโค้ดนี้:
import json
employee = {
"name": "Linda Richardson",
"id": 107,
"probation": false,
"department": "Sales"
}
employee_json = json.dumps(employee)
print(employee_json)
โค้ดของเราคืนค่า:
'{"name": "Linda Richardson", "id": 107, "probation": false, "department": "Sales"}'
แม้เอาต์พุทของโค้ดของเราจะดูเหมือน Dictionary ต้นฉบับของเรา Dictionary ของเราตอนนี้จัดเก็บเป็นสตริง
การจัดรูปแบบ JSON String
เมธอด json.dumps() มาพร้อมกับพารามิเตอร์บางตัวที่คุณสามารถใช้เพื่อให้สตริงสุดท้ายที่สร้างโดยเมธอดอ่านง่ายขึ้น
พารามิเตอร์ indent ช่วยให้คุณกำหนดจำนวนการเยื้องที่ปรากฏในสตริง JSON สุดท้าย สมมติว่าคุณต้องการเพิ่มการเยื้อง 4 ระดับต่อแต่ละบรรทัดในสตริง JSON ของคุณ คุณสามารถทำได้ด้วยคำสั่ง json.dumps() ต่อไปนี้:
employee_json = json.dumps(employee, indent=4)
คำสั่งนี้ เมื่อรวมกับตัวอย่างล่าสุดของเรา จะคืนค่า:
{
"name": "Linda Richardson",
"id": 107,
"probation": false,
"department": "Sales"
}
คุณยังสามารถเปลี่ยนตัวคั่นของข้อมูลในสตริง JSON ได้ ค่าเริ่มต้นสำหรับตัวคั่นคือ ", " และ ": " ซึ่งหมายความว่าทุกออบเจ็กต์จะถูกคั่นด้วยจุลภาค และทุกคีย์และค่าจะถูกคั่นด้วยทวิภาค
สมมติว่าเราต้องการให้คีย์และค่าของเราถูกคั่นด้วยเครื่องหมายเท่ากับ (=) และเราต้องการการเยื้อง 4 เราสามารถทำได้ด้วยคำสั่งนี้:
employee_json = json.dumps(employee, indent=4, separators=(", ", " = "))
โค้ดของเราคืนค่า:
{
"name" = "Linda Richardson",
"id" = 107,
"probation" = false,
"department" = "Sales"
}
ตามที่คุณเห็น ทุกคีย์และค่าในสตริง JSON ของเราตอนนี้ถูกคั่นด้วยเครื่องหมายเท่ากับ
อ่านไฟล์ JSON
เพื่ออ่านไฟล์ JSON ใน Python คุณสามารถใช้ json.load() เมธอดนี้รับพารามิเตอร์หนึ่งตัว: ไฟล์ออบเจ็กต์ที่คุณต้องการอ่านในโปรแกรมของคุณ
สมมติว่าเรามีไฟล์ชื่อ employee.json ที่เราต้องการโหลดเข้าโปรแกรมของเรา เนื้อหาของไฟล์นี้มีดังนี้:
{"name": "Linda Richardson", "id": 107, "probation": false}
เราสามารถทำได้ด้วยโค้ดนี้:
import json
with open('employee.json') as final_file:
employee = json.load(final_file)
print(employee)
โค้ดของเราคืนค่า:
{"name": "Linda Richardson", "id": 107, "probation": false}
ในโค้ดนี้ เรานำเข้าไลบรารี json ก่อน จากนั้นเราใช้คำสั่ง with เพื่ออ่านไฟล์ employee.json ของเรา เราใช้เมธอด json.load() เพื่อแปลงเนื้อหาของไฟล์ของเรา ที่จัดเก็บในตัวแปร file เป็น Dictionary จากนั้นเราพิมพ์ค่าของ Dictionary ของเรา
เขียน JSON ลงในไฟล์
คุณสามารถใช้เมธอด json.dump() เพื่อเขียน JSON ลงในไฟล์ใน Python
เมธอด json.dump() รับพารามิเตอร์สองตัว: Dictionary ที่คุณต้องการเขียนลงในไฟล์ และไฟล์ออบเจ็กต์ที่คุณต้องการเขียน Dictionary ของคุณ
สมมติว่าเราต้องการบันทึกเรคอร์ดของพนักงานของเราเป็นค่า JSON ในไฟล์ ชื่อไฟล์นี้ควรเป็น linda_employee.json เราสามารถทำได้ด้วยโค้ดต่อไปนี้:
import json
employee = {
"name": "Linda Richardson",
"id": 107,
"probation": false,
"department": "Sales"
}
with open('linda_employee.json', 'w') as final_file:
json.dump(employee, final_file)
มาแยกวิเคราะห์โค้ดของเรา แรก เรานำเข้าโมดูล json เข้าโปรแกรมของเรา จากนั้นเราประกาศตัวแปรที่จัดเก็บข้อมูลเกี่ยวกับพนักงานชื่อ Linda Richardson ในโครงสร้าง Dictionary
ต่อไป เราใช้คำสั่ง "with" พร้อมแฟล็ก "w" เพื่อเตรียมไฟล์ชื่อ linda_employee.json ซึ่งเราสามารถเขียนได้ เราจึงใช้ json.dump() เพื่อแปลง Dictionary employee ของเราเป็น JSON string และบันทึกลงในออบเจ็กต์ final_file ของเรา
เมื่อโปรแกรมนี้รัน เนื้อหาของ Dictionary employee ของเราจะถูกเขียนลงในไฟล์ linda_employee.json เนื้อหาสุดท้ายของไฟล์นี้คือ:
{"name": "Linda Richardson", "id": 107, "probation": false, "department": "Sales"}
สรุป
โมดูล json ของ Python ช่วยให้คุณอ่านและจัดการข้อมูล JSON
โดยใช้โมดูล json คุณสามารถ:
- อ่าน JSON จากไฟล์
- แปลง Dictionary เป็น JSON
- แปลง JSON เป็น Dictionary
- เขียน JSON string ลงในไฟล์
ในบทช่วยสอนนี้ เราสำรวจวิธีดำเนินการทั้งหมดนี้โดยใช้โมดูล json ตอนนี้คุณพร้อมที่จะเริ่มทำงานกับข้อมูล JSON ใน Python อย่างมืออาชีพแล้ว!