ไทย

เครื่องมือสำหรับนักพัฒนา · ตัวแปลงไวยากรณ์

เปรียบเทียบแบบจำลองข้อมูลสี่แบบ: เพราะเหตุใด JSON, YAML, TOML และ XML ไม่เคยแมป 1:1

· พื้นหลัง

ข้อมูลรูปแบบ json yaml

รูปร่างโมเดลข้อมูลที่แตกต่างกันสี่รูปแบบมาบรรจบกันที่ศูนย์กลางการแปลงที่มีข้อจำกัด
ภาพประกอบเวกเตอร์ต้นฉบับ ToolAcre

การแปลงระหว่างรูปแบบเหล่านี้ทุกครั้งจะสูญเสียไปในที่ใดที่หนึ่ง เนื่องจากแต่ละรูปแบบได้รับการออกแบบโดยใช้โมเดลข้อมูลที่แตกต่างกัน โพสต์นี้เปรียบเทียบระบบและโครงสร้างประเภท เพื่อให้คุณสามารถคาดการณ์ได้ว่า Conversion ใดจะคงอยู่และสิ่งใดที่จะลดลง

การกำหนดค่าที่ไม่ไปกลับ — ไฟล์ที่แปลงเป็นสามรูปแบบและฟิลด์ที่กลับมาแตกต่างกัน

อ็อบเจ็กต์ทั่วไปที่ประกอบด้วยตัวเลข สตริง บูลีน อาร์เรย์ และอ็อบเจ็กต์ที่ซ้อนกันที่ปลอดภัยสามารถรอดจากการทดสอบ JSON-to-YAML-to-JSON และ JSON-to-TOML-to-JSON การทดสอบ เพิ่มค่าว่างก่อน TOML, วันที่และเวลาจาก TOML, เนื้อหา XML แบบผสมหรือความคิดเห็น YAML และค่าหรือข้อมูลแหล่งที่มาบางส่วนมีการเปลี่ยนแปลง

คำถามที่เป็นประโยชน์ไม่ใช่ว่า Conversion สูญเสียไปทั่วโลกหรือไม่ เป็นคลาสอินพุตใดและทิศทางใดที่จะรักษาคุณสมบัติที่คุณต้องการ คำเตือนและการปฏิเสธของ ToolAcre ทำให้เมทริกซ์นั้นสามารถสังเกตได้ แทนที่จะลดทุกคู่ให้เหลือสัญญาทางการตลาดเดียว

การกำหนดค่าตัวแทนสามารถเดินทางไปกลับผ่านบางคู่ได้ แต่ไม่ใช่ทุกรูปร่างที่รองรับ

JSON จัดเตรียมค่าว่าง บูลีน ตัวเลข สตริง อาร์เรย์ และอ็อบเจ็กต์ในตัวแยกวิเคราะห์นี้ ไม่มีความคิดเห็น ประเภทวันที่เวลา หรือไวยากรณ์การอ้างอิงที่ใช้ร่วมกัน JavaScript แยกวิเคราะห์ตัวเลขเป็น IEEE-754 เพิ่มเป็นสองเท่า ดังนั้นจำนวนเต็มที่ไม่มีเครื่องหมายคำพูดอยู่แล้วซึ่งอยู่นอกเหนือช่วงที่ปลอดภัยอาจสูญเสียความแม่นยำก่อนที่ผู้เขียนคนอื่นจะเห็น

ปุ่มออบเจ็กต์คือสตริง และการเรียงลำดับเพิ่มเติมจะเปลี่ยนการนำเสนอ อาร์เรย์ยังคงเรียงลำดับ การแยกวิเคราะห์ที่เข้มงวดจะปฏิเสธความคิดเห็น เครื่องหมายจุลภาคต่อท้าย และโทเค็นตัวเลขที่ไม่สิ้นสุด ทำให้เกิดพื้นฐานที่กะทัดรัดสำหรับผู้อ่านรายอื่นๆ

โมเดลคุณค่าของ JSON ที่ใช้โดยการใช้งาน JavaScript นี้

ToolAcre ยอมรับ YAML ผ่าน JSON หรือสคีมาหลักแบบจำกัด จุดยึดและนามแฝงได้รับการแก้ไข ความคิดเห็นหายไป สตรีมกลายเป็นอาร์เรย์ คีย์ที่ซ้ำกันจะเก็บค่าสุดท้ายพร้อมคำเตือน และนามแฝงที่เรียกซ้ำหรือระเบิดจะถูกปฏิเสธ

แท็กที่กำหนดเอง ไบนารี การประทับเวลา ชุด ​​และตัวสร้างอ็อบเจ็กต์ภาษาจะถูกปฏิเสธ Core Infinity และ NaN กลายเป็นโมฆะในรูปแบบเป้าหมายพร้อมคำเตือน นี่เป็นชุดย่อยของระบบแท็กที่กว้างขึ้นของ YAML โดยเจตนา ไม่ใช่การอ้างสิทธิ์ในการสนับสนุนออบเจ็กต์ YAML ที่สมบูรณ์

ยอมรับโมเดล YAML แบบจำกัด ToolAcre

TOML เริ่มต้นด้วยตารางและรองรับสตริง, จำนวนเต็มที่ลงนาม, ทศนิยม, บูลีน, อาร์เรย์, ตาราง และชนิดชั่วคราวสี่ชนิด มันไม่มีค่าว่าง ToolAcre แปลงวันที่และเวลาเป็นสตริงที่มุ่งเน้นแหล่งที่มาและจำนวนเต็มกว้างเป็นสตริงทศนิยม แทนที่จะสูญเสียตัวเลข

เมื่อเขียน TOML คีย์อ็อบเจ็กต์ Null จะถูกละเว้น และรายการอาร์เรย์ Null จะกลายเป็นสตริงว่าง รูทอาร์เรย์และสเกลาร์ถูกปฏิเสธ ความคิดเห็นและตัวเลือกของผู้เขียนระหว่างส่วนหัว คีย์จุด และตารางอินไลน์จะไม่ส่งคืนผ่านค่าธรรมดา

ตารางรากของ TOML ค่าชั่วคราว และขอบเขตว่าง

XML ถูกฉายเป็นต้นไม้ที่มีแอตทริบิวต์ `@`, คีย์ลูกธรรมดา, `#text`, `#cdata`, อาร์เรย์พี่น้องที่ซ้ำกัน และคำนำหน้าเนมสเปซตามตัวอักษร ความคิดเห็น คำประกาศ และคำแนะนำในการประมวลผลจะถูกยกเลิก ตำแหน่งข้อความแบบผสมจะหายไป และไม่สามารถทราบตำแหน่งหนึ่งต่อหลายตำแหน่งได้ก่อนที่การซ้ำจะปรากฏขึ้น

ค่าจะอ่านเป็นสตริง เว้นแต่จะเลือกการอนุมาน ค่า Null ที่เขียนจาก JSON กลายเป็นองค์ประกอบว่าง และไม่สามารถแยกความแตกต่างจากสตริงว่างเมื่อส่งคืน ทุก DOCTYPE ถูกปฏิเสธ และชื่อที่ไม่ถูกต้องจะหยุดการทำให้เป็นอนุกรมแทนที่จะถูกเขียนใหม่

การฉายภาพ XML ของ ToolAcre: องค์ประกอบ คุณลักษณะ ข้อความ และคำนำหน้าตามตัวอักษร

เรือเก้าทิศทาง: JSON ถึง YAML, XML, TOML และ CSV; YAML ถึง JSON และ TOML; TOML ถึง JSON และ YAML; XML ถึง JSON ค่าธรรมดาที่มีรูปทรง JSON มีราคาที่ดีที่สุดระหว่าง JSON ถึง YAML TOML แนะนำวันที่และขอบเขตว่าง XML ต้องการการตั้งชื่อและแบบแผนหมวดหมู่โหนด

CSV มีค่าผิดปกติแบบคงที่และเอาต์พุตเท่านั้น อาร์เรย์หรือวัตถุที่เลือกจะกลายเป็นแถว เส้นทางที่ซ้อนกันจะราบลงในคอลัมน์จุด การผสานค่าว่างกับข้อความว่าง และสตริงที่มีลักษณะคล้ายสูตรจะถูกทำให้เป็นกลาง CSV-to-JSON, XML-to-TOML และคู่ที่ขาดหายไปอื่นๆ จะถูกปฏิเสธ แทนที่จะอนุมาน

เมทริกซ์ความเข้ากันได้สำหรับเก้าทิศทางที่จัดส่ง โดยมี CSV เป็นเอาต์พุตเท่านั้น

รูปแบบไบนารีและภาษาสคีมาอยู่นอกขอบเขต สคีมาสามารถคืนค่าจำนวนรายการหรือตรวจสอบรูปร่างทางธุรกิจได้ ในขณะที่การเข้ารหัสไบนารีแนะนำประเภทระดับไบต์และเฟรมที่ไม่ได้แสดงที่นี่ ตัวแปลงไม่เคยอ้างสิทธิ์ความสามารถเหล่านั้น

การแปลงไวยากรณ์ไม่ได้พิสูจน์ความถูกต้องของแอปพลิเคชัน ข้อความสั่งซื้อ YAML, XML หรือไฟล์โปรเจ็กต์ TOML ที่มีรูปทรง Kubernetes ที่สะอาดยังคงสามารถละเมิดสัญญาเป้าหมายได้ ใช้ตัวตรวจสอบโดเมนหลังจากตรวจสอบการแมปไวยากรณ์

ประเด็นสำคัญ: เลือกโมเดล จากนั้นเลือกไวยากรณ์ — และวิธีที่แผงตัวแปลงไวยากรณ์ช่วยให้คุณทดสอบการแปลงก่อนดำเนินการ

เลือกโมเดลข้อมูลก่อนที่จะเลือกเครื่องหมายวรรคตอน หากความคิดเห็นและนามแฝงมีความสำคัญ การกระโดด JSON จะไม่สามารถรักษาไว้ได้ หากค่าว่างมีความสำคัญ เอาต์พุต TOML จะเปลี่ยนค่านั้น หากการสั่งเนื้อหาแบบผสมมีความสำคัญ การฉายภาพ JSON แบบธรรมดาจะไม่เพียงพอ หากปลายทางเป็นตาราง การซ้อน JSON ต้องใช้แบบแผนการทำให้ราบเรียบอย่างชัดเจน

ใช้ ToolAcre เพื่อทดสอบเอกสารตัวแทนหนึ่งฉบับและอ่านคำเตือนทั้งหมด ผลลัพธ์คือหลักฐานเกี่ยวกับคู่ที่เป็นรูปธรรมและอินพุต ไม่อนุญาตให้เรียกการแปลงทั้งหมดแบบไม่สูญเสียหรือตัวแยกวิเคราะห์ที่สนับสนุนทุกตัวเสร็จสมบูรณ์

สร้างเอกสารตัวแทนจากขอบเขตที่สำคัญต่อบริการของคุณ: ค่าว่าง ข้อความว่าง ตัวระบุขนาดใหญ่ สตริงที่เหมือนวันที่ บันทึกซ้ำหนึ่งรายการ ความคิดเห็นหรือนามแฝงหาก YAML เกี่ยวข้อง และข้อความผสมหาก XML เกี่ยวข้อง เปรียบเทียบค่ามาตรฐานหลังจากการกระโดดแต่ละครั้งที่รองรับ และเก็บคำเตือนไว้กับผลลัพธ์ เมทริกซ์นั้นกลายเป็นส่วนช่วยในการตัดสินใจสำหรับโมเดลที่เลือก แทนที่จะเป็นการตั้งค่าที่คลุมเครือสำหรับไวยากรณ์ที่คุ้นเคย