← เครื่องมือทั้งหมด

แปลง JSON เป็น XML

แปลง JSON เป็น XML และ XML เป็น JSON ทันทีในเบราว์เซอร์ โลคอลและส่วนตัว พร้อมหมายเหตุเกี่ยวกับ attributes, arrays, namespaces และข้อควรระวัง

JSON เป็น XML และกลับมา: โปรแกรมแปลงเชิงปฏิบัติสำหรับสองโลกข้อมูล

นักพัฒนาส่วนใหญ่ทำงานกับทั้ง XML และ JSON ไม่ว่าจะต้องการหรือไม่ Web API สมัยใหม่พูด JSON เกือบพิเศษ แต่ทันทีที่คุณแตะธนาคาร บริษัทประกัน Endpoint ของรัฐบาล ERP ขององค์กร หรือบริการ SOAP เก่า XML ก็ปรากฏขึ้นอีก โปรแกรมแปลง JSON เป็น XML บนหน้านี้เปลี่ยน JSON เป็น XML และ XML กลับเป็น JSON โดยตรงในเบราว์เซอร์ของคุณ คุณจึงสามารถเคลื่อนระหว่างสองฟอร์แมตนี้ได้โดยไม่ต้องคัดลอก Payload ที่ละเอียดอ่อนเข้าสู่บริการระยะไกล

วงเล็บ JSON เรืองแสงแบบซ้อนกำลังแปลงเป็นต้นไม้ของ XML Tag ที่มีวงเล็บสี่เหลี่ยมบนพื้นหลังสีอินดิโกเข้ม
Object JSON และต้นไม้ XML Tag อธิบายข้อมูลเดียวกันในรูปแบบต่างกัน

XML และ JSON คืออะไรกันแน่

XML (Extensible Markup Language) เป็นฟอร์แมต Markup ที่สร้างรอบ Tag แบบซ้อน Attribute และ Namespace มันถูกออกแบบสำหรับเอกสารและการแลกเปลี่ยนข้อมูลที่มีโครงสร้าง และมีกลไกมากมาย ได้แก่ Schema (XSD), Namespace, Processing Instruction, คอมเมนต์, CDATA Section และการประกาศอย่างเป็นทางการที่ด้านบน ความสมบูรณ์นั้นคือเหตุผลที่ XML ยังคงครองในระบบ Legacy และองค์กร คุณพบมันใน SOAP Web Service, RSS และ Atom Feed, ไฟล์การกำหนดค่า (Spring, Maven, .NET app config), ฟอร์แมตเอกสาร Office และมาตรฐานการส่งข้อความทางการเงินอย่าง SWIFT และ ISO 20022 ที่ธนาคารและบริษัทประกันยังคงแลกเปลี่ยน XML ทุกวัน

JSON (JavaScript Object Notation) ง่ายกว่ามาก Object พร้อมคู่ Key/Value, Array, String, ตัวเลข, Boolean และ null มันแมปเกือบหนึ่งต่อหนึ่งกับโครงสร้างข้อมูลของเกือบทุกภาษาโปรแกรม ซึ่งเป็นสาเหตุที่มันเข้ายึด Web API สมัยใหม่, REST Endpoint, แอปมือถือ และไฟล์ Config อย่าง package.json JSON มักมีขนาดเล็กกว่า XML ที่เทียบเท่า 30 ถึง 50 เปอร์เซ็นต์และ Parse เร็วกว่าอย่างเห็นได้ชัด ส่วนหนึ่งเพราะมันทิ้ง Closing Tag และกลไก Attribute ที่ทำให้ XML ยาว

ความแตกต่างสำคัญที่มีผลต่อการแปลง

สองฟอร์แมตทับซ้อนกันพอที่จะแมปกัน แต่ไม่สะอาด ความแตกต่างโครงสร้างไม่กี่อย่างทำให้เกิดแรงเสียดทานเกือบทั้งหมด:

  • Attribute กับ Child Node XML แยกแยะระหว่าง <user id="1"> (Attribute) และ <user><id>1</id></user> (Element ลูก) JSON ไม่มีแนวคิดนั้น ดังนั้นโปรแกรมแปลงจึงประดิษฐ์ขึ้นมา ตามแบบแผน Attribute จะถูกพับเข้า Key อย่าง @attributes หรือมี Prefix @ ขณะที่ข้อความ Element อยู่ใน Key อย่าง #text
  • Array JSON มี Array แบบ Native XML ไม่มี รายการใน XML คือ Tag เดิมที่ซ้ำกัน เหมือน Element <item> สามตัวติดกัน โปรแกรมแปลงต้องอนุมานว่า Sibling ที่ซ้ำกันควร Collapse เป็น JSON Array เมื่อใด และเมื่อใด Element เดียวควรเป็น Object ธรรมดา
  • Namespace XML ใช้ Namespace (Prefix xmlns:soap) เพื่อหลีกเลี่ยงการชนชื่อข้าม Schema JSON ไม่มีเทียบเท่า ดังนั้น Prefix จะอยู่รอดเป็นอักขระตัวอักษรใน Key หรือถูกลบออก
  • ความละเอียดและ Metadata XML สามารถแนบ Metadata ไปยัง Node ผ่าน Attribute; JSON แสดงทุกอย่างเป็น Key และ Value นั่นทำให้ JSON กะทัดรัดและอ่านง่ายกว่า ขณะที่ XML รักษาพลังการ Validate ผ่าน XSD Schema

สิ่งที่ควรระวังในการแปลง

การ Round-trip JSON เป็น XML เป็น JSON และคาดหวังผลลัพธ์เหมือนกันคือความผิดพลาดคลาสสิก การแปลงมีการสูญเสียในทั้งสองทิศทาง เว้นแต่คุณควบคุมกฎ จำสิ่งเหล่านี้ไว้:

  • Attribute ถูกทำให้เสียรูป เมื่อแปลง JSON เป็น XML เครื่องมือต้องมีกฎว่า Key ไหนกลายเป็น Attribute เทียบกับ Element เมื่อไปอีกทาง Attribute ต้องลงจอดที่ไหนสักที่ และ "ที่ไหนสักที่" นั้น (Prefix @, บล็อก @attributes) แตกต่างกันระหว่าง Library หาก Parser ปลายทางคาดหวัง Convention ต่างกัน ข้อมูลดูผิดแม้ว่าไม่มีอะไรหายไป
  • Element เดียวกับ Array Feed XML ที่มี <item> หนึ่งตัวสร้าง JSON Object; Feed เดียวกันที่มีสองตัวสร้าง JSON Array โค้ดที่สันนิษฐาน Array จะพังกับกรณี Element เดียว นี่เป็นแหล่งที่มาทั่วไปของ Bug การ Parse RSS และ SOAP
  • Namespace รั่วหรือหายไป ขึ้นอยู่กับเครื่องมือ soap:Body อาจกลายเป็น Key ที่มีชื่อตรงๆ ว่า soap:Body หรือ Prefix อาจถูกลบออกทั้งหมด เปลี่ยนความหมายของเอกสาร
  • เนื้อหาแบบผสมและชนิดข้อมูล XML ถือทุกอย่างเป็นข้อความ ดังนั้นค่าอย่าง true หรือ 42 อาจยังเป็น String หลังแปลงเป็น JSON ขณะที่ทิศทางตรงข้ามไม่มีที่สำหรับคอมเมนต์หรือ CDATA
ต้นไม้ข้อมูลที่มีโครงสร้างสองต้นเชื่อมกันด้วย Node Markup นามธรรมที่ทำจากแสง Cyan และทอง
การแมประหว่างฟอร์แมตหมายถึงการตัดสินใจว่า Attribute, Array และ Namespace แปลงอย่างไร

ทำไมการแปลงเฉพาะในเครื่องจึงสำคัญ

JSON และ XML Payload มักเป็นสิ่งที่ละเอียดอ่อนที่สุดที่นักพัฒนาจัดการ ได้แก่ API Response พร้อม Token, SOAP Message พร้อมหมายเลขบัญชี, ไฟล์ Config พร้อม Credential โปรแกรมแปลงที่ทำงานในเบราว์เซอร์ไม่อัปโหลดสิ่งใดเลย การ Parse และ Serialize เกิดขึ้นบนเครื่องของคุณ ไม่มีการส่งไปยังเซิร์ฟเวอร์ และคุณสามารถใช้เครื่องมือออฟไลน์เมื่อเพจโหลดแล้ว สำหรับการ Debug ข้อมูล Production หรืออะไรก็ตามภายใต้ระบอบการปฏิบัติตาม นั่นคือความแตกต่างระหว่างการตรวจสอบที่ปลอดภัยรวดเร็วและการรั่วไหลข้อมูลโดยไม่ตั้งใจ

หากต้องการทำความสะอาดผลลัพธ์หลังจากนั้น ใช้คู่กับ ตัวแปลงข้อมูล อื่นๆ ของเรา หรือจัดระเบียบ Output ด้วย JSON Formatter ก่อนส่งให้เครื่องมือถัดไปใน Pipeline ของคุณ

คำถามที่พบบ่อย

โปรแกรมแปลงอัปโหลด JSON หรือ XML ของฉันหรือไม่?

ไม่ ทั้ง JSON เป็น XML และ XML เป็น JSON ทำงานทั้งหมดในเบราว์เซอร์ของคุณ ข้อมูลของคุณไม่เคยออกจากอุปกรณ์และเครื่องมือทำงานออฟไลน์หลังจากเพจโหลด

XML Attribute ถูกจัดการอย่างไรเมื่อแปลงเป็น JSON?

XML Attribute จะถูกวางใน Key เฉพาะ โดยทั่วไปมี Prefix ด้วย At Sign หรือจัดกลุ่มใต้ Attribute Block เนื่องจาก JSON ไม่มีแนวคิด Attribute แบบ Native เนื้อหาข้อความ Element จะถูกเก็บแยกกันเพื่อให้ทั้งคู่อยู่รอดการแปลง

ทำไม XML Element เดียวของฉันถึงกลายเป็น Object แทนที่จะเป็น Array?

XML ไม่มี Array แบบ Native ดังนั้นรายการคือ Tag ที่ซ้ำกันเท่านั้น เมื่อมีเพียง Element เดียว โปรแกรมแปลงไม่สามารถแยกแยะจาก Object ธรรมดาได้ จึงกลายเป็น Object สอง Sibling ขึ้นไปที่มีชื่อ Tag เดียวกัน Collapse เป็น JSON Array

XML Namespace อย่าง soap หรือ xmlns จะเกิดอะไรขึ้น?

JSON ไม่มีเทียบเท่า XML Namespace ขึ้นอยู่กับการแปลง Prefix จะถูกเก็บเป็นข้อความตัวอักษรใน Key หรือถูกลบออก ตรวจสอบ Output หาก Consumer ปลายทางของคุณพึ่งพา Namespace Prefix

ฉันสามารถแปลง JSON กลับเป็น XML และได้เอกสารต้นฉบับหรือไม่?

ไม่เสมอ การแปลงมีการสูญเสียในทั้งสองทิศทาง เพราะฟีเจอร์ XML อย่างคอมเมนต์, CDATA และความแตกต่างระหว่าง Attribute กับ Element ไม่มีคู่ที่สะอาดใน JSON การ Round-trip ทำงานได้ดีที่สุดเมื่อคุณควบคุมกฎการตั้งชื่อทั้งสองฝั่ง

XML ยังถูกใช้ที่ไหนเมื่อเปรียบกับ JSON?

XML อยู่ในระบบ Legacy และองค์กร ได้แก่ SOAP Web Service, RSS และ Atom Feed, ไฟล์การกำหนดค่า และการส่งข้อความทางการเงินอย่าง SWIFT และ ISO 20022 JSON ครองใน Web API สมัยใหม่, REST Endpoint และแอปมือถือ