หลักสูตรการพัฒนา Python ขั้นสูง
บทที่
>
ระดับ

โมดูลการอนุกรมข้อมูล
โมดูล JSON

วัตถุประสงค์

ไปยังสถานีบริการและตรวจสอบให้แน่ใจว่าข้อมูลถูกจัดเก็บอย่างถูกต้องโดยใช้โมดูล JSON ในการจัดรูปแบบไฟล์

มีสถานีบริการทางตอนใต้ของอาคารภาคผนวกในพื้นที่ก่อสร้างใหม่ พื้นที่ทั้งหมดนี้จะถูกพัฒนาขึ้นใหม่เพื่อปลูกพืช สถานีนี้มีเทอร์มินัลหลากหลายที่ประมวลผลข้อมูลสำหรับการพัฒนาใหม่ เราสามารถเขียนข้อมูลด้วยมือ แต่จะใช้เวลามาก สำหรับกระบวนการจัดการข้อมูล เราสามารถใช้ JSON (ย่อมาจาก JavaScript Object Notation) ซึ่งเป็นรูปแบบข้อมูลที่ไม่ขึ้นกับภาษาโปรแกรม และจัดเก็บข้อมูลให้อ่านง่ายสำหรับการจัดเก็บและส่งข้อมูล

เพื่อใช้ JSON กับ Python เราสามารถใช้ import json ซึ่งจะทำให้เราสามารถเข้าถึงฟังก์ชันของ JSON ได้ สำหรับวัตถุประสงค์ของเรา เราจะใช้ฟังก์ชันต่อไปนี้:

  • json.loads(): แปลงสตริง JSON เป็นข้อมูลใน Python รับอาร์กิวเมนต์หนึ่งตัว คือสตริงที่คุณต้องการแปลงเป็น Python
  • json.dumps(): แปลงข้อมูล Python เป็นอ็อบเจ็กต์สตริง JSON ฟังก์ชันนี้สามารถรับอาร์กิวเมนต์ได้สูงสุดสี่ตัว (4) โดยมีเพียงตัวแรกเท่านั้นที่เป็นข้อบังคับในการใช้งาน ฟังก์ชันมีอาร์กิวเมนต์ดังนี้
    1. ข้อมูล Python ที่คุณต้องการแปลงเป็น JSON: สามารถเป็นประเภทข้อมูลดังต่อไปนี้: พจนานุกรม (dictionaries), รายการ (lists), ทูเพิล (tuples), สตริง (string), จำนวนเต็ม (integer), ทศนิยม (float), บูลีน (boolean), และ None
    2. indent: จำนวนช่องว่างที่คุณต้องการเพิ่มที่จุดเริ่มต้นของแต่ละข้อมูล
    3. separators: ส่วนที่คุณต้องการให้แสดงระหว่างและ/หรือตอนท้ายของข้อมูลแต่ละจุด
    4. sort_keys: จัดเรียงคีย์ในพจนานุกรมตามลำดับตัวอักษรหากคุณกำลังแปลงไฟล์ประเภทพจนานุกรม

เริ่มต้นโดยไปยังเครื่องหมาย X สีทองที่ฐานหน้าด้านซ้ายและหันหน้าไปที่โต๊ะพร้อมบันทึกข้อความ ใช้ฟังก์ชัน read() เพื่อตรวจสอบข้อมูลที่จำเป็นเพื่อยืนยันสถานะของเทอร์มินัลและจดบันทึกไว้ เดินไปยังเครื่องหมาย X สีอ่อนด้านหน้าของเทอร์มินัล จะมีคอนสแตนต์ชื่อ transmission ใช้ json.dumps() ในการจัดรูปแบบเป็น JSON เพื่อที่เราจะได้แปลงมัน เช่นนี้: transmission = json.dumps(transmission)

สร้างพจนานุกรมชื่อ load และเก็บค่าที่ได้จาก json.loads() โดยใช้คอนสแตนต์ transmission เป็นอาร์กิวเมนต์ วิธีนี้จะเปลี่ยน JSON ให้เป็นข้อมูล Python เพื่อให้เข้าถึงข้อมูลได้ง่าย ใช้ฟังก์ชัน speak() กับคีย์ที่ระบุไว้ในบันทึกข้อความ โดยใช้พจนานุกรม load ที่คุณสร้างขึ้น ตัวอย่างเช่น: player.speak(load["system"]) ทำเช่นนี้กับทุกคีย์

หลังจากตรวจสอบข้อมูลในเทอร์มินัลแล้ว ให้เดินลงไปยังสถานี เข้าไปข้างในและไปยังเครื่องหมาย X สีอ่อนบนพรมสีเขียว ตรวจสอบบันทึกข้อความด้วยฟังก์ชัน read() เช็คและจดบันทึกค่าต่างๆ ในตัวแก้ไขจะมีพจนานุกรมที่เขียนไว้ล่วงหน้า ชื่อ profile ให้เติมค่าที่ขาดหายไปด้วยข้อมูลจากบันทึกข้อความ

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

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

เพื่อจัดรูปแบบข้อมูล ให้เพิ่มอาร์กิวเมนต์ต่อไปนี้ในฟังก์ชัน: ใส่ red_data เพื่อแปลงคอนสแตนต์เป็น JSON, ใส่ indent และตั้งค่าเป็น 5 เพื่อจัดรูปแบบข้อความ, ใส่ separators และกำหนดเป็น ("- ", " = ") เพื่อเพิ่มสัญลักษณ์เหล่านี้ตอนท้ายแต่ละบรรทัด บรรทัดควรเป็นดังนี้: red_storage = json.dumps(red_data, indent=5, separators=("- ", " = ")) ใช้ฟังก์ชัน display() ที่เขียนไว้ล่วงหน้าและใส่สตริง JSON red_storage เพื่อจัดเก็บและแสดงข้อมูลที่จัดรูปแบบแล้ว

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

สำหรับอาร์กิวเมนต์: ใส่ blue_data เพื่อแปลงคอนสแตนต์เป็น JSON, ใส่ indent และตั้งค่าเป็น 4 เพื่อจัดรูปแบบข้อความ, ใส่ separators และกำหนดเป็น (".0", " = ") เพื่อเพิ่มสัญลักษณ์เหล่านี้ตอนท้ายแต่ละบรรทัด นอกจากนั้น ให้เพิ่มอาร์กิวเมนต์ sort_keys เป็นอาร์กิวเมนต์สุดท้ายและตั้งค่าเป็น True เช่นนี้: sort_keys=True ใช้ฟังก์ชัน display() ที่เขียนไว้ล่วงหน้าและใส่สตริง JSON blue_storage เพื่อจัดเก็บและแสดงข้อมูลที่เรียงลำดับแล้ว แล้วจึงจะจบเลเวล

หนังสือโค้ด