JSON形式のデータをパースしてみる。
JSONは、キーと値がペアの形で管理されたデータ形式です。
例えば、CD売上の上位3位のランキングを例にとると、こんな感じ。
{"rank":[
{"no":"1","title:"abc","price":"100"},
{"no":"2","title:"def","price":"200"},
{"no":"3","title:"ghi","price":"300"},
]};
人間にとって、感覚的に分かりやすい形式だと思います。
やることは、3つ! @サーバーから取得したJSONデータをJSONObjectオブジェクトにする。 AJSONデータが配列形式なら、JSONArrayオブジェクトにする。 Bあとは、1件ずつキーの文字列を元に値を取得する。 取得した値は、JSONデータの構成と同じ構成のクラスのオブジェクトで管理すると良い。 |
public class RankInfoFactory { public static ArrayList<RankInfo> list=null; /* * テキストデータの解析 */ public static ArrayList<RankInfo> create(String response) { if(list == null){ list = new ArrayList<RankInfo>(); } try { JSONObject rootObject = new JSONObject(response); // dataオブジェクトの取得 JSONArray dataArray = rootObject.getJSONArray("rank"); for(int i = 0; i < dataArray.length(); i++) { RankInfo Info = new RankInfo(); JSONObject data = dataArray.getJSONObject(i); Info.setNo(null); if(data.has("no")) { Info.setNo(data.getString("no")); } Info.setTitle(null); if(data.has("title")) { Info.setTitle(data.getString("title")); } Info.setIcon(null); if(data.has("price")) { Info.setPrice(data.getString("price")); } list.add(Info); } } catch(JSONException je) { list = null; } return list; } /* * 指定ランキング情報の取得 */ public static RankInfo getData(int position){ RankInfo data = null; if(list!=null){ data = list.get(position); } else{ data = null; } return data; } /* * ランキング登録件数の取得 */ public static int getCount(){ if(list==null){ return 0; } return list.size(); } /* * ランキング登録件数のクリア */ public static void clearList(){ if(list==null){ return; } list.clear(); } }