2009-02-25 21 views

答えて

17

要約すると、JSON(JavaScriptのサブセットと考えることができる)はXMLよりもはるかにリーンです。これは、いくつかの正の副作用

  • JSONは、JSONが高速であるXML
  • を対応するよりも小さい、すなわち簡単な構文->簡単に解析(高速化、解析)この質問に対する私のオリジナルの答えで

を持っていますJSONについての私の見解はJavaScriptのものでしたが、私はそれを密接な​​関係とみなしました。しかし、JSONは何か独立しており、JSON.orgはJSONを記述する素晴らしい仕事をしています。また、ブラウザでサポートされていない場合、JSON.parseおよびJSON.stringifyのサポートを追加するJavaScript用の互換性ライブラリも提供しています。

JavaScriptを評価するのに(2009年中頃)evalを使用していましたが、JSONを評価することもできますが、JSONを解析することもできますが、代わりに任意のJavaScriptを実行できるため安全ではありません。

JSONは、JavaScriptと密接な関係があるため、ブラウザにとって非常に適しており、プラットフォームを進化させる自然な方法です。

XMLはあなたが入力することができるという事実のために、より厳しいと思われるかもしれませんが、それは非常に遅くなります(私の意見では少し冗長です)。しかし、これがあなたが本当に望むものなら、それを使うべきです.XMLも同じように普及しています。

私は動的または静的に型付けされたものよりも議論には進まないが、私はこれを言うだろう。スキーマフリーのデータの上に物を追加するのは本当に簡単です。スキーマやスキーマに関係なく、検証を行う方法はたくさんあります。

+0

JSONは動的コンテンツを表すためにXMLよりもどのように適していますか? – Guillaume

+1

@John:解析と解析を混在して実行しています。彼らは2つの異なる獣です。 – dirkgently

+1

@Guillaume and dirkgently - JSONは、ブラウザのスクリプティングと併用する方がずっと簡単です。データをクライアントにプッシュするのに適しています。私はJSONを専門のJavaScriptと考えるのが好きです。なぜなら、XMLで整然としたものではないサーバー側のコードから動作を出すことができるからです。 –

1

JSON: The Fat-Free Alternative to XMLをお読みください。 JSONを使用すると、リクエストのソースとデスティネーションの間でコールバックを前後にして、実際にあなたの既存のJavascriptコードで痛みなく使用することができます。

+0

リンクが壊れています(少なくとも私にとって.. 。) –

+0

@ido:try json.org – dirkgently

1

リンクには、差異の優れた概要が表示されます(下にスクロールします)。重要な点は次のとおりです。

JSON:小さく、すべてのユニコード文字を表すことができます(xmlはUTF8ではできません。 AJAXアプリケーション(javascriptのeval()関数による)、特にjsonp(レスポンス呼び出しコールバック)のようなより高度な機能のために、それを使用することも自明です。

XML:構造を簡単に検索できるツールがたくさんあります。より古くて確立されて以来、一般的にはより多くのツールがサポートされています。

一般的に、同じことを達成できます(jsonpからxmlまで行うことができます。コールバックを手動で解析する必要があります)。

+0

XMLがすべてのUnicode文字を表すことができないというあなたの声明には同意しません。エンコードをUnicode( "UTF-16")に設定するだけです。方法を参照してください:http://www.w3schools.com/xml/xml_encoding.asp – MikeTeeVee

+0

うわー、これは少し前からです:)。 XMLに明示的に禁止された文字はありませんか?私は確かに、utf16については確信していないと確信してutf8との間にいくつかの重複を覚えているようだ。私は自分の答えを更新して、少なくともutf8でそれを反映させました。 –

8

あなたがこの記事 "The AJAX response: XML, HTML, or JSON?" というトピックに関する完全な議論を持っている:

XML

  • 利点
    XMLの最も重要な利点は、それが最もだということです他の人間のための容易に読めるフォーマット。
    2次的な利点は、XMLがかなり長い間存在しており、多くの開発者が既にそれに慣れているということです。
  • 短所
    HTMLページにデータを挿入するために必要なJavaScriptは非常に冗長です。

JSON

  • 利点
    最も重要な利点は、あなたが新しい<script>タグとしてJSONファイルをインポートする場合JSONは、JavaScriptのの同じソースポリシーを回避することです。詳細については、Simon Willison's exampleを参照してください。
    JavaScriptでは、別のサーバーからのドキュメント(XMLまたはHTML)にアクセスすることはできません。ただし、JSONファイルをスクリプトタグとしてインポートすると、この問題を回避でき、任意のWebサイトに任意のJSONデータをインポートできます。それはあなたのビジネス目標に左右されますが、それは良いか悪いのかによって異なりますが、今は無制限のアクセスを可能にする唯一のデータ形式です。
    JSONデータ用のスクリプトは、JavaScriptデータのスクリプトよりも、JavaScript言語の残りの部分とやや単純で、やや多めになっています。
  • デメリット
    JSONの最も重要な欠点は、フォーマットが人間のために読み取ることが非常に困難であり、それは、もちろん、すべての単一のコンマは、引用符、およびブラケットが正確に正しい位置にあるべきであるということです。これはXMLにも当てはまりますが、データスニペットの最後にあるJSONの複雑な構文のような構文は、初心者を驚かせ、複雑なデバッグを行う可能性があります。

コメントから、JSONはXMLよりも処理が速いと考えられます。

+0

DOMの中にXMLを埋め込むのは、サーバ側の設計がその振る舞いを考慮に入れていれば、難しいことではありません。サーバー側の小さなデザイン作業は、ブラウザ側の作業を大幅に減らすことができます。 –

+0

そんなばかげた点。 JSONは人間にとっては読みにくいですか?真剣にこれをまだ答えとして使用していますか? JSONは、人間のために読むためにXMLよりもはるかに簡単です。普遍的な事実。私はその声明がどれほど馬鹿だと信じられない! – TheBlackBenzKid

17

XMLの利点の1つ私は議論の中では、XMLにスキーマを持たせることができないことが分かりました。これは、XMLの構造を説明する上で非常に重要です。シンプルなデータ構造のために、JSONと、あなたがやっていることを説明するテキストのビットがうまくいきます。より複雑なデータ構造を扱う場合や、データの作成者と消費者が同じチームでない場合は、スキーマを持つことでコミュニケーションが大きく助けられます。また

、スキーマを持つことは、あなたがCOMPLEXEエラーをデバッグしようとすると、人生は保存することができ、あなたのデータを検証することができることを意味...

+0

スキーマが厳密には必要ないとは限りません。特にNoSQLで作業してください。 –

2

私はJSONを好きで、それをお勧めしますが、私はありませんがあることを考えます最適な処理速度の基本的な違い。ライブラリとプラットフォームの違いはより重要です。良いxmlパーサは悪いjsonパーサよりも高速であり、その逆もあります。したがって、通常、フォーマット自体のパフォーマンスは大きな要因ではありません。 どちらも高速で点灯することができます(Javaには、たとえば、他の言語などのいくつかの良いパーサもあります)。

コンパクトさについては、データの種類によって異なりますが、Jsonはしばしばコンパクトですが、根本的にはそうではありません。たくさんの配列やリストを持っている場合を除き、jsonの表記 "{...}"はxmlタグよりはるかにコンパクトです(できるだけ空白を使わない限り、 "1 2 3 4"など)。

5

まだ言及されていないXMLの利点の1つは、XSLTを使用して、任意の複雑なXPath式を使用してXML文書からデータを抽出できることです。 JSONでこれを行う方法がわかりません。どのようにオブジェクトが構造内で発生するかにかかわらず、 "通貨"フィールドを直接子孫として含むJSONドキュメントのすべてのオブジェクトを見つけることができますか? XSLT/XPathを使用したXMLでは、これは非常に簡単です。

ただし、ブラウザでこれを行うのは料金がかかります。ブラウザー固有の癖にぶつかりますが、おそらく遅くなり、メモリーを大量に消費します。

+1

* "JSON文書内のオブジェクトが構造体のどこに存在するかにかかわらず、"通貨 "フィールドを直接子孫として含むすべてのオブジェクトを見つける方法はありますか?" *構造体を歩いてXSLTトランスフォーマと同様にそれらを見つける。よく知られているJSONトランスフォーマーが存在しないという理由だけでは、XMLバージョンよりも有用でない可能性があるわけではありません。 –

0

私はJsonのもう1つの利点は、<>角かっこを使用していないと思うし、混乱を招くことなくHTMLコードを入れることができます。

0

JSONは軽量AJAX優しい(Javascriptのサブセットとして考える)と簡単に、シリアライズです。 XMLすべてこれを行うが、牛乳を飲んだ後に行う。

関連する問題