• ベストアンサー

JSONとはどんな場合に使うのでしょうか?

JSONについて調べると、 ・XMLよりも軽量で扱いやすい ・javascriptやphpから使う 上記のような説明と簡単にコードの書き方くらいしか説明されていません。 どういった場合にJSONは利用できるのかイメージを沸かせたいです。 例えば、トップページに新着情報があり、過去の新着情報を一覧として見れるページがあるとします。そして、過去の新着情報一覧のページにある新着情報を新着順に10件選び、選んだ10件をトップページの新着情報に表示させる場合に使う。 こんなイメージで間違っていないでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.4

> http://blogs.dion.ne.jp/kotemaru/archives/2011-0529.html > こちらを参考にすると、CSVよりもJSONの方が軽いそうなのですが、 ・Python版は XML or CSV のようだ ・(XMLより)JSONの方が軽い ・CSVは簡易形式としては便利だけどBigtableを完全に表現できない ・(だから)まずデータ形式はJSONとする。 という意味で書いている文章だと思います。JSONの方が軽い,という箇所は,XMLの方だけに掛かっているはずです。一般的にJSONよりCSVの方が軽いと言えるでしょう。 > 小量の場合にCSVを使う利点は何でしょうか。 表計算ソフトで作成した最も基本的な2次元表のようにデータ形式が単純なら扱いやすい,ExcelなどからそのままCSV出力できるというのが利点でしょうか。 例えば,CSV形式の例がこんな風であるのに対して, "postal","x","y","line","name" "6770039","134.997666","35.002054","JR加古川線","日本へそ公園" "6770033","134.995740","34.988777","JR加古川線","比延" "6790313","134.992545","35.022740","JR加古川線","黒田庄" JSON形式の例はこうなります。 {"station":[ {"postal":"6770039","x":134.997666,"y":35.002054,"line":"JR加古川線","name":"日本へそ公園"}, {"postal":"6770033","x":134.995740,"y":34.988777,"line":"JR加古川線","name":"比延"}, {"postal":"6790313","x":134.992545,"y":35.022740,"line":"JR加古川線","name":"黒田庄"} ]} CSVと比較したJSONの特徴として次のようなことは言えるでしょう。 ・属性名が繰り返し記録されている分だけ,CSVよりもサイズは大きい。 ・繰り返し登場している各情報は「配列 station[] の要素である」という上位の情報までJSONでは表現できている。 ・つまり最も基本的な2次元表的なデータ形式だけでなく「階層構造をもった情報は、階層構造をそのまま表記できる(ANo.2)」 JSONの名が示すとおり,JavaScriptで用いられるオブジェクト表記法(Object Notation)だということです。

kiseki777
質問者

お礼

参考になりました。具体的に有難うございます。

その他の回答 (3)

  • dscripty
  • ベストアンサー率51% (166/325)
回答No.3

[No.2]のお礼に対する回答ね。 「こちらを参考にすると、CSVよりもJSONの方が 軽いそうなのですが、……」 参考のページは、ちょっと誤解をまねくかきかただね。本人も XML と JSON の比較のつもりで書いているんじゃない? 自分の予想をもっと信じていいとおもうよ。

kiseki777
質問者

お礼

分かりました。有難うございました。

  • dscripty
  • ベストアンサー率51% (166/325)
回答No.2

[No.1] さんも書いているけれど、JSON は、情報をテキストで表記するための書式のひとつにすぎないよ。 例えで質問者さんがあげている新着情報だと、一つの新着情報に必要な項目は、たかだか - 日時 - 見出し - 詳細 ぐらいでしょ? 多少項目が増えることはあってもこれぐらいなら、表形式の情報表記書式、タブ区切りテキストやカンマ区切りテキスト(CSV)で十分だよね。 でも、もっと複雑な情報、例えば組織図をイメージして、そして、その組織図を表形式であらわせるかためしてみて? 表形式のデータベースを学んだひとなら、できなくもないけれど、とても扱いずらいよ? 組織図のような、階層構造をもった情報は、階層構造をそのまま表記できる JSON 書式がまさに最適だね。 もっと複雑な情報なら XML をつかえば、たいていまかなえるよ。 つまり、情報の複雑さにあわせて、情報表記の書式を選べばいいということになるかな?

kiseki777
質問者

お礼

ありがとうございます。CSVというのもあるのですね。 1点疑問があります。JSONよりもCSVの方が軽いので CSVで複雑にならない程度の量ならCSVを使うべきと予想したのですが、 http://blogs.dion.ne.jp/kotemaru/archives/2011-0529.html こちらを参考にすると、CSVよりもJSONの方が軽いそうなのですが、 小量の場合にCSVを使う利点は何でしょうか。 http://sookibizviz.blog81.fc2.com/blog-entry-175.html こちらもJSON、CSV、XMLの参考になりました。

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.1

例として,下記リンク先にアクセスして,各APIの説明ごとに紹介されている「サンプルレスポンス」のURLをクリックしてください。JSON形式のデータが閲覧できます。 http://express.heartrails.com/api.html ということで。 JSONはデータ表現形式のひとつですから,質問文にあるような場合はもちろん,他のどんな場合にも使えるといってよいでしょう。

kiseki777
質問者

お礼

XMLのようにコードを書いていろいろ動きを作るものと思っていましたが、 JSONはただコードをテキスト化したものということなんですね。 ありがとうございました。

関連するQ&A

  • GoogleMpsAPIのjson.jsによる読み込み

    GoogleMapsAPIの勉強をしています、プログラミング初心者です。 「GoogleMapsAPI徹底活用ガイド」という解説本を参考にしています。 中心位置情報をJSON形式で別ファイルに記述したものをjavascriptプログラムで読み込み、実行、googlemapに反映させたいのですが、うまくいきません。 JSON in JavaScript のページ(http://www.json.org/js.html)のリンクからJSON処理ライブラリjson.jsのスクリプトをコピー、私のサーバー内に保存し、 <head></head>内で <script type="text/javascript" src="json.js" charset="utf-8"></script> とsrc属性にjson.jsを指定、 javascriptのfunciton {}内で、 GDownloadUrl( "center.json", mySetCenter ); function mySetCenter(data) { var obj = data.parseJSON(); map.setCenter( new GLatLng(obj.lat, obj.lng), obj.zoom ); } としています。 center.jsonというのが、JSON形式の位置情報ファイルです。 解説本のサンプルを使用しているので、スクリプトの間違いではないと思います。 json.jsを使わず、javascriptでeval関数を使う場合は、正常にJSON形式の中心位置情報のデータが読み込まれ、地図が表示されます。 おそらく、json.jsのダウンロード方法やサーバへの配置方法などが間違っているではないかと思いますが、参考になる資料がなく困っています。 どなたかご教授お願いいたします。

  • javaを使い、jsonデータを取得したい。

    Apple iTunes Store RSSのjson形式データを、 javaを使い取得し、取得した情報を表示させたいのですが、 試行錯誤しましたが、未だ取得・表示出来ませんでした。 ・Apple iTunes Store RSS https://rss.itunes.apple.com/jp/ ソング トップ10のjsonデータ URLの末尾にxmlをjsonに入力。 https://itunes.apple.com/jp/rss/topsongs/limit=10/json また、取得の際に、gsonを使いたいと思います。 javaのソースでgsonを使い、上記itunesの情報(音楽アーティスト名、曲名、発売日、URLリンク先)を取得可能なソースを教えて頂きたいと思います。 ご教授、宜しくお願い致します。

  • .htaccessによるディレクトリ内ファイル一覧出力(JSON形式)

    .htaccessによるディレクトリ内ファイル一覧出力(JSON形式) .htaccessを利用して,ディレクトリ内部のファイル一覧をJSON形式で出力することを考えています. DirectoryIndexで設定したインデックスファイルが存在しない場合に表示される ファイル一覧ページを変更する形での実現を調べてみましたが,よくわかりませんでした. .htaccessでそのような設定は可能なのでしょうか. また,ファイル一覧ページの変更以外に何か方法はあるのでしょうか. なお,PHP等のサーバーサイドスクリプトは使わない方針でお願いします.

  • JSONを使いページから他ページへ情報を渡す方法

    同じレイアウトのページが数百ページあり、各ページの一部分を1つのページにまとめる方法を知りたいです。 JSONでできるようなので、サイトを参考にしながら作ってみました。 各ページの集めたい部分をオブジェクトで指定してJSONのテキストへ変換し、 集めたページにJSONを読み込み、変数に代入したJSONの情報を取得して表示を試みました。 しかし、やってみるとページ間で同じデータを扱うのが上手にできませんでした。 アドバイスを頂けないでしょうか。 <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>集めたページ</title> <script type="text/javascript" src="js/json.js"></script> </head> <body onload="jsontop()"> <div> <ul> <li><a href=""><span></span></a></li> <li><img src=""></li> </ul> ・・・・・・ULがページ数の数だけ続く </div> </body> </html> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>各ページのサンプル</title> <script type="text/javascript" src="js/json.js"></script> </head> <body onload="json(1)"> <h1>1ページ目</h1> <h2>タイトル</h2> <p>複数ページある中の1ページ目です。このページの一部分を他のページに利用したいです。</p> <dl> <dt>サンプル画像</dt> <dd><img src="img/sample01.jpg"></dd> </dl> </body> </html> -----json.js------ function json(no){ var obj = { h1: no+"ページ目", imgsrc: "img/sample0"+no+".jpg", thisurl:"page01/sample01.html" }; var str = JSON.stringify(obj); } function jsontop(){ JSON.parse(str); var tagimg = document.getElementsByTagName("img"); var tagspan = document.getElementsByTagName("span"); var tagli1 = document.getElementsByTagName("li")[0]; tagspan[0].innerHTML = obj.h1; //1ページ目のタイトルを取得し置き換える var img = new Image(); tagimg[0].src = obj.imgsrc; //1ページ目の画像のパスを取得し置き換える tagli1.href = obj.thisurl; //1ページ目のURLをアンカーに設定 }

  • JSON形式で取得できない、RSS内の要素

    Google AJAX Feed APIを用いてウェブサイトの新着情報欄に 他のブログ記事(Word Press)を読み込ませたいと思っております。 その中の、画像を取得する要素は、 <thumbnail>画像のアドレス.jpg</thumbnail>となっており、 JSON形式に変換したところ、表示されませんでした。 これは、Google AJAX Feed APIで取得できないということでしょうか? どうすれば取得できるのでしょうか。 別の参考になるjavascriptを、探すのが良いのでしょうか? プログラミングには詳しくありません。 良い案があれば、お知恵をお借りできればと思います。 どうぞ、よろしくお願いいたします。

  • Yahooの新着メール通知

    新着メールがあると、トップページに「新着メールが○件あります」と表示されますよね。 クーポンなどの情報は振り分け設定で別フォルダに入るようにしているのですが、「受信箱」に来たメールは新着通知表示し、振り分け設定で「別フォルダ」に来たメールはトップページに新着通知をしないように設定はできますか?

  • Typepadのjsonフィードの利用について

    typepadでブログを作成し更新した内容を別のホームページのトップページ などに更新情報として自動更新する方法にJSONフィードというものがあるようです。 http://****.typepad.jp/***/feed.js ←自動的に生成される。 ここまでは解ったのですが、これをどのように使うかが解りません。 http://www.sixapart.jp/typepad/inside/2006/11/010479.html を見ましたが、上手く使えません。ここのコードを作成した上記***に変更する だけではだめなようです。 どのようにすればいいかアドバイスお願いします。

  • JSONのデータから商品名の取得の仕方

    今現在下記の記述でJSONを取得しています。 ===== <html> <head> <title>JSONのデータを使ってみる</title> </head> <script type="text/javascript" src="./prototype.js"></script> <script type="text/javascript"> function execute() { var url = './ItemSearch_json.php'; var paramList = "keyword=" + encodeURIComponent("ふくろう"); var a = new Ajax.Request( url, { method: 'get', parameters: paramList, onSuccess: function(request) { // alert('読み込み成功しました'); // jsonの値を処理する場合↓↓ var json; eval("json="+request.responseText); }, onComplete: function(request) { alert('読み込みが完了しました'); $('container').innerHTML = request.responseText; // jsonの値を処理する場合↓↓ var json; eval("json="+request.responseText); }, onFailure: function(request) { alert('読み込みに失敗しました'); }, onException: function (request) { alert('読み込み中にエラーが発生しました'); } } ); } </script> <body> <div id="container">content</div> <button onclick="execute()">サンプル実行</button> </body> </html> ===== このままだと、プレーンテキストは表示されるのですが、商品名や価格の一覧などを選択して表示できません。 evalなどを使うのかなと思うのですが、はっきり分かりません。 ヒントを教えていただけないでしょうか。

    • ベストアンサー
    • AJAX
  • FC2ブログの編集について

    FC2ブログを始めたのですが、トップページに新着記事の一覧の表?を作りたいのですがやり方がわかりません どなたか作り方が分かる方、または作り方が書かれているページをご存知の方はいないでしょうか 新着記事の一覧の表?とは VIPPERな俺(ライブドアブログですが) 様 やらおん 様 などのトップページにあるあれです(両サイト様名前を使ってしまいすいません><)  どうかご回答お願いします!

  • 現在、別ページの新着RSSフィードをGoogle AJAX Feed

    現在、別ページの新着RSSフィードをGoogle AJAX Feed APIで取得しトップページに新着タイトルを表示させるようにしています。 このタイトルに一定期間new表示をさせるには、どこに何を記述すれば良いのかを教えて頂きたいのです。 現在トップページには次のようなJavascriptを記述しております。 <script type="text/javascript"> var _handleJson = function( json ) { if ( json.responseStatus != 200 ) return; var i, d, t = '<ul>', e = json.responseData.feed.entries; for ( i = 0; i < e.length; i++ ) { d = new Date(e[i].publishedDate); t += '<li>' + '<a href="' + e[i].link + '">' + e[i].title + '</a> ' + '(' +(d.getFullYear() - 2000) + '/' +(d.getMonth() + 1) + '/'+d.getDate() + ')' +'</li>'; } document.write( t + '</ul>' ); }; (function() { var blogUrl = 'http://******.com/rss15.xml'; var apiUrl = 'http://ajax.googleapis.com/ajax/services/feed/load?callback=_handleJson&v=1.0&output=json&num=30&q='; document.write( '<sc' + 'ript type="text/javascript" src="' + apiUrl + encodeURIComponent(blogUrl) + '"></sc' + 'ript>'); })(); 上記の記述で「後期会員募集が始まりました(10/09/01)」と最新の記事タイトルが表示されるようになりました。 これを「後期会員募集が始まりました(10/09/01)new!」としたいのです。 上のスクリプトのどこに一定期間newを表示させるスクリプトを記述すれば良いでしょうか? 申し訳ありませんが、何卒ご教授宜しくお願い致します。

専門家に質問してみよう