【Androidでデータやファイルと戯れる】JSONObjectの内容を操作する
JSONとはRFC 4627とRFC 7159で規定される構造化された文字列のことです。
AndroidでJSONを取り扱うにはorg.jsonパッケージを使用します。
今回は、JSONObjectの内容を操作します。
JSONObjectを操作するメソッド
JSONObject内のデータを操作するメソッドには様々な種類があります。これらのメソッドを利用してJSONObjectインスタンス内の構造や状態を確認することができます。
| boolean has(String name) |
JSONObjectインスタンス内に指定したnameが存在するかを判定する。 存在する場合はtrue、存在しない場合はfalseが返却されます。 |
| boolean isNull(String name) |
JSONObjectインスタンス内に指定したnameが NULLかどうかを判定する。 NULLの場合はtrue、NULLではない場合、又は存在しない場合はfalseが返却されます。 |
| Iterator |
JSONObjectインスタンス内のすべてのnameをIterator |
| int length() | JSONObjectインスタンス内のnameの数を取得します。 |
| JSONArray names() | JSONObjectインスタンス内のすべてのnameをJSONArrayで取得します。 |
| Object remove(String name) | JSONObjectインスタンスから指定したnameのvalueを除去し取得します。 |
| JSONArray toJSONArray(JSONArray names) |
JSONArrayで指定したnameに対応するvalueをJSONArrayで取得する。 この時、JSONObjectインスタンス内にnameが存在しない場合はnullが設定されます。 |
| String toString() | JSONObjectインスタンスからJSON文字列を生成します。 |
| String toString(int indentSpaces) | JSONObjectインスタンスから成形済みのJSON文字列を生成します。 |
JSONObjectを操作する
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
JSONObject jsonObject = createJSON();
getDataJSONObject(jsonObject);
try {
int anInt = jsonObject.getInt("int");
} catch (JSONException e) {
e.printStackTrace();
}
operationJsonObject(jsonObject);
}
private void operationJsonObject(JSONObject jsonObject) {
boolean hasInt = jsonObject.has("int");
boolean hasINT = jsonObject.has("INT");
boolean isPutNULL = jsonObject.isNull("put null");
boolean isNULL = jsonObject.isNull("int");
Iterator<String> keys = jsonObject.keys();
int length = jsonObject.length();
JSONArray names = jsonObject.names();
Object removedObject = jsonObject.remove("int");
String toString = jsonObject.toString();
JSONArray jsonArray;
String toStringJSON;
try {
jsonArray = jsonObject.toJSONArray(names);
toStringJSON = jsonObject.toString(1);
} catch (JSONException e) {
e.printStackTrace();
}
return;
}
private void getDataJSONObject(JSONObject jsonObject) {
int getInt;
int optInt;
int fallbackInt;
try {
getInt = jsonObject.getInt("int");
optInt = jsonObject.optInt("int");
fallbackInt = jsonObject.optInt("int1" , 500);
} catch (JSONException e) {
e.printStackTrace();
}
return;
}
private JSONObject createJSON() {
JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("boolean" , true)
.put("double" , 10.5)
.put("int" , 100)
.put("long" , 18000305032230531L)
.put("string" , "string")
.put("object" , createJSONObject(5))
.put("array" , createJSONArray(5))
.putOpt(null, JSONObject.NULL)
.put("put null", JSONObject.NULL)
.put("array" , createJSONArray(5))
.accumulate("accumulate" , 1)
.accumulate("accumulate" , 2)
.accumulate("accumulate" , 3);
} catch (JSONException e) {
e.printStackTrace();
}
Log.d("JSON", "onCreate: " + jsonObject.toString());
return jsonObject;
}
private JSONObject createJSONObject(int count) {
JSONObject jsonObject = new JSONObject();
try {
for(int i = 0 ; i < count ; i ++){
jsonObject.put("JSON_OBJECT_"+ i , i);
}
} catch (JSONException e) {
e.printStackTrace();
}
return jsonObject;
}
private JSONArray createJSONArray(int count){
JSONArray jsonArray = new JSONArray();
try {
for(int i = 0 ; i < count ; i ++){
jsonArray.put(i , i);
}
} catch (JSONException e) {
e.printStackTrace();
}
return jsonArray;
}
}