JXON
Posted by Bruce Tsai
04/12/2016
在 XML 與 JSON 間無縫轉換
JXON 是 lossless JavaScript XML Object Notation 的縮寫,是使用 Javascript 語言的 syntax 來表示 XML 文件的資料。主要目的是要達到完整無失真的轉換,意即在 XML 與 JSON 之間做到完整轉換。JXON 在網路上並無一個明確的規範或標準,但若有對資料轉換上需求時,JXON 也不失為一個實用的方案。
XML 資料
<?xml version="1.0"?>
<!DOCTYPE catalog SYSTEM "catalog.dtd">
<catalog>
<product description="Cardigan Sweater">
<catalog_item gender="Men's">
<item_number>QWZ5671</item_number>
<price>39.95</price>
<size description="Medium">
<color_swatch image="red_cardigan.jpg">Red</color_swatch>
<color_swatch image="burgundy_cardigan.jpg">Burgundy</color_swatch>
</size>
<size description="Large">
<color_swatch image="red_cardigan.jpg">Red</color_swatch>
<color_swatch image="burgundy_cardigan.jpg">Burgundy</color_swatch>
</size>
</catalog_item>
<catalog_item gender="Women's">
<item_number>RRX9856</item_number>
<discount_until>Dec 25, 1995</discount_until>
<price>42.50</price>
<size description="Medium">
<color_swatch image="black_cardigan.jpg">Black</color_swatch>
</size>
</catalog_item>
</product>
<script type="text/javascript"><![CDATA[function matchwo(a,b) {
if (a < b && a < 0) { return 1; }
else { return 0; }
}] ]></script>
</catalog>
轉換後 JSON
{
"catalog": {
"product": {
"catalog_item": [{
"item_number": {
"keyValue": "QWZ5671"
},
"price": {
"keyValue": 39.95
},
"size": [{
"color_swatch": [{
"keyValue": "Red",
"keyAttributes": {
"image": "red_cardigan.jpg"
}
}, {
"keyValue": "Burgundy",
"keyAttributes": {
"image": "burgundy_cardigan.jpg"
}
}],
"keyValue": null,
"keyAttributes": {
"description": "Medium"
}
}, {
"color_swatch": [{
"keyValue": "Red",
"keyAttributes": {
"image": "red_cardigan.jpg"
}
}, {
"keyValue": "Burgundy",
"keyAttributes": {
"image": "burgundy_cardigan.jpg"
}
}],
"purchased": {
"keyValue": null
},
"keyValue": null,
"keyAttributes": {
"description": "Large"
}
}],
"keyValue": null,
"keyAttributes": {
"gender": "Men's"
}
}, {
"item_number": {
"keyValue": "RRX9856"
},
"discount_until": {
"keyValue": new Date(1995, 11, 25)
},
"price": {
"keyValue": 42.5
},
"size": {
"color_swatch": {
"keyValue": "Black",
"keyAttributes": {
"image": "black_cardigan.jpg"
}
},
"keyValue": null,
"keyAttributes": {
"description": "Medium"
}
},
"keyValue": null,
"keyAttributes": {
"gender": "Women's"
}
}],
"keyValue": null,
"keyAttributes": {
"description": "Cardigan Sweater"
}
},
"script": {
"keyValue": "function matchwo(a,b) {\n if (a < b && a < 0) { return 1; }\n else { return 0; }\n}",
"keyAttributes": {
"type": "text/javascript"
}
},
"keyValue": null
},
"keyValue": null
}