เครื่องมือสำหรับนักพัฒนา · ตัวแปลงไวยากรณ์
เปรียบเทียบแบบจำลองข้อมูลสี่แบบ: เพราะเหตุใด JSON, YAML, TOML และ XML ไม่เคยแมป 1:1
· พื้นหลัง
ข้อมูลรูปแบบ json yaml
การแปลงระหว่างรูปแบบเหล่านี้ทุกครั้งจะสูญเสียไปในที่ใดที่หนึ่ง เนื่องจากแต่ละรูปแบบได้รับการออกแบบโดยใช้โมเดลข้อมูลที่แตกต่างกัน โพสต์นี้เปรียบเทียบระบบและโครงสร้างประเภท เพื่อให้คุณสามารถคาดการณ์ได้ว่า 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 เกี่ยวข้อง เปรียบเทียบค่ามาตรฐานหลังจากการกระโดดแต่ละครั้งที่รองรับ และเก็บคำเตือนไว้กับผลลัพธ์ เมทริกซ์นั้นกลายเป็นส่วนช่วยในการตัดสินใจสำหรับโมเดลที่เลือก แทนที่จะเป็นการตั้งค่าที่คลุมเครือสำหรับไวยากรณ์ที่คุ้นเคย