ルート要素としてのJSON配列の変換

トップレベルのJSON値が配列でオブジェクトではないケースを処理する方法。ルート要素のラッピング戦略と配列ベースXML出力の命名規則を解説します。

Advanced

詳細な説明

トップレベルのJSON値が配列の場合、XMLへの変換にはXMLが正確に1つのルート要素を要求するため、特別な処理が必要です。

ルートとしてのJSON配列:

[
  { "name": "Alice", "age": 30 },
  { "name": "Bob", "age": 25 },
  { "name": "Carol", "age": 35 }
]

変換戦略:

戦略1:汎用 <root> ラッパー

<root>
  <item>
    <name>Alice</name>
    <age>30</age>
  </item>
  <item>
    <name>Bob</name>
    <age>25</age>
  </item>
  <item>
    <name>Carol</name>
    <age>35</age>
  </item>
</root>

戦略2:セマンティックなラッパー名

<users>
  <user>
    <name>Alice</name>
    <age>30</age>
  </user>
  ...
</users>

戦略3:インデックス付き要素

<root>
  <item index="0">
    <name>Alice</name>
    <age>30</age>
  </item>
  ...
</root>

なぜ難しいのか:

  • JSON配列は固有のコンテナ名を持たない順序付きコレクションです。配列自体にはラベルがなく、コンテンツのみがあります。
  • XMLではすべての要素にタグ名が必要です。ルート配列にはラッパー要素名とアイテム要素名の両方が必要です。
  • コンバーターはデータだけからセマンティックな名前(users/user)を推測できません。設定されない限り汎用名を使用します。

ベストプラクティス: ユーザーがルートとアイテムの要素名を指定できるようにします。デフォルトは <root><item> ですが、カスタマイズのオプションを提供します。

ユースケース

検索結果のベア配列を返すJSON APIレスポンスを、HTMLレポートを生成するXSLT変換パイプラインに投入するためにXMLに変換する場合。

試してみる — JSON ↔ XML Converter

フルツールを開く