JSON と XML の長所と短所の詳細な紹介

黄舟
リリース: 2017-05-07 13:52:37
オリジナル
1987 人が閲覧しました

JSON(Javascript Object記法)は、軽量のデータ交換フォーマットです。人間にとって読み書きしやすい。機械による解析と生成も簡単です。これは、標準 ECMA-262 第 3 版 - 1999 年 12 月のサブセットである Javascript プログラミング Language に基づいています。 JSON は完全に言語に依存しないテキスト形式を使用しますが、C 言語ファミリー (C、C++、C#、Java、JavaScript、Perl、Python など) に似た規則も使用します。これらの特性により、JSON は理想的なデータ交換言語になります。
JSON の概念は非常に単純です。つまり、サーバーは Javascript ステートメントを直接生成し、クライアントはオブジェクトを取得した後に eval メソッドを直接使用してオブジェクトを取得するため、XML の解析コストが不要になります。
バックグラウンドから情報をロードしたい場合は、次のように XML で記述します:

<contact>
<friend>
<name>Michael</name>
<email>17bity@gmail.com</email>
<homepage>http://www.jialing.net</homepage>
</friend>
<friend>
<name>John</name>
<email>john@gmail.com</email>
<homepage>http://www.john.com</homepage>
</friend>
<friend>
<name>Peggy</name>
<email>peggy@gmail.com</email>
<homepage>http://www.peggy.com</homepage>
</friend>
</contact>
ログイン後にコピー

そして、それを JSON で記述します:

[
{
name:"Michael",
email:"17bity@gmail.com",
homepage:"http://www.jialing.net"
},
{
name:"John",
email:"john@gmail.com",
homepage:"http://www.jobn.com"
},
{
name:"Peggy",
email:"peggy@gmail.com",
homepage:"http://www.peggy.com"
}
]
ログイン後にコピー

表現が簡単なだけでなく、最も重要なのは、混乱を招く DOM 解析。 JavaScript 宣言の仕様を満たしていれば、JavaScript が自動的に解析してくれるためです。 AjaxでJSONを使う基本的な方法は、バックグラウンド宣言Javascriptオブジェクト文字列をフロントエンドで読み込み、evalメソッドを使って実際のオブジェクトに変換し、最後にDHTMLを通してページ情報を更新するというものです。

JSON は、XML の解析によって引き起こされるパフォーマンスの問題や互換性の問題を軽減するだけでなく、JavaScript での使用も非常に簡単です。配列の走査やオブジェクトのプロパティへのアクセスを通じて簡単にデータを取得できるため、データが読みやすくなります。 、基本的には構造化データの特性を持っています。これは良い方法だと言わざるを得ません。実際、Google マップはデータ転送に XML を使用せず、JSON ソリューションを使用します。

JSON のもう 1 つの利点は、たとえば www.Web.cn の Web ページで使用する場合の「クロスドメイン」です。

JSON の定義

可読性の高い軽量のデータ交換形式と、それを容易にする機能素早い書き込み。業界の主流テクノロジーは、これに対する完全なソリューション (今日ほとんどの言語でサポートされている

正規表現 に似ています) を提供し、異なるプラットフォーム間でデータを交換できるようにします。 JSON は互換性の高いテキスト形式を採用しており、C 言語システムと同様の動作を持っています。

XML の定義

拡張マークアップ言語 (XML) は、電子文書をマークして構造化するために使用されるマークアップ言語であり、許可されているソース言語です。ユーザーが独自のマークアップ言語を定義できるようにします。 XML は標準一般化マークアップ言語 (SGML) のサブセットであり、Web トランスポートに適しています。 XML は、アプリケーションやベンダーに依存せずに構造化データを記述および交換するための統一された方法を提供します。

[ XML ]

XMLを送信形式として使用する利点:


統一された形式、標準に準拠
  1. 他のシステムとのリモート操作が容易で、データ共有がより便利
  2. 欠点:

XML ファイル形式は巨大で複雑で、送信に帯域幅を消費します
  1. サーバー側のコードかクライアントのコードかに関係なく、サーバーとクライアントの両方が XML を解析するために大量のコードを費やす必要があります。非常に複雑で保守が困難です
  2. 顧客 XML の解析方法は異なるブラウザ間で一貫性がなく、多くのコードを繰り返し記述する必要があります
  3. サーバー側とクライアントで XML を解析するにはリソースと時間がかかりますサイド
  4. [JSON]
  5. XML 形式以外に、XML の機能を置き換えることができる軽量のデータ交換形式である JSON (JavaScript Object Notation) があります。

利点:

データ形式は比較的シンプルで、読み書きが簡単で、形式は圧縮されており、帯域幅をほとんど消費しません
  1. この言語は解析しやすく、クライアント側の JavaScript は eval_r() を通じて JSON データを簡単に読み取ることができます
  2. Action
  3. Script、C、C#、ColdFusion、Java、JavaScript、Perl、PHP、Python、Ruby、その他のサーバーサイド言語を含む複数の言語をサポートし、サーバーサイドの解析を容易にします
  4. PHP の世界では、 PHP-JSON および JSON-PHP が登場し、PHP シリアル化プログラムの直接呼び出しが容易になり、クライアントのアクセスと抽出を容易にするために、JSON 形式でオブジェクト、配列などを直接生成できます。

  5. JSON形式はサーバー側のコードで直接使用できるため、サーバー側とクライアント側でのコード開発の量が大幅に簡素化されますが、完了したタスクは同じままであり、保守が簡単です

欠点:

  1. XML形式ほど優れていないプロモーションは深く根付いており広く使用されており、XMLほど多用途ではありません

  2. JSON形式はWebサービスのプロモーションにおいてまだ初期段階にあります
    利点の比較JSONとXMLのデメリットとデメリット

  3. 可読性の点では、JSONとXML データの可読性は基本的に同じです。 JSON と XML の可読性はほぼ同じですが、推奨される構文と標準化されたタグ形式を区別するのは困難です。

  4. スケーラビリティの観点から言えば、XML は当然非常にスケーラブルであり、JSON には確かにそれがあります。XML で拡張できて JSON で拡張できないものは何もありません。

  5. コーディングの難易度という点では、XMLにはDom4j、JDomなどのコーディングツールが豊富にあります。JSONにもjson.orgが提供するツールがありますが、JSONコーディングは明らかにXMLよりもはるかに簡単にJSONを書くことができます。コードを使用しなくても、XML を適切に記述するのは簡単ではありません。

  6. デコードの難易度に関して言えば、XML の解析では子ノードと親ノードを考慮する必要があるため、目がくらむのに対し、JSON の解析難易度はほぼ 0 です。この時点では、XML が失うものは何もありません。

  7. 普及という点では、XML は業界で広く使用されていますが、JSON はまだ始まったばかりですが、Ajax の特定の分野では、今後の発展は XML が JSON に取って代わられるはずです。それまでに、Ajax は Ajaj (Asynchronous Javascript および JSON) になるはずです。

  8. JSON と XML にも豊富な解析メソッドがあります。

  9. XMLと比較して、JSONはデータサイズが小さいです。

  10. JSON と JavaScript 間のやり取りがより便利になりました。

  11. JSON は XML よりもデータの記述が少ないです。

  12. JSON は XML よりもはるかに高速です。

1. XMLとJSONに関するデータ交換形式の比較:
XML: HTMLに似た拡張可能なマークアップ言語 事前に定義されたタグがなく、DTD(ドキュメント型定義)文書型定義を使用します。データの整理、統一されたフォーマット、クロスプラットフォーム、言語は、長い間業界で標準として認識されてきました。具体的な情報については、Google または Baidu にお問い合わせください。軽量なデータ交換形式である JSON と比較すると、XML は重量級と言えます。
JSON: JavaScript Object Notation は軽量のデータ交換形式です。人間にとって読み書きしやすい。機械による解析と生成も簡単です。これは、標準 ECMA-262 第 3 版 (1999 年 12 月) のサブセットである JavaScript プログラミング言語に基づいています。 JSON は完全に言語に依存しないテキスト形式を使用しますが、C 言語ファミリー (C、C++、C#、Java、JavaScript、Perl、Python など) に似た規則も使用します。これらの特性により、JSON は理想的なデータ交換言語になります。
2. 軽量と重量に関するデータ交換形式の比較:
軽量と重量は相対的な用語なので、JSON と比較して XML の重量はどこにあるのでしょうか? XML は現在、次の 2 つの解析方法で設計されていると思います。 DOM と SAX;
DOM はデータ交換形式 XML を DOM オブジェクト として扱い、XML ファイル全体をメモリに読み込む必要がありますが、XML は親ノードと XML を考慮する必要があります。この時点では、JSON は 2 つの構造で構築されているため、解析はそれほど難しくありません。 key/value、配列として理解できるキーと値のペアのコレクション。
SAX は文書全体を読まなくても解析された内容を処理できます。これはステップバイステップの解析方法です。プログラムはいつでも解析を終了することができます。このように、大きな文書を少しずつ段階的に表示できるため、SAX は大規模な解析に適しています。現在、これは JSON では不可能です。
つまり、JSON と XML の軽量/重量の違いは次のとおりです。JSON は全体的な解析ソリューションのみを提供し、この方法はより少ないデータを解析する場合にのみ良好な結果を達成できますが、XML は大規模なデータの段階的な解析スキームを提供します。この方式は、大量のデータを処理するのに非常に適しています。
3. データ形式のエンコードと解析の難しさに関するデータ交換形式の比較:
エンコードに関しては、XML と JSON には独自のエンコード ツールがありますが、JSON のエンコードは XML よりも簡単です。ツールのヘルプを使用して JSON コードを生成することもできますが、適切な XML コードを記述するのは少し困難です。XML と同様に、JSON もテキストベースであり、どちらも Unicode エンコーディングを使用しており、データ交換形式の XML と同じくらい読みやすいです。 。
主観的には、JSON の方が明確で冗長性が低いです。 JSON Web サイトでは、JSON 構文の簡潔ではあるが厳密な説明が提供されています。一般に、XML はドキュメントのマーク付けに適しており、JSON はデータ交換処理に適しています。
解析に関して言えば、通常の Web アプリケーションの分野では、サーバー側で XML を生成または処理する場合でも、JavaScript を使用してクライアント側で XML を解析する場合でも、開発者は XML の解析に頭を悩ませることが多く、コードが複雑になることがよくあります。開発コストが非常に低い。実際、ほとんどの Web アプリケーションでは、データを送信するために複雑な XML はまったく必要ありません。また、XML が主張する拡張性がここで有利になることはほとんどありません。多くの Ajax アプリケーションは、動的な Web ページを構築するために HTML フラグメントを直接返すことさえあります。 XML を返して解析する場合と比較して、HTML フラグメントを返すとシステムの複雑さは大幅に軽減されますが、ある程度の柔軟性にも欠けます。データ交換形式 JSON は、XML や HTML フラグメントよりも優れたシンプルさと柔軟性を提供します。 Web サービス アプリケーションでは、少なくとも現時点では、XML は依然として揺るぎない地位を占めています。

以上がJSON と XML の長所と短所の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート