Java json gson(google)

このQ&Aのポイント
  • JavaでJSONデータを処理するためには、gsonライブラリを使用します。
  • JSONデータを取得して変数に格納し、gsonを使用してデシリアライズします。
  • JSONデータの中の配列をどのように受け取るかが問題となります。HashMapを使用する方法などを考えています。
回答を見る
  • ベストアンサー

Java json gson(google)

拝見して戴きまして有難うございます.今の状況を(1)~(5)にまとめました. (1) URL(http://zip.ricollab.jp/search?q=3130041&type=json)から    JSONデータを取って来きてjsonDataという変数に格納したとする. (2) Javaのgson(JSONを処理しやすくするためのクラス群)を用いているとする. (3) Userという名称のクラスを作り以下記述で受け取りたい User user = new User(); user = gson.fromJson(jsonData.toString(),User.class); (4) JSONデータは(1)のURLの時以下である. { "query": "3130041", "totalResults": 1, "itemsPerPage": 10, "result": [ { "zipcode": "3130041", "address": "茨城県常陸太田市稲木町", "lin k": "http://zip.ricollab.jp/3130041" } ]} (5) (1)~(4)の状況を抱えている状態なのですが,ここでJSONデータのresultが配列になっています.Userクラスを以下のように定義するとその手前まで全て受け取れます.しかしこの後,resultはどうすれば受け取れますか?HashMap<String, String> result;のような連想配列かな?とか思ったのですが・・・上手く出来ず困っています.分かる方お願いします. class User { String query; String totalResults; String itemsPerPage; }

  • Java
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • 1000010
  • ベストアンサー率50% (1/2)
回答No.1

class hoge{ string zipcode; string address; string link; } 上記のクラスを作成し、 List<hoge> result; で受け取れそうな気がします… 配列はListで受け取ると認識しています。

s0832080
質問者

お礼

迅速な回答有難う御座います.ご指摘戴いた通りに以下のようにListクラスを用いたデータ構造体を記述した所,無事JSONデータを受け取れました.(日本語については文字コードは調節が必要でしたが・・・. 解決とします. class Hoge{ String zipcode; String address; String link; } class User { String query; String totalResults; String itemsPerPage; List<Hoge> result; public User(){} }

関連するQ&A

  • JSONデータをフォームにセットしたい

    JSONデータを「jQuery.val」でフォームにセットしたいのですが、うまくいきません。どうしたら良いでしょうか? 具体的には、[",]が削除された状態でセットされます。元は配列ですが、JSONデータへ変換したので、フォームへセット出来ると思っていたのですが…。 JSONは、「ある形式に沿った文字列」という認識でいたのですが、違うのでしょうか? ■コード $jsondata= json_encode($originalarray) <script type="text/javascript">  var result = <?php echo($jsondata) ?>;  $("input#jsondata").val(result); </script> ■変数 ・$originalarray Array ( [0] => ./im/1a.j [1] => ./im/2.j [2] => ./im/9_1.j ) ・jsondata [".\/im\/1a.j",".\/im\/2.j",".\/im\/9_1.jp"] ・フォームにセットされる値 ./im/1a.j./im/2.j./im/9_1.jp →ここに「jsondata」をセットさせたい

  • JAVAのjsonの扱いについて

    お世話になります。 JAVAのjsonの扱いについてPHPのjson_decode()のように処理をしたいと 思っていますがうまくいかず、どなたかご教授おねがいします。 下記jsonデータの値を取得したいです。 PHPのjson_decode()のように簡単にデータにアクセスする方法はないのでしょうか? {"class":{"count":2},  "class_info":[{"name":"クラスA",          "teacher":{"name":"sam", "age":35},          "member":["AA","BB"]},          {"name":"クラスB",          "teacher":{"name":"risa", "age":30},          "member":["CC","DD"]}]} [Test.java] 下記ではMapを使用していますが簡単にアクセスできる方法を探しています。 ========================================= import net.arnx.jsonic.JSON; import java.util.Map; public class Test { public static void main(String[] args) { Map map = (Map)JSON.decode("{'class':{'count':2},'class_info':[{'name':'Aclass','teacher':{'name':'sam', 'age':35},'member':['AA','BB']},{'name':'Bclass','teacher':{'name':'risa', 'age':30},'member':['CC','DD']}]}"); /* class の情報 */ // phpの連想配列でいうとmap['class'] 表示 System.out.println(map.get("class")); // phpの連想配列でいうとmap['class']['count']表示させたい /* class_info の情報*/ // phpの連想配列でいうとmap['class_info'][0]を表示させたい // phpの連想配列でいうとmap['class_info'][0]['name']を表示させたい // phpの連想配列でいうとmap['class_info'][0]['teacher']を表示させたい // phpの連想配列でいうとmap['class_info'][0]['teacher']['age']を表示させたい // phpの連想配列でいうとmap['class_info'][0]['member'][1]を表示させたい } } =========================================

    • ベストアンサー
    • Java
  • Javascriptで複数のjsonを読み込みたい

    Javascriptについてご教授頂きたい点があり、質問しました。 私事で、現在とあるサイトの修正を行なっています。そのサイト内の更新情報の部分がJavascriptで制作されており、具体的にはjson形式のファイルをJavascriptで読み込み、HTMLとして出力する形になっています。 質問下部が、そのJavascriptです。 現在はjsonファイルをひとつだけの読み込んで表示しているのですが、 今後コンテンツの拡充するため、2種類のjsonを読み込む必要がでてきました。 jsonファイルの中身や項目ついては2種類ともほぼ同じような内容です。 考えられる様々な方法を試してみたのですが、うまくいかず、質問させていただきました。 どなたかお力添えを頂けないでしょうか。 var result2 = ''; var rec2 = 5; var jsonHostname = "元々のJSONのディレクトリURL"; var jsonUrl = ''; jsondata2 = ""; function callback_whats_new(data2) {callbackCommon2(data2);} function callbackCommon2(data2) { jsondata2 = data2; if(typeof jsondata2 == 'object'){ draw2(); } else { indexDiv2.innerHTML = '<br><div class="t_m" style="text-align:left; margin-left:8px;">当サイトをご覧いただくには、<br>JavaScriptとFlashの再生環境が必要となります。<br><br>' + '詳しくは「<a href="">ご利用に際して</a>」をご覧ください。<br><br></div>'; } } function getIndex2(n2) { var list = n2; var type = list; indexDiv2 = document.getElementById(type); filename = type; var url = jsonHostname + filename + '.json?' + (new Date().getTime()); 元々入っていたjsonファイルののURL var idval = 'jsonp_' + type; var charset = 'utf-8'; charset = charset ? charset : 'utf-8'; var headObj = document.getElementsByTagName('head')[0]; var scriptTag = document.getElementById(idval); if (scriptTag) { headObj.removeChild(scriptTag); } scriptTag = document.createElement('script'); scriptTag.type = 'text/javascript'; scriptTag.id = idval; scriptTag.charset = charset; scriptTag.src = url; headObj.appendChild(scriptTag); } function draw2(e,n1, n2, n3, n4) { result2=""; if (typeof n1 != 'undefined') turn = n1; if (typeof n2 != 'undefined') cat_2 = n2; if (typeof n3 != 'undefined') category = n3; hl = jsondata2.headline; if(typeof rec2!='number'){ hlLength = hl.length; }else if(rec2 > hl.length){ hlLength = hl.length; }else{ hlLength = rec2; } tMon = 0; for (var i = 0; i < hlLength; i++) { wrHTML2(i); } if (result2) { indexDiv2.innerHTML = result2; } else { indexDiv2.innerHTML = '<span class="t_m">該当する情報はありません。</span>\n'; } if (typeof list == 'object' && listNum < list.length) getIndex2(list); } function wrHTML2(n) { var f = 0; var f2 = 0; var icon=""; var date = (jsondata2.headline[n].date) ? jsondata2.headline[n].date : ""; if (cat_2 && cat_2 != Number(date.substr(4,2))) return; var uri = (jsondata2.headline[n].uri.uri) ? jsondata2.headline[n].uri.uri : ""; var tar = jsondata2.headline[n].uri.target; var no = jsondata2.headline[n].txt.no; var txt = (jsondata2.headline[n].txt.txt) ? jsondata2.headline[n].txt.txt : ""; var jsOpenWinFlg; if (-1!= uri.indexOf("/html/")){ if (-1!= (jsOpenWinFlg = uri.indexOf("/report/"))){ var aElementAttr = 'href="JavaScript:popupWin(\''+uri+'\',\'subwin\',\'900\',\'700\');"'; }else if (-1!= (jsOpenWinFlg = uri.indexOf("/news/other/"))){ var aElementAttr = 'href="JavaScript:popupWin(\''+uri+'\',\'subwin\',\'900\',\'700\');"'; }else{ var aElementAttr = 'href="'+uri+'" target="'+tar+'"'; } }else{ var aElementAttr = 'href="'+uri+'" target="'+tar+'"'; } if (date) date = date.substr(2,2) + '/' + date.substr(4,2) + '/' + date.substr(6); result2 += '<table width="100%"><tr>'; result2 += '<td width="17%" valign="top">' + date + '</td>'; result2 += '<td width="83%" valign="top">'; result2 += '<a ' + aElementAttr + '>' + txt + '</a>'; result2 += '</td>'; result2 += '</tr></table>'; } ​

  • JSON多次元オブジェクト(?)を配列へ変換したい

    ・下記のようなJSON多次元オブジェクト(?)を配列へ変換したいのですが、どうすれば良いでしょうか? ・json_decode試したけどうまくいきませんでした ・出来れば、data以下だけを配列で取得したいです array(1) { [0]=> string(1284) {"version":1,"req_id":null,"error":null,"data":[ {"name":"Sad","j_title":"A","id":"23","thumb":"hoge1","date":"2009","title":"Ch","url":"hoge2"}, {"name":"Wil","j_title":"r","id":"30","thumb":"hoge3","date":"2013","title":"Po","url":"hoge8"} ]} [1]=> string(1282) {"version":1,"……

    • ベストアンサー
    • PHP
  • PHPでJSON形式のデータから取得する方法

    PHPで取得したJSON形式のデータからキーワードを取得する方法を教えてください。 <?php $query = '自転車'; $url = 'http://api.suggest.search.rakuten.co.jp/suggest?cl=dir&rid=0&sid=0&oe=utf-8&cb=cb&q='.urlencode($query); $json = file_get_contents($url); print_r($json); ?> $jsonには以下のデータが返ってきます。 cb({"input":"自転車","status":0,"result":[["自転車 ライト"],["自転車 26インチ"],["自転車 カバー"],["自転車 置き場"],["自転車 27インチ"],["自転車 24インチ"],["自転車 2013"],["自転車 レインカバー チャイルドシート"],["自転車 スタンド"],["自転車 チャイルドシート"]]}) このデータから以下のキーワードデータの配列を取得するにはどうすればよいのでしょうか? 自転車 ライト,自転車 26インチ,自転車 カバー,自転車 置き場,自転車 27インチ,自転車 24インチ,自転車 2013,自転車 レインカバー チャイルドシート,自転車 スタンド,自転車 チャイルドシート

    • ベストアンサー
    • PHP
  • JSON変換データをjavascriptへ渡したい

    json_encode()関数で、JSON形式の文字列に変換した配列データをjavascriptへ渡したいのですが、 いつのまにか、ただんの文字列になってしまいます。なんででしょうか? ■コード $jsondata= json_encode($originalarray) <script type="text/javascript"> var result = <?php echo($jsondata) ?>; alert(result); </script> ■変数 ・$originalarray Array ( [0] => ./im/1a.j [1] => ./im/2.j [2] => ./im/9_1.j ) ・jsondata [".\/im\/1a.j",".\/im\/2.j",".\/im\/9_1.jp"] ・result ./im/1a.j./im/2.j./im/9_1.jp

    • ベストアンサー
    • PHP
  • 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リンク先)を取得可能なソースを教えて頂きたいと思います。 ご教授、宜しくお願い致します。

  • phpでのmysqlからjsonファイルの変換

    <? php   include("mysql2json.class.php");   //MySQL接続設定 define("DBSV", "PHPSRV"); define("DBNAME", "koukin"); define("DBUSER", "root"); define("DBPASS", "");   //MySQL接続 $conn = mysql_connect(DBSV, DBUSER, DBPASS) or die(); mysql_query("SET NAMES utf8",$conn); mysql_select_db(DBNAME, $conn);   //SQLクエリの発行 $num=0; $sql = "SELECT * FROM komento"; $result = mysql_query($sql, $conn); $num=mysql_affected_rows();   // クラスを呼び出して出力 $objJSON=new mysql2json(); print(trim($objJSON->getJSON($result,$num)));   ?> というプログラムをあるサイトを参考にさせてもらってしようさせてもらっているのですが、なぜか実行すると、getJSON($result,$num))); ?>としか出力されません。 どうしてでしょうか?

    • ベストアンサー
    • PHP
  • フォームからjQuery,jQuery.jsonを使ってJSONを作っ

    フォームからjQuery,jQuery.jsonを使ってJSONを作ってPHPで表示したい。 こんばんは。2、3日ずっと悩んでて解決しないので助けてください。 jQuery,jQuery.jsonを使ってJSONを作成しています。 クリックイベントに var form = $("#sform"); var json = $(form.serializeArray()); var strJson = $.toJSON(json); という形をとって $.ajax({ url : "request.php", type : "post", data : strJson, success: function(request){ $('#result').html(request); } }); で送っています。 ただPHP側で var_dump($_POST); を行ってもArray ( ) と表示されます。 firebugで見たところpostに入っているデータは以下の通りです。 {"0":{"name":"date","value":"2010/09/15"},"1":{"name":"type","value":"new"},"2":{"name":"bin[]","value":"2"},"3":{"name":"bin[]","value":"3"},"length":4} var_dumpで表示できないのはなぜでしょうか? 上記で変数json のまま送るとオブジェクトとして送れてvar_dump でも表示できます。 ただ今はjson の勉強をしているので、できればなぜこうなっているのかを理解したいです。 基本的なところで勉強不足かもしれませんが、何かアドバイスなど頂けると嬉しいです。 よろしくお願いします。

  • 2次元のJSON形式の配列の展開

    JSON形式で受け取った2次元配列をHTMLに書き出そうとしています。 配列を指定するカラム名?を変数にしたいのですがうまくできません。 var hoge = "abc"; var len = result.length; for (i = 0; i < len; i++){  objResult.append("<li><a href=" + result[i].ID + ">" + result[i].hoge + "</a></li>"); } ※objResultはul要素を変数に収めたものです。 JSONデータは1列目のカラム名は『ID』で固定ですが2列目は変動する為、上記の『hoge』の部分にはJSONデータを受け取る前にカラム名を別処理で取得して格納しています。 ご教授の程よろしくお願いします。