JSON实际上也是键值对("key":"value")
key 必须是字符串,value 可以是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)
* value如果是字符串,用jsonobj.getString("key")获取
* value如果是数 字,用jsonobj.getIntValue("key"),jsonobj.getFloatValue("key"), jsonobj.getInteger("key")等基本数据类型及其包装类的方法获取
* value如果是布尔值,用jsonobj.getBoolean("key"),jsonobj.getBooleanValue("key")获取
* value如果是数 组,用jsonobj.getJSONArray("key")获取
* value如果是Object对象,用jsonobj.get("key"),获取
* value如果是JSONObject对象,用jsonobj.getJSONObject("key")获取
private static void parseJSON() {
//以下是一个json对象中嵌套一个json子对象
String JsonData = "{\n" +
" \"name\":\"张三\",\n" +
" \"id\":10,\n" +
" \"sysProperty\": {\n" +
" \"dataTimestamp\":\"1589980440812\",\n" +
" \"datastream\":\"3300_0_5750\",\n" +
" \"deviceId\":\"598766392\"\n" +
" }\n" +
"}";
JSONObject jsonobj = JSON.parseObject(JsonData); //将json字符串转换成jsonObject对象
/***获取JSONObject中每个key对应的value值时,可以根据实际场景中想得到什么类型就分别运用不到的方法***/
System.out.println(jsonobj.get("name")); //取出name对应的value值,得到的是一个object
System.out.println(jsonobj.getString("name")); //取出name对应的value值,得到的是一个String
System.out.println(jsonobj.getIntValue("id")); //取出id对应的value值,得到的是一个int
System.out.println(jsonobj.get("sysProperty")); //取出sysProperty对应的value值,得到的是一个object
System.out.println(jsonobj.getString("sysProperty"));//取出sysProperty对应的value值,得到的是一个String
System.out.println(jsonobj.getJSONObject("sysProperty")); //取出sites对应的value值,得到一个JSONObject子对象
//取出嵌套的JSONObject子对象中dataTimestamp对应的value值,必须用getJSONObject()先获取JSONObject
System.out.println(jsonobj.getJSONObject("sysProperty").getString("dataTimestamp"));
}