Ajaxリクエストに対するjsonとxmlの長所と短所は何ですか?パフォーマンスに違いはありますか?つまり、ブラウザは一方の形式をもう一方の形式よりも速く処理できますか?
要約すると、JSON(JavaScriptのサブセットと考えることができます)はXMLよりもはるかにスリムです。これにはいくつかのプラスの副作用があります
->
解析が簡単です(解析が高速です)この質問に対する私の最初の回答では、JSONの見方はJavaScriptの見方であり、近親者であると考えていました。しかし、JSONは独立したものであり、 JSON.org はJSONを記述するのに優れた仕事をします。また、ブラウザでサポートされていない場合にJSON.parse
とJSON.stringify
のサポートを追加するJavaScriptの互換性ライブラリも提供します。
当時(2009年半ば)のeval
はJavaScriptの評価に使用されていましたが、JSONの評価、つまりJSONの解析も可能でしたが、代わりに任意のJavaScriptを実行できるため、安全ではないと見なされていました。
JSONは、JavaScriptとの密接な関係により、ブラウザーに非常によく適合し、プラットフォームを進化させる自然な方法です。
XMLは、入力できるため、より厳密であると見なされる可能性がありますが、XMLを非常に遅くする原因でもあります(私の意見では少し冗長です)。しかし、これが本当に必要なものである場合は、それを使用する必要があります。XMLも同様にユビキタスです。
動的または静的に型付けされたものについては議論しませんが、これを言います。スキーマのないデータの上にデータを追加するのは本当に簡単で、スキーマの有無に関係なく、検証を行う方法はたくさんあります。
議論の中で私が見たことがないXMLの利点の1つは、XMLがスキーマを持つことができるということです。これは、XMLの構造を説明する上で非常に価値があります。単純なデータ構造の場合、JSONと実行内容を説明するテキストがあれば問題ありません。より複雑なデータ構造で作業する場合、またはデータの作成者と利用者が同じチームではない場合、スキーマを持つことはコミュニケーションに大いに役立ちます。
また、スキーマがあるということは、データを検証できることを意味します。これは、複雑なエラーをデバッグしようとするときに命を救うことができます...
この記事には「AJAX応答:XML、HTML、またはJSON? "そのトピックに関する完全な議論:
[〜#〜] xml [〜#〜]
[〜#〜] json [〜#〜]
<script>
タグとしてインポートすると、JSONがJavaScriptの同一生成元ポリシーを回避することです。残酷な詳細については、 Simon Willisonの例 を参照してください。コメントから、JSONはXMLよりも処理が速いと考えられています。
まだ言及されていないXMLの利点の1つは、XSLTを使用して、任意の複雑なXPath式を使用してXMLドキュメントからデータを抽出できることです。 JSONでこれを行う方法がわかりません。オブジェクトが構造内のどこにあるかに関係なく、直接の子孫として「通貨」フィールドを含むJSONドキュメント内のすべてのオブジェクトをどのように見つけますか? XSLT/XPathを使用したXMLでは、これは非常に簡単です。
ただし、ブラウザでこれを行うにはコストがかかります。ブラウザ固有の癖に遭遇し、おそらく遅くなり、メモリを大量に消費します。
私はJsonが好きでお勧めしますが、最適な処理速度に根本的な違いはないと思います。ライブラリとプラットフォームの違いはより重要です。良いxmlパーサーは悪いjsonパーサーよりも高速であり、その逆も同様です。したがって、通常、フォーマット自体のパフォーマンスは大きな要因ではありません。どちらも高速に点灯する可能性があります(Javaには、両方に適したパーサーがいくつかあります。たとえば、他の言語もおそらくそうです)。
データのタイプに依存するコンパクトさに関しては、Jsonは多くの場合、少しコンパクトですが、根本的にはそうではありません。配列/リストがたくさんある場合を除いて、json表記 "{...}"はxmlタグ付けよりもはるかにコンパクトです(可能であれば "1 2 3 4"のように空白を使用しない限り)。
JSON:XMLの無脂肪代替 をお読みください。 JSONを使用すると、リクエストの送信元と宛先の間でコールバックを行ったり来たりして、既存のJavascriptコードで実際に問題なく使用できます。
ひどく提供するリンクには、違いの良い概要があります(一番下までスクロールしてください)。重要なポイントは次のとおりです。
JSON:小さく、すべてのUnicode文字を表すことができます(少なくとも、xmlは独自の仕様ではUTF8にはできません)。 AJAXアプリケーション(javascriptのeval()関数のため)、特にjsonp(応答がコールバックを呼び出す)のようなより高度な機能でそれを利用することも簡単です。
XML:構造のクエリを簡単にするためのツールがたくさんあります。その古くて確立されているので、それはまた一般により多くのツールサポートを持っています。
一般に、それらは同じことを実行できます(xmlを介してjsonpを実行できますが、コールバックを手動で解析する必要があります)。
JSONは軽量、AJAXフレンドリー(Javascriptのサブセットと見なされます)および簡単にシリアル化可能です。 [〜#〜] xml [〜#〜]これをすべて行いますが、牛乳を飲んだ後です。
jsonのもう1つの利点は、<>角かっこを使用せず、多くの混乱なしにhtmlコードを挿入できることだと思います。