[解決済み】JSONとXMLの比較【クローズド
質問
どちらが速いか知りたい。XMLとJSONのどちらが速いのか? いつ、どちらを使えばいいのでしょうか?
どのように解決するのですか?
いつ、どれを使うか答える前に、少し背景を説明します。
編集部:この比較は、あくまでブラウザ上でJavaScriptを使って使う場合の視点であることをお伝えしておきます。どちらのデータ形式も があります。 また、優れたパーサーはたくさんあり、細部を変更することで、私が言っていることは全く妥当ではなくなります。
JSONは、よりコンパクトで、(私の見解では)より読みやすく、転送時のデータ量が少ないので、より速く転送できます。
パースに関しては、パーサーに依存します。コード(JSONであれXMLであれ)を(マップのような)データ構造に変換するパーサーは、XMLの厳密な性質から恩恵を受けることがあります(以下、「XML」)。 XML スキーマ しかし、JSONでは、アイテムのタイプ(文字列/数値/入れ子のJSONオブジェクト)は構文的に推測することができます。
myJSON = {"age" : 12,
"name" : "Danielle"}
パーサーは、このように
12
は数字を表し、(そして
Danielle
は他の文字列と同じです)。ですから、javascriptでは、次のようになります。
anObject = JSON.parse(myJSON);
anObject.age === 12 // True
anObject.name == "Danielle" // True
anObject.age === "12" // False
XMLでは次のようになりますね。
<person>
<age>12</age>
<name>Danielle</name>
</person>
(余談ですが、これはXMLがむしろ冗長であることを示すもので、データ伝送のための懸念事項です)。このデータを使うには、パーサーを通した後、次のような呼び出しをすることになる。
myObject = parseThatXMLPlease();
thePeople = myObject.getChildren("person");
thePerson = thePeople[0];
thePerson.getChildren("name")[0].value() == "Danielle" // True
thePerson.getChildren("age")[0].value() == "12" // True
実際、優れたパーサーは
age
ということになります(逆に、そうされたくない場合もあるでしょう)。このデータにアクセスするときは、上記のJSONの例のように属性を調べるのではなく、キーである
name
. このようなXMLを作成すると、より直感的に理解できるかもしれません。
<person name="Danielle" age="12" />
しかし、データにアクセスするためにマップルックアップをしなければならないことに変わりはない。
myObject = parseThatXMLPlease();
age = myObject.getChildren("person")[0].getAttr("age");
EDIT:オリジナルです。
<ブロッククオートほとんどのプログラミング言語では(すべてではありませんが)、このようなマップ検索は、属性検索(JSONをパースしたときに上で得たような)よりもコストが高くなります。
これは誤解を招きやすい。JavaScript(および他の動的言語)では 差はない マップルックアップとフィールドルックアップの間。実際、フィールドルックアップは は は単なるマップルックアップです。
本当に価値のある比較をしたいのであれば、ベンチマークを行うのが一番です。ベンチマークは、そのデータを使う予定のコンテキストで行ってください。
私がタイプしている間に、Felix Klingがすでに、それぞれをいつ使うかという観点から比較したかなり簡潔な答えを出しているので、これ以上は省略します。
関連
-
[解決済み] Powershell - XMLをCSVに変換する
-
[解決済み] 正しいJSONコンテンツタイプは何ですか?
-
[解決済み] JSONでコメントを使用することはできますか?
-
[解決済み] なぜGoogleはJSONレスポンスにwhile(1);を前置するのでしょうか?
-
[解決済み] cURLでJSONデータをPOSTするにはどうすればよいですか?
-
[解決済み] JavaScriptでJSONをきれいに印刷する
-
[解決済み] JSONPとは何か、なぜ作られたのか?
-
[解決済み] PHPでHTML/XMLをパースして処理する方法とは?
-
[解決済み] JSONファイルをprettyprintする方法は?
-
[解決済み] 正しい」JSONの日付形式とは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] xpathSApplyを使用してRでXML属性をスクレイピングする
-
[解決済み] パワーポイント - XML - リボン - 一部のidMsoに問題があります。
-
[解決済み] 自己閉鎖的なxsl:templateタグ?
-
[解決済み] SOAPセキュリティヘッダとSOAPヘッダの違いについて
-
[解決済み] デコード � リアルキャラクターへ
-
末尾のセクションにコンテンツを入れることはできません。
-
[解決済み】googleプロトコルバッファ vs json vs XML【終了しました
-
[解決済み】フリーのXMLフォーマットツール【終了しました
-
[解決済み】XML属性とXML要素
-
[解決済み] JSON、REST、SOAP、WSDL、そしてSOA。これらはどのように結びついているのか