ToolDeck

JSONからXMLコンバーター

JSONをXML形式に変換

サンプルを試す

JSON入力

XML出力

ローカルで実行 · シークレットの貼り付けも安全
XMLはここに表示されます…

JSONからXMLへの変換とは?

JSON(JavaScript Object Notation)とXML(eXtensible Markup Language)は、ソフトウェア開発における2大データ交換フォーマットです。JSONはコンパクトな構文でキーと値のペアおよび配列を使用し、XMLは開始タグと終了タグでデータを囲みオプションの属性を持ちます。JSONをXMLに変換するということは、JSONの構造的な基本要素(オブジェクト、配列、文字列、数値、真偽値、null)を、要素のネストが対応した整形式のXMLドキュメントに変換することを意味します。

XMLは、多くのエンタープライズシステム、政府系API、SOAPウェブサービス、HL7(医療)、FpML(金融)、XBRL(財務報告)などの業界標準において必須のフォーマットです。アプリケーションがJSONを出力し、後続のシステムがXMLを要求する場合、JSONからXMLへのコンバーターが手動での再構築なしに変換を担います。変換は予測可能なマッピングルールに従います。JSONオブジェクトはXML要素になり、配列の各アイテムは繰り返しの兄弟要素になり、プリミティブ値はテキストノードになります。

JSONとXMLのマッピング方法を定義するRFCやW3C標準は存在しません。そのため、異なるライブラリは同じ入力に対して異なる出力を生成します。最も一般的な規約(このツールが採用するもの)は、ドキュメント全体を設定可能なルート要素で囲み、各JSONキーをXMLの子要素に変換し、配列アイテムを同じタグ名の繰り返し要素として表現します。受信システムが特定のXMLスキーマ(XSD)を強制する場合、これらのマッピングルールを理解することが重要です。

オンラインJSONからXMLコンバーターを使う理由

JSONソースから手作業でXMLを記述することは、手間がかかりエラーが生じやすい作業です。タグの不一致、終了要素の忘れ、誤ったネストは、スキーマ検証に失敗するドキュメントを生成します。コンバーターは構造的な変換を自動的に処理します。

ブラウザで即時変換
JSONを貼り付けると、ミリ秒単位で整形式のXMLが得られます。サーバーへの通信、CLIのセットアップ、依存関係のインストールは不要です。変換はすべてデバイス上のJavaScriptで完結します。
🔒
機密データをプライベートに保つ
JSON入力はブラウザタブの外に送信されることはありません。すべての解析とXML生成はクライアントサイドで行われるため、APIキー、トークン、または本番データを含むペイロードを安全に変換できます。
📋
アカウント・ログイン不要
ページを開き、JSONを貼り付けて、XML出力をコピーするだけです。サインアップフォーム、メール認証、使用制限は一切ありません。
🌳
ネスト構造を自動処理
深くネストされたオブジェクト、混在する配列、null値もすべて正確に変換されます。ツールはJSONの完全な階層構造を生成されたXMLツリーに保持します。

JSONからXML変換のユースケース

SOAPウェブサービス連携
REST APIがJSONを返すが、パートナーのSOAPエンドポイントがXMLリクエストボディを必要とする場合。JSONペイロードをSOAPエンベロープでラップする前にXMLに変換します。
エンタープライズデータ交換
レガシーERPやCRMシステムはXMLインポートのみを受け付けることが多くあります。最新ツールからのJSONエクスポートを、期待されるスキーマに合ったXMLフィードに変換します。
CI/CDパイプライン設定
一部のビルドツール(Maven、Ant、MSBuild)はXML設定ファイルを使用します。自動ビルド中にJSONパラメーターファイルからXML設定フラグメントを生成できます。
QAテストデータの準備
JSONデータセットからXMLテストフィクスチャを生成します。XMLパーサー、XSLTトランスフォーム、XPathクエリのテスト用に有効なXMLドキュメントを素早く作成できます。
データパイプラインのフォーマット変換
XMLを取り込むETLパイプラインは、JSONを生成するAPIからデータを受け取ることができます。XMLベースの処理ステージに読み込む前に、中間のJSON結果をXMLに変換します。
XMLの構造学習
XMLを学習している開発者や学生は、使い慣れたJSON構造を貼り付けて対応するXML表現を確認できます。タグのネスト、要素の階層、ドキュメント構造を具体的に理解するのに役立ちます。

JSONからXMLへのマッピングルール

JSONからXMLへの変換を規定する統一標準は存在しないため、ツールによって出力が異なります。以下の表は、このコンバーターおよび主要ライブラリ(js2xmlparser、xmlbuilder、fast-xml-parser)が使用するマッピング規約を示しています。配列の繰り返し兄弟要素という規約が主流になったのは、XMLスキーマがコレクションを自然にモデル化する方法(各アイテムが独立した要素)を反映し、XPathクエリやXSLTトランスフォームとシームレスに統合できるためです。

JSON TypeJSON ExampleXML Output
Object{"name": "Alice"}<name>Alice</name>
Nested object{"user": {"age": 30}}<user><age>30</age></user>
Array{"colors": ["red", "blue"]}<colors>red</colors><colors>blue</colors>
String"hello"<root>hello</root>
Number42<root>42</root>
Booleantrue<root>true</root>
Nullnull<root/>
Empty object{}<root/>
Empty array[](no child elements)

コード例

以下は3つの環境でJSONをXMLに変換する実行可能なコード例です。各例はサンプルのJSONオブジェクトから整形式のXMLを生成します。

JavaScript (Node.js)
import { create } from 'xmlbuilder2';

const json = {
  order: {
    id: 1024,
    items: [
      { sku: "A1", qty: 2 },
      { sku: "B3", qty: 1 }
    ],
    shipped: false
  }
};

const xml = create({ version: '1.0' })
  .ele(json)
  .end({ prettyPrint: true });

console.log(xml);
// → <?xml version="1.0"?>
// → <order>
// →   <id>1024</id>
// →   <items>
// →     <sku>A1</sku>
// →     <qty>2</qty>
// →   </items>
// →   <items>
// →     <sku>B3</sku>
// →     <qty>1</qty>
// →   </items>
// →   <shipped>false</shipped>
// → </order>
Python
import json
import xmltodict

data = {
    "order": {
        "id": 1024,
        "items": [
            {"sku": "A1", "qty": 2},
            {"sku": "B3", "qty": 1}
        ],
        "shipped": False
    }
}

# xmltodict.unparse expects a single root key
xml = xmltodict.unparse(data, pretty=True)
print(xml)
# → <?xml version="1.0" encoding="utf-8"?>
# → <order>
# →   <id>1024</id>
# →   <items>
# →     <sku>A1</sku>
# →     <qty>2</qty>
# →   </items>
# →   <items>
# →     <sku>B3</sku>
# →     <qty>1</qty>
# →   </items>
# →   <shipped>false</shipped>
# → </order>
Go
package main

import (
	"encoding/json"
	"encoding/xml"
	"fmt"
)

type Item struct {
	SKU string `json:"sku" xml:"sku"`
	Qty int    `json:"qty" xml:"qty"`
}

type Order struct {
	XMLName xml.Name `xml:"order"`
	ID      int      `json:"id" xml:"id"`
	Items   []Item   `json:"items" xml:"items"`
	Shipped bool     `json:"shipped" xml:"shipped"`
}

func main() {
	raw := `{"id":1024,"items":[{"sku":"A1","qty":2},{"sku":"B3","qty":1}],"shipped":false}`

	var order Order
	json.Unmarshal([]byte(raw), &order)

	out, _ := xml.MarshalIndent(order, "", "  ")
	fmt.Println(xml.Header + string(out))
	// → <?xml version="1.0" encoding="UTF-8"?>
	// → <order>
	// →   <id>1024</id>
	// →   <items>
	// →     <sku>A1</sku>
	// →     <qty>2</qty>
	// →   </items>
	// →   ...
}

よくある質問

JSONからXMLへの変換はロスレスですか?
構造的にはロスレスです。すべてのJSON値はXML要素またはテキストノードにマッピングされます。ただし、XMLはJSONのように数値、真偽値、文字列をネイティブに区別しません。JSONの数値42はXML内でテキストコンテンツ「42」になります。受信システムがXMLスキーマ(XSD)の型宣言を使用している場合、解析時に元の型を復元できます。スキーマなしでは、変換後のドキュメントで型情報は実質的に失われます。
JSON配列はXMLにどのように変換されますか?
各配列アイテムは同じタグ名を持つ兄弟XML要素になります。例えば、JSONの配列 "colors": ["red", "blue"] は2つの要素を生成します:&lt;colors&gt;red&lt;/colors&gt; と &lt;colors&gt;blue&lt;/colors&gt;。一部のコンバーターは配列を親要素(例:&lt;colorsList&gt;)でラップしますが、繰り返し兄弟要素のアプローチがより一般的で、JAXB、Jackson、fast-xml-parserが使用する規約と一致します。
null値は変換でどのように処理されますか?
JSONのnullは通常、空のXML要素に変換されます。例えば、"middle_name": null は &lt;middle_name/&gt; になります。一部のライブラリは明示的なnullを示すためにxsi:nil="true"属性を追加します。これはターゲットシステムがXSDスキーマに対して検証する場合に有用です。このコンバーターはデフォルトで自己終了の空要素を出力します。
XMLをJSONに戻すことはできますか?
可能ですが、往復変換は必ずしも対称ではありません。XMLの属性、処理命令、コメント、混在コンテンツ、名前空間にはJSONに直接対応する機能がありません。XMLをJSONに変換してXMLに戻すと、構造的に異なるドキュメントが生成される可能性があります。XMLからJSONへの変換が必要な場合は、属性と名前空間を保持する専用のXML to JSONコンバーターを使用してください。
有効なXML要素名でないJSONキーはどう処理しますか?
XML要素名は数字で始まることができず、スペースや特殊文字のほとんどを含めることができません。JSONに"2024-data"や"first name"のようなキーがある場合、コンバーターはサニタイズする必要があります。通常はアンダースコアをプレフィックスとして付けるか、無効な文字をアンダースコアに置き換えます。コンバーターの出力を確認し、生成されたXMLがXSD検証を通過する必要がある場合は、ソースJSON内のキー名を調整してください。
このツールが処理できる最大JSONサイズは?
コンバーターはブラウザのJavaScriptエンジン上で動作するため、実際の上限は利用可能なメモリに依存します。最新のブラウザのほとんどは50〜100MBまでのJSONドキュメントを問題なく処理できます。それ以上のファイルには、Pythonのxmltodictやデータをメモリに一括読み込みせずインクリメンタルに処理するコマンドラインツールを使用してください。
出力XMLは整形式ですか?それとも妥当なXMLですか?
出力は常に整形式のXMLです。タグは適切にネストされ、特殊文字はエスケープされ、ドキュメントには単一のルート要素があります。出力が妥当かどうかはターゲットスキーマ(XSDまたはDTD)によります。整形式は構造的な保証であり、妥当性は要素名、ネストの順序、コンテンツの型が特定のスキーマ定義に一致することを要求します。