変換 JSON → XML
JSON を XML に変換する
JSON データを XML 形式に書き出す方法です。属性とテキスト、ルート要素の扱い方を解説します。
解説
JSON から XML への変換は、JSON にない概念 (属性・名前空間・DOCTYPE) を JSON 側でどう表現していたかに依存します。`@key` を属性、`#text` をテキストとする規約があれば、それに沿って展開します。配列は同名要素の繰り返しになります。 ルート要素も決め方が要ります。トップが配列や複数キーのオブジェクトなら、<root> や <items> のようなラッパー要素で包みます。SOAP / レガシー XML API への投入、RSS / Atom フィード生成が主な用途です。
サンプル入力(JSON)
{
"users": {
"user": [
{ "@id": "1", "name": "alice" },
{ "@id": "2", "name": "bob" }
]
}
} サンプル出力(XML)
<users>
<user id="1">
<name>alice</name>
</user>
<user id="2">
<name>bob</name>
</user>
</users> 使うときのコツ
- · ルートが配列の JSON はそのまま XML 化できないので、明示的にラッパー要素を追加する
- · 数値・真偽値は文字列として埋め込まれる(XML には型がないため)
- · XML 宣言 <?xml version="1.0" encoding="UTF-8"?> を先頭に付けるかは仕様次第
よくある質問
▶ JSON のキーに XML で禁止された文字(数字始まり等)があったら?
XML の要素名はアルファベット・アンダースコア始まりに限られます。数字始まりや空白を含むキーはそのままでは XML 要素名にできないので、置換するか属性として扱う必要があります。
▶ 属性とテキスト要素の使い分けは?
メタ情報(id / type など短い識別子)は属性、コンテンツやネストは要素にするのが慣習です。SOAP では attribute 多用、RSS では要素多用と仕様により異なります。
▶ 名前空間(xmlns)はどう付与する?
ルート要素に xmlns="..." を追加します。本ツールでは自動付与しないので、出力後に手動で挿入してください。
▶ JSON の null は XML でどう表現?
標準的な慣習はなく、空要素 `<key/>` か xsi:nil="true" 属性が使われます。受け取り側の仕様に従ってください。
▶ JSON 配列はどう変換される?
同名要素を繰り返す形にします。例: `"items": [1,2,3]` → `<items>1</items><items>2</items><items>3</items>`。命名は親要素+単数形のラッパーを使うこともあります。
▶ DOCTYPE や XSD はどうする?
JSON にこれらに相当する情報がないので、変換時には付与されません。受け取り側で要求される場合は別途追加してください。
関連ツール
JSON フォーマッタ
JSON を整形・圧縮・キーソートします。