JSONObject内部封装了一个HashMap<String, Object>,用于存储json对象的属性名和属性值。其中属性名为String类型。
//JSONObject构造1
JSONObject obj = new JSONObject();
System.out.println(obj.toString());//输出空对象: {}
obj.put("key1", 1);
obj.put("key2", 2);
System.out.println(obj.toString());//输出: {"key2":2,"key1":1}
//JSONObject构造2,参数传入json格式的字符串
JSONObject obj2 = new JSONObject(obj.toString());
System.out.println(obj2.toString());
//JSONObject属性遍历
Iterator<String> it = obj2.keySet().iterator();
while (it.hasNext()) {
String key = it.next();
System.out.println(key+"="+(int)obj2.get(key));
}
//获取JSONObject对象某个属性的值
String key = "key1";
if(obj.has(key)) {
System.out.println(obj.get(key));
}
TIPS:
在用get(String key)获取JSONObject对象的属性值的时候,出于健壮性的考虑应通过has(String key)判断一下,否则可能会抛JSONException异常,可能不同版本JSONObject实现会有差异。
org.json.JSONArray内部实现则是封装了一个ArrayList<Object>
//JSONArray构造1
JSONArray array = new JSONArray();
array.put(obj);//这里是put,而不是add
array.put(obj);
System.out.println(array.toString());
//JSONArray构造2,传入json数组格式的字符串
String jsonArrStr = "[{\"1000\":2,\"100\":111},{\"1000\":2,\"100\":222}]";
array = new JSONArray(jsonArrStr);
System.out.println(array.toString());
//JSONArray遍历
for(int i=0; i<array.length(); i++) {
JSONObject jsonObj = array.getJSONObject(i);
System.out.println(jsonObj.toString());
}