2012-09-10 11 views
12

私はJSONとXMLの違いを知りました。両方ともシステム間のデータ交換のためのものですが、JSONとXMLには大きな違いがあります.JSONはXMLよりも軽量です。しかし、なぜ私はJSONが軽量であるのかという実際の理由を見つけることができません。 JSONを軽量化するのは何ですか?なぜJSONはXMLよりも軽量ですか?

私が見つけた1つの答えは、JSONに余分なXMLマークアップがあまりないことです。それは実際何を意味しますか? JSONが軽量である理由を説明する理由がいくつかありますか?

+1

完全な回答は、あなたが受け取った3つの回答すべてを考慮しています。 XMLとJSONのどちらかを選択しようとしている場合は、どのような目的に役立つかを自問することができます。送信や大容量ストレージのコンパクトなシリアル化が必要な場合は、JSONを使用してください。ドキュメントのマニピュレーションを行いたい場合、XMLはKerrekのメモのように、密接な技術によってサポートされています。 .NETフレームワークを使用している場合、LINQは実質的に何かを照会/変換できるため、これはあまり重要ではありません。 –

+1

@PeterWone:StackOverflowには、キャストされた票に応じて順序が異なるため、「トップ3の回答」のようなものはありません。具体的な回答を参照するには、著者に名前を付けるか、permalinkを渡してください。具体的には、この執筆時点では、それぞれ21票と1票、5票の回答が3つあります。だから、「トップ3」は? :) – KPM

+0

@KPM - はい、それはまさに私が意味していたものです:コメントの時点で3つのトップスコアの答え。私は著者の一人に名前をつけたが、私のコメントはそれ自身で立っていた。私はこれらの答えを純粋に著者の礼儀として言及します。とにかく、ここ数年後ですが、彼らはまだ3つのトップの答えと同様、トップ3の答えです。 –

答えて

27

は、とJSONおよびXMLドキュメントの例で見ましたか?

JSONとXMLの両方が任意のツリーのデータを表すために使用されていますが、XMLははるかに冗長です。ツリーの各要素には名前(要素の型名)があり、要素は一致するタグのペアで囲まなければなりません。対照的に、JSONは、ツリーをJavascriptに似た ​​"ネストされた配列"の表記法で表現します(実際には、JSON文書は文字通りJavascriptとして解析され、対応する配列になります)。

at the differencesをご覧ください。

XML要素は、の任意の数で装飾することができるので、意味的に豊か勿論である属性、および要素は、フリーテキストフローの混合コンテンツさらに、ネストされた要素を含んでいてもよいです。たとえば、次のスニペットは、JSONとして表現するために面倒なことになります。一方

<paragraph> 
    This is an entire paragraph of <emph>text</emph>. It is interspersed with 
    further, nested <emph>XML elements</emph>, as well as the occasional 
    <link href="http://stackoverflow.com/a/12346394/596781">hyperlink</link>. 
</paragraph> 

データ様の文書をJSONにはるかに簡単することができます。これを想像してみてください:

<properties> 
    <property type="int" name="ID">123</property> 
    <property type="date" name="birthday">19700101</property> 
    <references> 
     <url>http://stackoverflow.com/a/12346394/596781</url> 
     <doi>something.made.up</doi> 
    </references> 
</properties> 

これは非常にコンパクトなJSON配列になります。

2番目の考慮点は、両方の形式を取り囲むツールセットの量です。 JSONツールは主にJSONデータの解析に関するものですが、W3Cは、XSLTやXPATHなどの体系的な方法でXMLを操作する非常に大きな一連の技術を開発しています。

一言で言えば、個人的な意見としては、XMLはドキュメントに関するもので、JSONはデータに関するものだと思います。大規模で構造化されたドキュメントでは、XMLはより自然で便利に感じられますが、JSONはデータセットを送信するための単純であまり控えめなフォーマットです。

+1

XMLを使用すると、スキーマ内のデータ型を宣言し、データの一部としては宣言しません。より良いXMLの例は '' –

+1

リンク上の多くのXMLサンプル提供は無効で、JSONとの公正な比較は意図的に膨れ上がっているので –

8

JSON表記法は厳しいです。 XMLは終了タグのノードタイプを繰り返しますが、JSONはスタックを使用してクロージャスコープを推定します。 XMLは、JSONが知っている限り、名前空間をサポートしています。 XMLスキーマには通常型情報が含まれていますが、JSONでこれを行うことができないという本質的な理由はありません。 JSONの登場は実際にはを使用している点でXMLと機能的に同等であるという事実の一部ではないことに注意してください。ワイヤを介して、LZW圧縮が機能するとすぐにその差は消えます。なぜなら、XMLは辞書圧縮に適しているからです。

8

データモデルが異なります。

  • 処理命令そこで
  • コメント
  • 属性

:別に自分で気づいたマークアップの欠如から、JSONはまた、他のすべてのXML機能を、持っていませんデータ自体は軽量であるだけでなく、データモデルを実装するライブラリでもあります。これにより、JavaScript以外の言語を使用したJSONのレンダリング、解析、処理が大幅に高速化されます。 JSONは、実際のJavaScriptコードであるため、はるかに「軽量」

7

シンプル

XMLはSGMLよりも単純で処理するためのJavaScriptパーサのために、しかし、JSONのようにJavaScriptのために、これは、非常に簡単ではありませんXMLよりはるかに簡単です。 JSONははるかに小さい文法を持ち、最新のプログラミング言語で使用されるデータ構造に直接マップします。それはする必要はありませんので、

拡張

JSONは拡張可能ではありません。 JSONはドキュメントマークアップ言語ではないため、新しいタグや属性を定義してデータを表現する必要はありません。

相互運用性

JSONはXMLと同じ相互運用性の可能性を秘めています。それは政治的/企業の標準化闘争の中心にないため

オープン性

JSONは、おそらくより多くのように、XMLと少なくとも同じ開いています。

Content link

3

、いくつかの要因がここに遊びにあります

(a)はJSONデータ・モデルは単純です。オブジェクトの種類が少なく、プロパティも少なくなっています。 JSONデータモデルは、JavaScriptなどの一般的なプログラミング言語で利用可能なデータ・モデルに近いこれらの言語を

を使用する場合

(B)、これより少ないデータ変換が必要である(C)JSONのシリアル化された構文は、以下でありますXMLの構文よりも冗長性(あまり冗長ではありません)。

もちろん、これらの違いは、JSONがXMLとは異なる目的で設計されているためです。

3

これは線形因子によってちょうど小さくなっています。それほど小さくはありません。一旦圧縮されると、両方のフォーマットはほぼ同じスペースを取る。

すでにXMLを使用しているプログラムは、JSONを使用することでさらに単純化されることはないことを覚えておいてください。余分な標準は、古い標準を取り除かない限り、事態を複雑にするだけであり、XMLは間もなく消えることはありません。

XMLはドキュメントのコンセプトに基づいて設計されました。 JSONは、単純なデータ構造の詳細です。 JSONは標準についてあまり気にしません。スキーマはないため、XMLを使用する上での熟練者にとっては移植性が難しいかもしれません。通常、私はReSTfulサービスを使用する必要があるとき、それを理解するために 'コードを読む'か、 'JSONデータそのものを見る'ように言われています。私。暗黙的な(そして、しばしば変化する)データ形式。

どちらの形式も自然な形で、グラフのデータではなくツリーのみを表現できるという問題があります。私はどちらのフォーマットも好きではありません。彼らはどちらも半完成しているようです。オブジェクトの直列化により、より多くの問題が解決されます。

0

なぜセキュリティの面を忘れるべきですか?ネットワークを介してデータを転送する際、XMLエンベロープを準備してSOAPリクエストを行うことができるので、XMLはより安全です。

関連する問題