開発者向け

JSON / YAML / XML 変換ツール

JSON・YAML・XMLをブラウザ内で相互変換。属性・CDATA・配列に対応し、構文・数値精度・キー・入れ子・UTF-16長の制限を確認してから出力します。

登録不要
入力
出力
YAML → JSON

0 / 200,000 UTF-16コード単位

出力 (JSON)
入力すると変換結果が表示されます
XML変換のルール

• XML属性は @属性名 としてJSONのキーに変換されます

• JSON/YAMLからXML属性へ変換できる値は文字列・数値・真偽値です

• テキストと子要素が混在する場合、テキストは #text に格納されます

• 同名の子要素が複数ある場合は配列になります

• XMLのテキストと属性は文字列になり、数値・真偽値などの元の型は復元されません

• 空配列・空オブジェクト・nullは空要素になり、要素1件の配列も単一値と区別できません。入れ子の配列はXMLへ変換できません

• JSONからXMLへの変換時、トップレベルのキーが1つならそれがルート要素名になり、ルート配列はroot/item になります

• コメント、子要素間だけの整形用空白、混在内容や異なる要素名をまたぐ元の並び順は失われます。文字参照・CDATAで明示した空白と、子要素を持たない要素の前後空白は保持します

• DOCTYPE・ENTITY・処理命令、名前空間prefix(名前のコロン)、XML名にできないキー、XML 1.0で扱えない文字は変換できません

JSON / YAML / XML 変換ツールについて

JSON・YAML・XML の違いと使い分け

JSON(JavaScript Object Notation)はWeb APIで最も広く使われるデータ交換形式。機械処理が容易で軽量ですが、コメントや複数行文字列の記述性では他の形式に劣ります。

YAML(YAML Ain't Markup Language)は人間が読み書きしやすい設定記述形式。インデントで構造を表現し、コメント記述や複数行文字列に対応します。

XML(Extensible Markup Language)はタグベースの構造化文書形式。属性・名前空間・スキーマ検証など高度な機能を持ち、エンタープライズ系やレガシーシステムで広く使われています。

用途別の使い分け

  • JSON: Web API レスポンス、package.json、tsconfig.json、ブラウザ間通信
  • YAML: Kubernetes・Docker Compose・GitHub Actions・Ansible等の設定ファイル、OpenAPI仕様書
  • XML: SOAP API、RSS/Atom フィード、Maven pom.xml、SVG、Android レイアウト、XHTML

たとえばOpenAPI仕様書はYAMLで書いて、APIゲートウェイにはJSONで配信。レガシーSOAPサービスからのXMLレスポンスをJSON化してフロントエンドで利用、といった場面で相互変換が必要になります。

本ツールの特徴

  • JSON・YAML・XML の 3形式を相互変換(6パターン)
  • YAML 1.2対応の yaml パーサーを使用(eemeli/yaml)。JSON/XMLで同じ値を保てない特殊タグは受け付けません
  • XML 1.0を扱う純粋JavaScript製パーサー(属性・CDATA・コメント・自己閉鎖タグ対応)。DOCTYPE・ENTITY・処理命令・名前空間prefixは受け付けません
  • インデント幅(0/2/4)を選択可能。圧縮出力にも対応
  • 入力・出力は各20万UTF-16コード単位、入れ子は64階層、データ項目は5万件まで。公開した結果を同じツールへ再入力できる長さに制限します
  • 入力本文の変換はブラウザ内で処理し、NanTooの変換用APIへ送信しません
  • 重複JSONキー、文字列でないYAMLキー、精度・符号を保てない数値、安全整数外・非有限数を、固定した案内で拒否します

XML 変換のルール

XMLとJSON/YAMLでは構造の表現方法が異なるため、以下のルールで相互変換します。

  • XML属性は @属性名 としてJSONのキーに変換されます
  • JSON/YAMLからXML属性へ変換できる値は文字列・数値・真偽値です
  • テキストと子要素が混在する場合、テキストは #text に格納されます
  • 同名の子要素が複数ある場合は配列になります
  • XMLのテキストと属性は文字列になり、数値・真偽値などの元の型は復元されません
  • 空配列・空オブジェクト・nullは空要素になり、要素1件の配列も単一値と区別できません。入れ子の配列はXMLへ変換できません
  • JSONからXMLへの変換時、トップレベルのキーが1つならそれをルート要素名にし、ルート配列は root/item で表します
  • コメント、子要素間だけの整形用空白、混在内容や異なる要素名をまたぐ元の並び順は、JSON/YAMLへの変換時に失われます。文字参照・CDATAで明示した空白と、子要素を持たない要素の前後空白は保持します
  • XML要素名・属性名にできないJSON/YAMLキー、名前空間prefix(名前のコロン)、XML 1.0で扱えない文字は拒否します

よくある質問

Q. YAMLのコメントは変換後も残りますか?
JSONはコメントをサポートしていないため、YAML→JSON変換時にコメントは失われます。XMLのコメントも同様にJSON/YAML変換時に削除されます。
Q. XMLの属性はどう変換されますか?
XML属性は「@属性名」というキーでJSON/YAMLに変換されます。例えば <user id="1"> は {"user": {"@id": "1"}} になります。逆方向も同じルールで復元されます。
Q. アンカー(&)・エイリアス(*)などのYAML機能は使えますか?
アンカーとエイリアスは循環せず上限内で展開できる場合に利用できます。Map・Set・binaryや未知のタグなど、JSON/XMLで同じ値を保てない特殊値は変換しません。
Q. 巨大なファイルでも変換できますか?
入力・出力は各20万UTF-16コード単位、入れ子は64階層、データ項目は5万件までです。絵文字などは2コード単位になる場合があります。上限を超える入力や変換結果は、ブラウザを長時間占有しないよう処理または表示を止めます。
Q. 入力データはどこかに保存されますか?
入力本文の変換はブラウザ内のJavaScriptで行い、NanTooの変換用APIへ送信したり、変換機能として保存・再利用したりしません。サイト共通のアクセス計測や広告通信、ブラウザ拡張機能などはこの説明の対象外です。

関連ツール

このツールを評価
—(0件)