【Androidでデータやファイルと戯れる】JSONObjectのクラスメソッドを使用する

このエントリーを Google ブックマーク に追加
Pocket
[`yahoo` not found]

JSONとはRFC 4627RFC 7159で規定される構造化された文字列のことです。

AndroidでJSONを取り扱うにはorg.jsonパッケージを使用します。
今回は、JSONObjectのクラスメソッドを使用します。

JSONObjectのクラスメソッド

static String numberToString(Number number) Number numberを文字列に変換して返却する
static String quote(String data) String dataをダブルクォーテーションで囲った文字列に変換して返却する
static Object wrap(Object o) Object oの型に適した型に変換して返却します。
  • nullはJSONObject(NULL)に変換して返却する。
  • JSONArray、JSONObjectは変換せずに返却する。
  • NULLはJSONObject(NULL)に変換して返却する。
  • 配列やコレクションはJSONArrayに変換して返却する。
  • マップはJSONObjectに変換して返却します。
  • プリミティブ型や文字列はラッパークラスに変換して返却する。
  • JavaパッケージのクラスはtoString結果をStringに変換して返却します。
  • 上記の以外はnullが返却されます。

JSONObjectのクラスメソッドをを使う

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        useStaticMethod();
    }

    private void useStaticMethod() {
        try {
            String intString = JSONObject.numberToString(100);
            String longString = JSONObject.numberToString(18000305032230531L);
            String doubleString = JSONObject.numberToString(100.5);

            String quote = JSONObject.quote("JSONObject.quote");

            // nullをJSONObject(NULL)に変換して返却する。
            Object wrapNull = JSONObject.wrap(null);
            // JSONArray、JSONObjectはそのまま返却する。
            Object wrapJSONObject = JSONObject.wrap(new JSONObject());
            Object wrapJSONArray = JSONObject.wrap(new JSONArray());
            // NULLをJSONObject(NULL)に変換して返却する。
            Object wrapNULL = JSONObject.wrap(JSONObject.NULL);
            // 配列やコレクションはJSONArrayに変換して返却する。
            String[] strings = new String[]{"A","B","C"};
            Object wrapArray = JSONObject.wrap(strings);
            Object wrapCollection = JSONObject.wrap(Arrays.asList(strings));
            // マップはJSONObjectに変換して返却します。
            Map<String , Object> map = new HashMap<>();
            map.put("int" , 1);
            map.put("String" , "A");
            Object wrapMap = JSONObject.wrap(map);
            // プリミティブ型や文字列はラッパークラスに変換して返却する。
            Object wrapPrimitive = JSONObject.wrap(1);
            Object wrapString = JSONObject.wrap("String");
            // JavaパッケージのクラスはtoString結果をStringに変換して返却します。
            // それ以外のクラスはnullが返却されます。
            Object wrapJavaClass = JSONObject.wrap(Calendar.getInstance());
            Object wrapMyClass = JSONObject.wrap(new MyClass());
            String aa = "aa";
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

    private static class MyClass {
        @Override
        public String toString() {
            return "{\"int\":200,\"double\":20.5}";
        }
    }
}