หลักสูตรการพัฒนาด้วย Python ขั้นสูง
บทที่
>
ระดับ
โมดูลการซีเรียลไลซ์
โมดูล JSON
วัตถุประสงค์
ไปยังสถานีบริการและตรวจสอบให้แน่ใจว่าข้อมูลถูกเก็บไว้อย่างถูกต้องโดยใช้โมดูล JSON เพื่อนำไฟล์มาจัดรูปแบบ
มีสถานีบริการทางตอนใต้ของอาคารแอนแนกซ์ในพื้นที่ก่อสร้างใหม่ พื้นที่นี้ทั้งหมดกำลังจะถูกพัฒนาใหม่เพื่อปลูกพืช สถานีนี้มีเทอร์มินัลหลายประเภทที่ประมวลผลข้อมูลสำหรับการพัฒนาที่ใหม่ เราสามารถเขียนข้อมูลด้วยมือนมือได้ แต่จะใช้เวลามาก ในกระบวนการจัดการข้อมูลเราสามารถใช้ JSON ซึ่งเป็นตัวย่อของ JavaScript Object Notation รูปแบบข้อมูลนี้เป็นอิสระจากภาษาโปรแกรมและเก็บข้อมูลในรูปแบบที่อ่านง่ายสำหรับการจัดเก็บและการส่งข้อมูล
เพื่อที่จะใช้ JSON กับ Python เราสามารถใช้ import json ซึ่งจะทำให้เราเข้าถึงฟังก์ชันของ JSON ได้ สำหรับวัตถุประสงค์ของเรา เราจะใช้งานฟังก์ชันดังต่อไปนี้:
json.loads(): แปลงสตริง JSON ให้เป็นข้อมูลของ Python รับอาร์กิวเมนต์หนึ่งตัว คือสตริงที่คุณต้องการแปลงเป็น Pythonjson.dumps(): แปลงข้อมูลของ Python ให้เป็นสตริง JSON ฟังก์ชันนี้สามารถรับอาร์กิวเมนต์ได้สูงสุดสี่ (4) ตัว โดยที่ตัวแรกเป็นข้อบังคับ ประกอบด้วย- ข้อมูลของ Python ที่คุณต้องการแปลงเป็น JSON: ซึ่งสามารถเป็นชนิดข้อมูลต่อไปนี้: dictionaries, lists, tuples, string, integer, float, boolean และ None
indent: จำนวนช่องว่างที่คุณต้องการเพิ่มในตอนเริ่มต้นของจุดข้อมูลseparators: ส่วนที่จะปรากฏระหว่างและ/หรือท้ายจุดข้อมูลsort_keys: จัดเรียงคีย์ของ dictionary ตามลำดับตัวอักษร หากคุณกำลังแปลงข้อมูลชนิด dictionary
เริ่มต้น ให้ไปยังเครื่องหมาย X สีทองที่ฐานป้อมที่อยู่ด้านซ้ายและหันไปยังโต๊ะที่มีบันทึกข้อความ ใช้ฟังก์ชัน read() เพื่อตรวจสอบข้อมูลที่จำเป็นสำหรับการยืนยันสถานะของเทอร์มินัลและจดบันทึกไว้ แล้วเดินไปยังเครื่องหมาย X สีอ่อนที่อยู่หน้าของเทอร์มินัล มีคอนสแตนต์ชื่อ transmission ใช้ json.dumps() เพื่อนำข้อมูลไปจัดรูปแบบเป็น JSON เพื่อให้เราสามารถแปลงได้ ดังนี้: transmission = json.dumps(transmission)
สร้าง dictionary ชื่อ load และเก็บค่าจาก json.loads() โดยใช้คอนสแตนต์ transmission เป็นอาร์กิวเมนต์ วิธีนี้จะแปลง JSON ให้เป็น Python เพื่อให้เข้าถึงข้อมูลได้ง่าย ใช้ฟังก์ชัน speak() พร้อมกับคีย์ที่ระบุไว้ในบันทึกข้อความ โดยใช้ dictionary load ที่คุณสร้างไว้ ตัวอย่างเช่น: player.speak(load["system"]) ทำเช่นนี้สำหรับทุกคีย์
หลังจากตรวจสอบข้อมูลบนเทอร์มินัลแล้ว ให้เดินไปทางสถานีบริการ เข้าภายในและไปยังเครื่องหมาย X สีอ่อนที่อยู่เหนือพรมสีเขียว ตรวจสอบบันทึกข้อความด้วยการใช้ฟังก์ชัน read() ตรวจสอบและจดบันทึกค่าไว้ ใน editor มี dictionary ที่เขียนไว้ล่วงหน้าเรียกว่า profile ให้เติมค่าส่วนที่หายไปด้วยข้อมูลในบันทึกข้อความ
เดินไปยังเครื่องหมาย X สีเข้มที่อยู่เหนือพรมสีเขียว หันไปยังเทอร์มินัลและสร้างตัวแปรชื่อ transfer แล้วเก็บค่าจาก json.dumps() โดยเพิ่ม dictionary profile เป็นอาร์กิวเมนต์เดียว ด้วยวิธีนี้ เราจะแปลง dictionary ให้เป็นสตริง JSON object ใช้ฟังก์ชัน display() ที่เขียนไว้ล่วงหน้าและเพิ่มสตริง JSON transfer เพื่อเก็บข้อมูลในเทอร์มินัล
เดินไปยังเครื่องหมาย X สีเข้มที่อยู่เหนือพรมสีแดงและใช้ฟังก์ชัน read() เพื่อตรวจสอบข้อมูลที่ได้ถูกป้อนลงในเทอร์มินัล ข้อมูลไม่ได้ถูกนำเสนอในรูปแบบที่ถูกต้อง เพื่อที่จะเก็บข้อมูลอย่างถูกต้อง ข้อมูลจำเป็นต้องถูกจัดเก็บและจัดรูปแบบในรูปแบบ JSON ข้อมูลถูกเก็บไว้ในคอนสแตนต์ dictionary ชื่อ 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 เพื่อเก็บและแสดงข้อมูลที่ถูกจัดเรียงแล้วและเสร็จสิ้นระดับ