เกี่ยวกับ JSON
JSON (JavaScript Object Notation) เป็นรูปแบบไฟล์และมาตรฐานการจัดเก็บข้อมูลที่ใช้คู่คีย์-ค่าในการจัดเก็บและแลกเปลี่ยนข้อมูล เป็นรูปแบบการแลกเปลี่ยนข้อมูลที่ใช้กันอย่างแพร่หลาย มักพบใน RESTful API ฐานข้อมูลขนาดเล็ก ไฟล์ปรับแต่ง และซอฟต์แวร์ออฟไลน์หรือออนไลน์อื่นๆ ที่ต้องการจัดเก็บ ดึงข้อมูล และแลกเปลี่ยนข้อมูล ภาษาโปรแกรมส่วนใหญ่มีไลบรารี่เพื่อแยกวิเคราะห์และเขียนข้อมูล JSON โดยค่าเริ่มต้น และ JSON เป็นรูปแบบข้อมูลไม่เชื่อเรื่องพระเจ้าของภาษาโปรแกรม ค่าที่เก็บไว้ในไฟล์ JSON หรือเพย์โหลดมักประกอบด้วยสตริง ตัวเลข และประเภทข้อมูลที่ทำให้ซีเรียลไลซ์ได้ เช่น รายการ (อาร์เรย์)
พจนานุกรม JSON และ Python
ข้อมูล JSON ใน python ถูกแปลงเป็นวัตถุพจนานุกรมโดยใช้วิธีการโหลด มักพบว่าบางคนถือเอาข้อมูล json และพจนานุกรมหลาม เนื่องจากไวยากรณ์ที่กำหนดทั้งสองแบบเกือบจะเหมือนกัน อย่างไรก็ตาม ข้อมูล json เป็นเพียงสตริงข้อความที่มีโครงสร้างในรูปแบบที่เข้มงวด ในขณะที่พจนานุกรม python เป็นวัตถุโครงสร้างข้อมูลที่จัดเก็บไว้ในหน่วยความจำ หากคุณต้องการเก็บข้อมูลพจนานุกรมในไฟล์ข้อความหรือส่งไปยังโปรแกรมอื่นที่ไม่ใช่ python คุณจะต้องแปลงเป็นสตริงข้อความ (ไบต์) ก่อน สตริงข้อความที่ถูกทิ้ง / แปลงนี้ถูกกำหนดในไวยากรณ์มาตรฐานของ JSON และกระบวนการแปลงพจนานุกรมหลามเป็นสตริงที่เข้ากันได้กับ json เรียกว่าการทำให้เป็นอนุกรม
การอ่านและการดัมพ์ข้อมูล JSON ใน Python
สามารถดึงข้อมูล JSON เป็นรูปแบบการตอบสนองของเซิร์ฟเวอร์ อ่านจากไฟล์ แยกส่วนจากพารามิเตอร์การสืบค้น URL และอื่นๆ บทความนี้จะเน้นไปที่การอ่านข้อมูล json จากไฟล์ที่จัดเก็บไว้ในเครื่องเป็นหลัก สมมติว่าไฟล์ test.json มีข้อมูลต่อไปนี้:
{'ชื่อรหัส': 'Eoan Ermine', 'เวอร์ชัน': 'Ubuntu 19.10'}
หากต้องการอ่านไฟล์ test.json ใน python คุณสามารถใช้โค้ดด้านล่าง:
นำเข้าjson
กับ เปิด ('test.json') เช่นNS:
ข้อมูล=เจสันโหลด(NS)
ทิ้ง=เจสันทิ้ง(ข้อมูล)
พิมพ์ (ข้อมูล)
พิมพ์ (พิมพ์(ข้อมูล))
พิมพ์ (ทิ้ง)
พิมพ์ (พิมพ์(ทิ้ง))
บรรทัดแรกในโค้ดด้านบนนำเข้าโมดูล json ในบรรทัดถัดไป เมื่อใช้ open เพื่ออ่านเนื้อหาไฟล์อย่างปลอดภัย ภายในบล็อก with open วิธี json.load ใช้เพื่ออ่านและจัดเก็บเนื้อหาไฟล์ในตัวแปรข้อมูล ข้อมูลที่โหลดในขั้นตอนก่อนหน้าจะถูกแปลงกลับเป็นสตริง json โดยใช้วิธี json.dump การรันโค้ดด้านบนจะแสดงผลลัพธ์ต่อไปนี้:
{'รหัสชื่อ':'อีออน เออร์มีน', 'รุ่น':'อูบุนตู 19.10'}<ระดับ 'ดิก'>
{'รหัสชื่อ':'อีออน เออร์มีน', 'รุ่น':'อูบุนตู 19.10'}
<ระดับ 'str'>
โปรดสังเกตในผลลัพธ์ด้านบนว่าเมธอด json.load อ่านข้อมูล json แบบ raw ลงในพจนานุกรม python ในขณะที่เมธอด json.dumps จะแปลงพจนานุกรมเป็นสตริงที่เข้ากันได้กับโครงสร้าง JSON เมื่อวัตถุ JSON ถูกแปลงเป็นวัตถุพจนานุกรมหลาม คุณสามารถใช้เมธอดพจนานุกรมหลามในตัวเพื่อจัดการข้อมูลได้ ตัวอย่างข้างต้นค่อนข้างเรียบง่ายและไม่รวมอาร์เรย์ในข้อมูล JSON หรือค่าที่ซ้อนกัน อย่างไรก็ตาม ภายใน python คุณสามารถจัดการค่าเหล่านี้ได้เช่นเดียวกับพจนานุกรมและรายการอื่นๆ ที่ซ้อนกัน
การเรียงลำดับและการพิมพ์ข้อมูล JSON ให้สวยงาม
เมธอด json.dump รองรับพารามิเตอร์ทางเลือกบางตัวสำหรับการเรียงลำดับคีย์และการพิมพ์เอาต์พุตเพื่อให้อ่านง่ายขึ้น
นำเข้าjsonกับ เปิด ('test.json') เช่นNS:
ข้อมูล=เจสันโหลด(NS)
ทิ้ง=เจสันทิ้ง(ข้อมูล,sort_keys=จริง,เยื้อง=4)
พิมพ์ (ทิ้ง)
รหัสด้านบนจะแสดงผลลัพธ์ต่อไปนี้:
{'ชื่อรหัส': 'Eoan Ermine',
'เวอร์ชัน': 'Ubuntu 19.10'
}
การแปลงประเภทข้อมูล
รายการด้านล่างแสดงให้เห็นว่าค่า JSON ถูกแปลงเป็นอ็อบเจ็กต์หลามอย่างไร และในทางกลับกัน
JSON | Python |
สตริง | NS |
ตัวเลข | int หรือ float |
ถูกผิด | ถูกผิด |
โมฆะ | ไม่มี |
อาร์เรย์ | รายการ |
วัตถุ | dict |
โมดูลบรรทัดคำสั่ง Json.tool
Python มียูทิลิตีบรรทัดคำสั่งที่ดี json.tool ที่สามารถใช้เพื่อตรวจสอบและพิมพ์สตริงและไฟล์ JSON ที่สวยงาม
$ echo'{'codename': 'Eoan Ermine', 'เวอร์ชัน': 'Ubuntu 19.10'}'| python3 -m jsonเครื่องมือการรันคำสั่งด้านบนจะแสดงผลลัพธ์ต่อไปนี้:
{'ชื่อรหัส': 'Eoan Ermine',
'เวอร์ชัน': 'Ubuntu 19.10'
}
คุณยังสามารถใช้ json.tool กับไฟล์ JSON ได้อีกด้วย แทนที่ in_file และ out_file ในคำสั่งด้านล่างด้วยค่าที่คุณต้องการ:
$ python3 -m jsonเครื่องมือin_file out_fileนอกเหนือจากการพิมพ์ การเรียงลำดับ และตรวจสอบความถูกต้องของข้อมูล JSON แล้ว json.tool ไม่ได้ดำเนินการอย่างอื่น ดังนั้น หากคุณต้องการจัดการข้อมูล JSON คุณต้องเขียนโค้ดที่กำหนดเองโดยใช้โมดูล JSON ในตัว