package jp.mixi.sample.json; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.widget.Toast; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; public class MainActivity extends Activity { public static final String TAG = MainActivity.class.getSimpleName(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); try { // JSON を取り扱うためのクラス JSONObject json = new JSONObject("{ \"hoge\" : \"hogehoge\", \"fuga_array\" : [ { \"fuga\" : \"fugafuga\" } ] }"); // JSONObject#has(String) は JSON に指定したキーが存在するかどうかを確認するメソッド。 Toast.makeText(this, String.valueOf(json.has("hoge")), Toast.LENGTH_LONG).show(); // JSONObject#isNull(String) は JSON の指定したキーの値が null 値かどうかを確認するメソッド。 // キーが存在しない場合も true となる Toast.makeText(this, String.valueOf(json.isNull("fuga")), Toast.LENGTH_LONG).show(); // JSON から値を取り出す際、2 種類の取得方法が有る。 // 1 つは optInt、optString など接頭辞が opt のもの。もう 1 つは getInt、getString など接頭辞が get のもの。 // opt 系のメソッドは、指定したキーが存在しない場合はフォールバックの値を返す。 // フォールバックの値を特に指定しない場合は、型のデフォルト値(int なら 0、String なら ""など。その他の参照型は null)が返ってくる。 // get 系のメソッドは、指定したキーが存在しない場合は JSONException を投げる。 // 何れの方法でも、JSON の表記上の型と異なる型で取得しようとした場合は、適宜型変換が行われる。 // よって、 { hoge : null } のような JSON で json.getString("hoge") とすると、null が文字列として返される。 Toast.makeText(this, json.optString("hoge"), Toast.LENGTH_LONG).show(); // JSON の配列を取り扱うためのクラス JSONArray array = json.optJSONArray("fuga_array"); Toast.makeText(this, array.getJSONObject(0).getString("fuga"), Toast.LENGTH_LONG).show(); } catch (JSONException e) { Log.e(TAG, "", e); } } }