人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

XMLをJSONに変換するサービスやプログラムをJSONで書くなど、最近JSONというのを見かけます。
XMLと似ているようなのですが、どう違うのですか?

・JSONを使う理由&使わない理由
・それでもXMLを使う理由&使わない理由
・JSONを勉強するために参考になるHPや本

それぞれのメリットや使い道など書いてください。
参考になるものがあったら、それもお願いします。

※y-kawazさんとmatsu-booleanさん
ポイントをあげる方法がわからないので回答してください。

●質問者: farusan
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:MATSU サービス プログラム ポイント メリット
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● matsu-boolean
●40ポイント ベストアンサー

JSON はJavaScript(ECMAScript)でオブジェクトを表す式そのものです。なので、HTTPレスポンスの文字列をそのままeval関数で解釈すればそのままJavaScriptで利用可能になります。読みやすいし、使いやすいので最近よく見かけるのですね。

欠点としてはセキュリティ上の問題として、eval関数を使って解析すると、HTTPレスポンスとして渡された文字列に悪意のあるコードを埋め込めてしまうということです。このため信頼できるサイトからのHTTPレスポンス以外解釈しないようにするか、JSONを解釈できるJavaScriptのライブラリを使って解釈することになります。手軽に利用できるのがJSONの強みなのに後者の解決法ではなんだか本末転倒ですね。

あとは、受け取り側(クライアント側)がJavaScript(ECMAScript)でない場合、やはりパーサーを用意しないといけないということで、XMLと比べてメリットが無いことになってしまいます。

そんなところだと思います。

…と、ここまでは前回も書いたのですがついでに、

実は自分のホームページでもJSON使ってます。

http://www.wind.sannet.ne.jp/m_matsu/index.html や、その他ページにアクセスすると、右上に「-- こちらのページもどうぞ --」とプルダウンを出しています。ページ構成が変わったときに全てのページを修正して回るのがいやなので、JSONを使って一括で変更できるようにしています。まあ、無理にJSON化する必要も無かったかもしれませんが…。

各ページには"slPageList"のIDを持つ<select>タグがあります。アクセスすると、

1.http://www.wind.sannet.ne.jp/m_matsu/js/changePage.js の中の、slPageList_init()が呼び出されます。

2.prototype.jsのAjax.Request()を使い、http://www.wind.sannet.ne.jp/m_matsu/pageList.txtを読み込みます。

3.Ajax.Request()のonComplateイベントで、レスポンスの文字列を eval()で処理してJSON表現からJavaScriptのオブジェクトへ変換します。

4.受け取ったオブジェクトからslPageListの<select>タグに<option>タグを追加していきます。

一般的には http://www.wind.sannet.ne.jp/m_matsu/pageList.txt の部分をサーブレットやPHPを使って動的に生成するのですね。今回のページでは単なる静的なテキストファイルです。

evalの引数としてHttpレスポンスを渡すときにカッコでくくってやるのがミソらしいです。自分もちょっと悩みました。

こんな感じ → var responseObj = eval("(" + httpObj.responseText + ")");

◎質問者からの返答

前回に続きありがとうございます


2 ● y-kawaz
●20ポイント

いわしでの質問の件ですね、律儀にありがとうございます(^-^;

http://q.hatena.ne.jp/1192284151/121234/#i121234

◎質問者からの返答

いえいえ、あんなに書いてもらったのに1ポイントでは。


3 ● paraizo
●20ポイント

JSONは文法がJavaScript風なのでJavaScriptおよびその派生言語の場合パースが簡単です、極端な話そのデータがクリーンであればeval()だけで読み込むことが出来ます。

またXMLよりは表記が簡単なので人間にとって読み書きしやすいと思います

XMLはエディタが豊富、スキーマ定義によってそれ自体に意味を持たせることが容易。

XML-RPCなどでは必須

XSLTなどの周辺技術が豊富などのメリットがあると思います。

とりあえず入門ページを貼り付けておきます

http://www.baldanders.info/spiegel/remark/archives/000171.shtml

また似たような技術としてはYAMLがあげられます

◎質問者からの返答

ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ