XMLと似ているようなのですが、どう違うのですか?
・JSONを使う理由&使わない理由
・それでもXMLを使う理由&使わない理由
・JSONを勉強するために参考になるHPや本
それぞれのメリットや使い道など書いてください。
参考になるものがあったら、それもお願いします。
※y-kawazさんとmatsu-booleanさん
ポイントをあげる方法がわからないので回答してください。
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 + ")");
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 + ")");
前回に続きありがとうございます
いえいえ、あんなに書いてもらったのに1ポイントでは。
JSONは文法がJavaScript風なのでJavaScriptおよびその派生言語の場合パースが簡単です、極端な話そのデータがクリーンであればeval()だけで読み込むことが出来ます。
またXMLよりは表記が簡単なので人間にとって読み書きしやすいと思います
XMLはエディタが豊富、スキーマ定義によってそれ自体に意味を持たせることが容易。
XML-RPCなどでは必須
XSLTなどの周辺技術が豊富などのメリットがあると思います。
とりあえず入門ページを貼り付けておきます
http://www.baldanders.info/spiegel/remark/archives/000171.shtml
また似たような技術としてはYAMLがあげられます
ありがとうございます。
前回に続きありがとうございます