JSON から XML への変換

左側に JSON を貼り付けると、右側に整形された XML が表示されます。@_ プレフィックスのキーは属性になります。アップロードなし。

  1. 左側のテキストエリアに JSON を貼り付けます。
  2. 「XML に変換」をクリック。JSON キーは要素になります;@_キーは属性になります。
  3. 整形された XML をコピーまたはダウンロードします。
  4. データを単一のルートキーで包んでください — XML はトップレベル要素を 1 つだけ要求します。
何ができるのか?

fast-xml-parser の規約を使って JSON オブジェクトを XML に変換します。オブジェクトプロパティは子要素になり、`@_` プレフィックス付きのプロパティは親の属性になり、配列は同じタグ名の繰り返し兄弟要素になります。数値、ブール、文字列はテキストコンテンツとして出力されます。出力は読みやすさのためインデントされます。

JSON 入力:

{
  "root": {
    "@_version": 1,
    "name": "Ada",
    "tags": ["math", "logic"]
  }
}

XML 出力:

<root version="1">
  <name>Ada</name>
  <tags>math</tags>
  <tags>logic</tags>
</root>

JSON から XML のよくある落とし穴

XML は JSON よりも構造に厳格です。以下のパターンが多くの予想外の出力をカバーします。

  • 単一ルートがない。 XML は厳密に 1 つのルート要素を必要とします。複数のトップレベルキーを持つ JSON オブジェクトは複数のルートを生成し、無効な XML となります。入力を 1 つのキーで包んでください: `{"root": {"a":1, "b":2}}`。
  • トップレベルが配列。 JSON 配列 `[{"a":1},{"a":2}]` には使用するルート要素名がありません。包んでください: `{"items": [{"a":1},{"a":2}]}`。各配列エントリはその後 `<items>` 要素になります。
  • スペースや記号を含む要素名。 XML 要素名にはスペースを含めることや、数字で始めること、`:`, `/`, `<` などを含めることはできません。変換前に JSON キーをサニタイズしてください — スペースを `_` に置き換え、数字には文字を前置してください。
  • 属性 vs. 要素。 JSON キー `id` は子要素 `<id>1</id>` になります。属性 (`<user id="1">`) にするには、キーに `@_` をプレフィックスしてください: `{"user":{"@_id":1}}`。プレフィックスは出力時に取り除かれます。
  • null 値。 JSON `null` は空要素 (`<x/>`) になります。完全に省略する必要があるなら、変換前に JSON から null 値を削除してください。
  • テキスト内の特殊文字。 XML は `<`、`>`、`&`、`"`、および `\'` を自動的にエスケープします。JSON 文字列 `"<b>hi</b>"` はテキスト `&lt;b&gt;hi&lt;/b&gt;` になり、ネストされた要素にはなりません。実際にネストしたいなら、中間の JSON 構造を使ってください。
よくある質問

XML 宣言 `<?xml version="1.0"?>` を取得するには?

出力に自分で先頭追加してください — コンバータは宣言を出力しません。UTF-8 XML の場合、宣言は技術的にはオプションですが一般的に含まれます: `<?xml version="1.0" encoding="UTF-8"?>` の後に変換された XML です。

JSON 配列は繰り返し要素として保持されますか?

はい。`{"tags":["a","b"]}` は `<tags>a</tags><tags>b</tags>` になります — 同じタグを持つ 2 つの兄弟要素で、これが繰り返し値の標準的な XML 表現です。

XML で JSON スタイルのネストされた配列を取得できますか?

直接はできません。XML には配列のネイティブ概念がなく、繰り返し兄弟要素のみです。JSON のネストされた配列はよりフラットな XML 構造になり、コンテキストがグルーピングを決定します。このツールを通した XML → JSON → XML のラウンドトリップはラウンドトリップ可能なサブセットを保持します。

日付はどう扱われますか?

JSON には Date 型がありません — 日付は通常すでに ISO 8601 文字列です。これらは要素のテキストコンテンツとして変更なしに出力されます。下流の XML が特定の日付フォーマットを期待するなら、JSON でそのフォーマットを使うようにしてください。

私の JSON はアップロードされますか?

いいえ。すべてはあなたのブラウザで実行されます — あなたの入力はこのページの JavaScript で解析・変換され、サーバーに送信されることはありません。

JSON → XML → JSON のラウンドトリップはデータを保持しますか?

@_ 属性規約付きの典型的な構造化データなら、はい — 意味的には。一部のエッジケース (混合テキスト + 子要素、属性順序 vs. 要素順序) は正規化される可能性があります。バイト単位の正確な等価性が重要なら、XML を介してラウンドトリップしないでください。