JSON→XML変換

JSON形式のデータをXMLに変換します。@attributesは要素の属性に、#textはテキスト内容に、配列は同名の兄弟要素に戻す規約でXML化し、ブラウザ上だけで完結して確認できます。姉妹ツールのXML→JSON変換とセットで使えます。

使い方のヒント

  • `@attributes` キーにオブジェクトを持たせると、そのオブジェクトの各プロパティが変換後の要素の属性になります。
  • `#text` キーは、属性や子要素と混在する要素のテキスト内容を表すために使います。属性を持たない単純な要素は文字列を直接値にするだけで構いません。
  • 同じキーに配列を持たせると、配列の各要素が同名の兄弟要素として繰り返し出力されます。
  • 値に `null` を指定すると、属性・テキスト・子要素を持たない空の自己終了タグ(``)になります。
  • このツールは姉妹ツールの「XML→JSON変換」の出力形式(ルート要素名をキーとするオブジェクト、トップレベルのキーは1つだけ)を入力として想定しています。

よくある質問

`@attributes` という名前のキーにオブジェクトを持たせると、そのオブジェクトの各プロパティが変換後のXML要素の属性になります。例えば `{"@attributes": {"category": "fiction"}}` は `category="fiction"` という属性に変換されます。

同じキーに配列を指定すると、配列の各要素が同名の兄弟要素として複数回出力されます。例えば `"book": [{"title": "A"}, {"title": "B"}]` は `` タグが2つ生成されるXMLに変換されます。

最も多い原因はJSONの構文エラー(カンマの過不足・クォート漏れ)です。またXMLはルート要素を1つだけ持つ必要があるため、トップレベルに複数のキーがあるJSONや、ルートが配列になっているJSONもエラーになります。

はい。サイト内の「XML→JSON変換」ツールが逆方向の変換に対応しています。同じ変換規約を採用しているため、双方向で行き来しても内容が保たれます。

本ツールは「XML→JSON変換」ツールの出力形式(`@attributes`・`#text`・配列・nullを使った規約)を前提としています。この規約に沿わない自由な形式のJSON(例: 数値や真偽値を多用したAPIレスポンスそのまま)は、意図通りのXML構造にならない場合があります。
ツールくん

余談ですが ― JSONからXMLへ「戻す」ときに気をつけたいこと

XMLからJSONへの変換は「情報の圧縮」に近い作業です。属性・テキスト・子要素という3種類の情報を持てるXMLに対し、JSONはキーと値の単純な対応関係しか持てないため、変換時に何らかの規約(本ツールでは `@attributes`/`#text`/配列/nullという4つの取り決め)を採用する必要があります。この規約さえ守られていれば、JSONからXMLへ「戻す」変換は機械的に一意に定まりますが、規約に沿わない自由形式のJSONを無理にXML化しようとすると、属性なのか要素なのかの区別がつかず、変換結果が期待と異なることがあります。

実務では、レガシーなXML APIをいったんJSONに変換してJavaScriptで加工し、再びXMLに戻して別システムに送信するという場面があります。例えばSOAP形式のWeb APIのレスポンスをJSONで扱いやすく加工した後、同じSOAP形式のリクエストとして送り返す必要がある場合などです。このような往復変換では、変換規約が一貫していることが何より重要で、途中で規約の異なるツールを挟むと、属性とテキストの対応関係が崩れてしまうことがあります。

本ツールが厳密に「トップレベルのキーは1つだけ」というルールを課しているのは、XML自体の仕様(ルート要素は必ず1つ)を反映したものです。もし複数のトップレベルキーを持つJSONを変換したい場合は、あらかじめ共通の親キー(例: `root`)でラップしてから本ツールに入力することで、単一ルート要素のXMLとして出力できます。