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();
    }
}
	
inserted by FC2 system