JSON⇄XML変換
JSON ⇄ XML
属性・配列・テキストノードの扱い方を指定して、JSONとXMLを相互に変換します。
XMLをJSONに、またその逆に変換します。この2つのあいだに正統な対応づけはありません。XMLには属性と、順序のある混合内容と、名前空間がありますが、JSONにはどれもありません。だからこのページは、約束事を隠す代わりに選んだやり方をはっきり示し、変えられるようにしています。
属性は `@id` のようになります。
要素自身のテキストが入る場所です。
XML
JSON
@name というキーになり、要素自身のテキストは #textに入り、同じ名前の兄弟が並べば配列になります。往復で情報が落ちうるのは最後の点です。たまたま要素がひとつだけのリストは、「常に配列にする」を入れないかぎりオブジェクトひとつになって戻ってきます。入力
215文字
出力
399文字
使い方
方向を選びます
両側が入力を別々に持っているので、行ったり来たりしても貼り付けたものが消えません。
属性の接頭辞とテキストのキーを決めます
`@`と`#text`が広く使われている約束事です(fast-xml-parserやxml2jsなどが使っています)。作らなければならないJSONが別のものを使っているなら、あとで加工するのではなくここで変えてください。
JSONをコードが受け取るなら「常に配列にする」を有効にします
対応づけのうち、情報が漏れる箇所です。`<item>`が1つならオブジェクト、2つなら配列になり、受け取るコードは両方を扱わなければなりません。常に配列にすれば、少し冗長になる代わりに形が安定します。
よくある質問
往復させれば元のXMLが戻ってきますか
構造としてはたいてい戻りますが、バイト単位では戻りません。コメント、処理命令、そして`<a/>`と`<a></a>`の区別は残りません。テキストと要素が交互に現れる混合内容は、順序を保ったままJSONで表す方法がありません。
`12`が文字列になるのはなぜですか
XMLに型が無いからです。文書の中のすべての値はテキストであり、そうでないと言えるのはスキーマだけです。型変換の切り替えを入れると数値と真偽値を推測しますが、あくまで推測です。商品コードの`0123`は123になり、バージョン文字列の`1.10`は1.1になります。
名前空間はどうなりますか
接頭辞は要素名の一部として残ります。`soap:Body`は`soap:Body`というキーになり、`xmlns`の宣言はふつうの属性として渡ってきます。名前空間のURIへ解決することはないので、同じ名前空間に違う接頭辞を使った2つの文書は、違うJSONになります。
SOAPのレスポンスを入れてもいいですか
構いません。このページに来るよくある理由の1つです。エンベロープも本文も中身も、入れ子のオブジェクトとして渡ってきます。SOAPの属性が行き着く先が、`@`の付いたキーです。
ここから渡せます
XMLフォーマッター・検証
XML Formatter & Validator
XMLのインデントを整え、整形式として最初に崩れている箇所の行と列を示します。
XPathテスター
XPath Tester
XMLやHTMLにXPathかCSSセレクタを当てて、一致したノードをすべて並べます。
JSONフォーマッター・検証
JSON Formatter & Validator
JSONを整形・圧縮して検証し、構文エラーがあれば行と列を正確に指し示します。
YAMLフォーマッター・検証
YAML Formatter & Validator
YAMLのインデントを揃えて検証し、パーサを壊すタブやアンカーの誤りに印を付けます。
次の一手
このツールが出したものをそのまま受け取れる道具です。
JSONフォーマッター・検証
JSON Formatter & Validator
JSONを整形・圧縮して検証し、構文エラーがあれば行と列を正確に指し示します。
JSONPathテスター
JSONPath Tester
JSONPathの式を文書に対して実行し、打っているあいだ一致するノードを光らせます。
XMLフォーマッター・検証
XML Formatter & Validator
XMLのインデントを整え、整形式として最初に崩れている箇所の行と列を示します。
XPathテスター
XPath Tester
XMLやHTMLにXPathかCSSセレクタを当てて、一致したノードをすべて並べます。
Base64エンコード・デコード
Base64 Encoder & Decoder
テキストでもファイルでもBase64とBase64URLを符号化・復号し、UTF-8も正しく扱います。
curlをコードに変換
curl to Code
curlのコマンドをfetch・axios・Pythonのrequests・Go・PHP・PowerShellのコードに変換します。