JSONObject和JSONArray使用注意:
(1)二者比较容易区别,别误用,JSONObject是{}结构,JSONArray是[]结构。
(2)如果没有对应的key,会抛出异常。
(3)如果put进去的东西是null,那么不会被存进去,但是”“可以。
JSONObject和JSONArray使用的几种常见情况:
//1 json对象转换为字符串
JSONObject subObject = new JSONObject();
subObject.put("ooo", "***");
subObject.put("ppp", "&&&");
JSONObject object = new JSONObject();
object.put("aaa", "111");
object.put("bbb", null);
object.put("ccc", subObject);
System.out.println(object.toString());
/*//{"aaa":"111","ccc":{"ppp":"&&&","ooo":"***"},"bbb":"222"}
//2 json数组对象装换为字符串
//JSONObject到JSONArray
JSONArray array = new JSONArray();
JSONObject object1 = new JSONObject();
object1.put("aaa", "111");
object1.put("bbb", "中文");
JSONObject object2 = new JSONObject();
object2.put("aaa", "111");
object2.put("bbb", "222");
array.put(object1);
array.put(object2);
System.out.println(array.toString());
//[{"aaa":"111","bbb":"中文"},{"aaa":"111","bbb":"222"}]
//3 字符串转换为json对象
String jsonStr = "{\"aaa\":\"111\",\"ccc\":{\"ooo\":\"***\",\"ppp\":\"&&&\"},\"bbb\":\"222\"}";
JSONParser parser = new JSONParser();
try {
JSONObject parseObject = (JSONObject)parser.parse(jsonStr);
System.out.println("---->" + parseObject.toJSONString());
} catch (ParseException e) {
e.printStackTrace();
}
//4 字符串转换为数组
jsonStr = "[{\"aaa\":\"111\",\"bbb\":\"222\"},{\"aaa\":\"111\",\"bbb\":\"222\"}]";
try {
JSONArray parseObject = (JSONArray)parser.parse(jsonStr);
System.out.println("---->" + parseObject.toJSONString());
} catch (ParseException e) {
e.printStackTrace();
}
//5 集合转换为JSONArray对象
//初始化ArrayList集合并添加数据
List<String> list = new ArrayList<String>();
list.add("username");
list.add("age");
list.add("sex");
//初始化HashMap集合并添加数组
Map map = new HashMap();
map.put("bookname", "CSS3实战");
map.put("price", 69.0);
//初始化JSONArray对象,并添加数据
JSONArray array2 = new JSONArray();
array2.put(list);
array2.put(map);
System.out.println(array2.toString());
//生成的JSON字符串为:[["username","age","sex"],{"bookname":"CSS3实战","price":69}]
//6 根据接收到的JSON字符串来解析字符串中所包含的数据和数据对象
//接收到的JSON字符串
String result = "[{\"username\": \"your name\", \"user_json\": {\"username\": \"your name\", \"nickname\": \"your nickname\"}}]";
//根据字符串生成JSON对象
JSONArray resultArray = JSONArray.fromObject(result);
JSONObject resultObj = resultArray.optJSONObject(0);
//获取数据项
String username = resultObj.getString("username");
//获取数据对象
JSONObject user = resultObj.getJSONObject("user_json");
String nickname = user.getString("nickname");
System.out.println(username);//your name