2012年11月20日火曜日

AndroidでJSON取得

取得できるものがJSON ArrayなのかJSONなのか分かった上で切り替えれば良いのですが、一つの内部関数なんかで処理しちゃいたい場合事ありますよね?(強引)
その場合、下記のような関数を使う事で


Arrayだった場合 : そのままJSONArrayとして取得
Objectだった場合 : 要素として一つだけJSONObjectが含まれたJSONArray
それ以外 : 要素0のJSONArray


として一括でArrayとして扱えます。

private JSONArray convertJSONArray(String jsonString) {
    JSONArray ret=null;
    try {
        ret = new JSONArray(jsonString);
        Log.d(TAG, "convertJSONArray : Array");
        Log.d(TAG, "convertJSONArray : ret = "+ ret.toString());
        return ret;
    } catch (JSONException e) {
        ret = new JSONArray();
        try {
            JSONObject json = new JSONObject(jsonString);
            ret.put(json);
            Log.d(TAG, "convertJSONArray : Object");
        } catch (Exception e1) {
            Log.d(TAG, "convertJSONArray : Fails");
        }
        Log.d(TAG, "convertJSONArray : ret = "+ ret.toString());
        return ret;
    }
}
まあえばって公開するほどのコードでも無いんですが、いちいちArrayとObjectを切り替えるのがコード上面倒だったもんで、ちょっと悩みました。 なのでせっかくなんで公開しておきます。