JSON XML 変換器
ブラウザ上で JSON と XML を相互変換。日本語のキー名はそのまま要素名になり、空配列・入れ子の配列・XML 属性・混在テキストは場所を示して変換を止めます。
- ブラウザ内で処理
- データはブラウザ外に出ません
- 無料 · 登録不要
WeChat でスキャンしてシェア
例・詳しい説明・よくある質問 実際の出力つきの例、ほかのツールとの違い、よくある質問。
変換例
日本語のキー名
XML 1.0 の名前には漢字・ひらがな・カタカナも使えるため、キー名はそのまま要素名になります。テキスト中の < と & はエスケープされます。
{"会員": {"氏名": "山田太郎", "フリガナ": "ヤマダタロウ", "メモ": "A&B 社 <担当>"}}
<?xml version="1.0" encoding="UTF-8"?>
<root>
<会員>
<氏名>山田太郎</氏名>
<フリガナ>ヤマダタロウ</フリガナ>
<メモ>A&B 社 <担当></メモ>
</会員>
</root>
配列・null・空オブジェクト
配列はキー名の要素を繰り返し、トップレベルの配列は item を使います。null と {} はどちらも空要素になります。
[{"品番": "A-1", "在庫": 12}, {"品番": "B-7", "在庫": null}]
<?xml version="1.0" encoding="UTF-8"?>
<root>
<item>
<品番>A-1</品番>
<在庫>12</在庫>
</item>
<item>
<品番>B-7</品番>
<在庫></在庫>
</item>
</root>
JSON → XML が止まる場合
XML に合わせるためにキー名を書き換えたりデータを捨てたりはせず、XML を出力しないまま、最初に変換できない位置を表示します。
{"郵便 番号": "100-0001"}はXMLに変換できません: $["郵便 番号"]:この名前はXML要素名に使用できません。XML 名は空白を含められず、数字で始めることもできません。:を含む名前も、接頭辞に必要な名前空間宣言を書けないため止まります。IME で入った全角スペース(U+3000)も名前に使えない文字です。{"座標": [[139.76, 35.68], [135.50, 34.69]]}はXMLに変換できません: $["座標"][0]:空配列と入れ子の配列は繰り返しXML要素で表現できません。{"タグ": []}はXMLに変換できません: $["タグ"]:空配列と入れ子の配列は繰り返しXML要素で表現できません。
XML → JSON
<注文>
<番号>20261003-01</番号>
<明細>
<商品>ノート</商品>
<数量>3</数量>
</明細>
<明細>
<商品>ボールペン</商品>
<数量>10</数量>
</明細>
</注文>
整形出力をオンにすると次のようになります。
{
"注文": {
"番号": "20261003-01",
"明細": [
{
"商品": "ノート",
"数量": "3"
},
{
"商品": "ボールペン",
"数量": "10"
}
]
}
}
XML → JSON が止まる場合
<注文><明細 行="1">…</明細></注文>はJSONに変換できません: /注文/明細[1]/@行:このJSON変換規則ではXML属性を表現できません。<備考>お届けは<b>翌日</b>以降です</備考>はJSONに変換できません: /備考:このJSON変換規則ではテキストと子要素の混在を表現できません。
位置の番号は同じ名前の要素を 1 から数えたもので、明細[2] は親要素の下の 2 つ目の 明細 です。
制限
- XML → JSON の値はすべて文字列です。XML には数値や真偽値の型がないため、
<数量>3</数量>は“3”になります。空要素は""になるので、JSON のnullと{}は往復すると""になります。 - 子要素が 1 つか複数かで形が変わります。
明細が 1 つならオブジェクト、2 つ以上なら配列です。JSON を読むコードは両方を扱う必要があります。 - 子要素のない要素のテキストはそのまま残ります。前後の空白や改行も含みます。無視するのは子要素の間の空白だけです。コメントと処理命令は読み飛ばします。
- 属性・名前空間宣言・混在テキストは変換を止めます(上記参照)。
@idのような属性用キーへの変換はありません。 - XML の構文エラーはブラウザのパーサーのメッセージで、Chrome・Firefox・Safari で文言が異なります。変換せずに XML を整形・圧縮したい場合は XML フォーマッター を使ってください。
JSONとXML
JSONはREST APIとWebサービスで広く使われるデータ形式で、コンパクトで読みやすく、あらゆる言語で扱えます。 XMLはエンタープライズシステム、SOAP API、設定ファイル(Maven・Spring)、ドキュメント形式(SVG・XHTML・RSS)で今も広く使われています。 形式の違うシステムをつなぐとき、このツールで同じデータがもう一方の形式でどうなるか、どの構造が対応しないかを確認できます。
FAQ
JSON → XML の変換ルールは?
オブジェクトの各キーが同じ名前の子要素になり、値がテキストになります。配列は同名要素の繰り返しになり、null と空オブジェクトは空要素になります。キーが XML 名として使えない場合や、配列が空・入れ子の場合は XML を出力せず、最初の問題の位置(例:$["m"][0])を表示します。
XML → JSON の変換ルールは?
ブラウザ内蔵の DOMParser で XML を解析します。子要素のない要素は文字列に、子要素はオブジェクトのキーになり、同名の兄弟要素は配列にまとめます。ルート要素名がトップレベルのキーです。子要素の間の空白は無視し、コメントは読み飛ばし、CDATA はテキストとして扱います。
ルート要素とは何ですか?
XML はすべての内容を 1 つのルート要素で包む必要があります。JSON → XML ではこの名前(デフォルト: root)を使います。XML 名として正しい必要があり、"123 data" のような名前では変換が止まります。XML → JSON ではこのオプションを使わず、実際のルート要素名を使います。
XML属性は対応していますか?
対応していませんが、黙って捨てることもしません。XML → JSON は最初の属性で止まり、その位置(例:/catalog/book[1]/@id)を表示します。名前空間宣言(xmlns、xmlns:x)も属性です。変換したい場合は、先に属性を子要素に書き換えてください。JSON → XML が属性を出力することはありません。
データはサーバーに送信されますか?
いいえ。すべての変換はブラウザ内で完結します。データが外部に送信されることはありません。