เครื่องมือ
TH

แปลง XML เป็น JSON

วาง XML แล้วได้ JSON ทันที แอตทริบิวต์ ข้อความ และอิลิเมนต์ที่ซ้ำจะถูกแปลงด้วยกฎที่เรียบง่ายและคาดเดาได้ พร้อมตัวเลือกสำหรับควบคุม array ชนิดของค่า และ prefix ของ namespace

XML

JSON

เป็นส่วนตัว: ข้อมูลของคุณถูกประมวลผลในเบราว์เซอร์ และไม่มีการอัปโหลดไปที่ใดเลย

วิธีแปลง XML เป็น JSON

  1. วาง XML ลากไฟล์ .xml มาวางในเอดิเตอร์ หรือโหลดจาก URL แล้ว JSON จะแสดงขึ้นทันทีขณะพิมพ์
  2. ปรับคำนำหน้าแอตทริบิวต์และคีย์ของข้อความ แล้วเลือกว่าจะใช้ array เสมอ แปลงตัวเลขและค่า boolean หรือละเว้น prefix ของ namespace หรือไม่
  3. คัดลอก JSON หรือดาวน์โหลดเป็นไฟล์ .json

XML ถูกแปลงเป็น JSON อย่างไร

XMLJSON
<name>Ada</name>"name": "Ada"
<price>9.90</price>"price": 9.90 – คงตัวเลขไว้ทุกหลักตามต้นฉบับ
<item id="7">Pen</item>"item": {"@id": 7, "#text": "Pen"}
<tag>a</tag><tag>b</tag>"tag": ["a", "b"]
<note/>"note": null
<![CDATA[a < b]]>ข้อความ "a < b"
<soap:Body> เมื่อเปิด ละเว้น prefix ของ namespace"Body"

ทำไมตัวเลือก “ใช้ array เสมอ” จึงสำคัญ

อิลิเมนต์ที่ปรากฏครั้งเดียวจะกลายเป็นค่าเดี่ยว แต่ถ้าปรากฏสองครั้งจะกลายเป็น array โค้ดที่อ่าน JSON จึงต้องรองรับทั้งสองรูปแบบ – เป็นบั๊กคลาสสิกเมื่อบางครั้งรายการมีเพียงรายการเดียว ติ๊ก ใช้ array สำหรับอิลิเมนต์ลูกเสมอ เพื่อให้ได้ array ทุกที่: โครงสร้างจะคาดเดาได้ แลกกับวงเล็บที่เพิ่มขึ้นเล็กน้อย

แปลง XML เป็น JSON ด้วยโค้ด

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

การแปลงทำให้ข้อมูลสูญหายหรือไม่?

ชื่ออิลิเมนต์ แอตทริบิวต์ และข้อความจะถูกเก็บไว้ครบ และตัวเลขคงทุกหลักไว้ตามเดิม แต่คอมเมนต์ processing instruction และตำแหน่งของข้อความที่อยู่ระหว่างอิลิเมนต์ลูก (mixed content) ไม่สามารถแสดงใน JSON ได้

แปลง JSON กลับเป็น XML ได้หรือไม่?

ได้ ด้วยเครื่องมือแปลง JSON เป็น XML ของ JSON Formatter เว็บไซต์ในเครือของเรา ซึ่งใช้หลักการ @ และ #text แบบเดียวกัน

namespace จะเป็นอย่างไร?

โดยค่าเริ่มต้น ชื่อที่มี prefix เช่น soap:Body จะถูกใช้เป็นคีย์ตามเดิม และการประกาศ xmlns จะแสดงเป็นแอตทริบิวต์ ติ๊ก ละเว้น prefix ของ namespace เพื่อให้ได้ชื่อธรรมดาอย่าง Body โดยไม่มีการประกาศเหล่านั้น

ทำไมค่าบางค่าจึงเป็น string แทนที่จะเป็นตัวเลข?

ค่าอย่าง 007 หรือ 1,000 ไม่ใช่เลขฐานสิบธรรมดา จึงคงเป็น string ไว้เพื่อป้องกันข้อมูลสูญหาย ยกเลิกการติ๊ก แปลงตัวเลขและ true/false หากต้องการให้ทุกค่าเป็น string