2013年8月10日土曜日

JSON( JSONObject, rootObject)

Androidアプリで、WEB通信の返し値をさばきたいときありますよね??

WEBAPIでよく使われる返し値はたいていJSON型なので、
JSONをパースしてみようと思います。

◆JSONオブジェクトの生成

JSONObject 変数名 = new JSONObject(文字列);

このように渡せば文字列がJSON型で返されます。

◆サンプルソース

{"result":"true","item_list":{"item_1":"apple","item_2":"banana","item_3":"melon"}}
こんなJSONがWEBAPIで返ってくるというていでお願いいたします。

package com.page.sss;

import org.json.JSONException;
import org.json.JSONObject;

import android.os.Bundle;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.app.Activity;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //基礎画面の作成
        LinearLayout oLayout = new LinearLayout(getApplicationContext());
        oLayout.setOrientation(LinearLayout.VERTICAL);
        setContentView(oLayout); 
        
                
        //postデータを作成

            ~~~~~~
     ~~~~~~

        //WEBAPIにPOST時の返し値を取得
        String sRet = post(sUrl);
        //テキストビューに出力
        oLayout.addView(Make_TextView("返し値:" + sRet));
        
        try {
            //文字列をJSONオブジェクトに変換
            JSONObject rootObject = new JSONObject(sRet);

            //キーから、アイテムを取得する
            JSONObject itemobject = (JSONObject)rootObject.get("item_list");
            //JSONオブジェクト型から、文字列に変換
            String sKekka = itemobject.toString();
            //テキストビューに出力
            oLayout.addView(Make_TextView("1階層掘り下げ:" + sKekka) );
            //テキストビューに出力
            oLayout.addView(Make_TextView("一番奥の情報:" + itemobject.get("item_2").toString()) );
        } catch (JSONException e) {
            // TODO 自動生成された catch ブロック
            e.printStackTrace();
        }
    }
    
    private TextView Make_TextView(String sText){
        TextView oTv = new TextView(getApplicationContext());
        oTv.setText(sText);
        return oTv;
    }
    
}
◆実行結果
こんな、感じで無事に文字列を取得できました!! JSONObject itemobject = (JSONObject)rootObject.get("item_list"); この部分はもっと上手く作る方法もあるかと思うんですが、どうなんだろう。。。。 個人的にはPHPのように簡単に連想配列にできるわけでもなく、JSONって結構面倒 とか思っているのですが、とりあえずできてよかったです。

0 件のコメント:

コメントを投稿