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 件のコメント:
コメントを投稿