当出现多层json数据时(如下图)
需要得到lives–>0–>weather的数据(即“阴”)
步骤如下:
1.先获取全部json数据,用StringBuilder来接收这些数据。因为可以使用它的自带方法append。
2.可以看到外层是一个JSONObject,里面是一个JSONSArray。所以用JSONObject来先获取到“lives”这个节点的数据,里面是一个中括号包起来的数组。
3.由于只有一个数组元素,所以就是getJSONObject(0)来得到这一个元素。往后就累加。
4.再解析最里面的属性“weather”,最终得到对应的值 “阴”。
5.记得关闭连接。这个连接是你获取到json数据的连接。
try {
InputStream in = connection.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in, "UTF-8"));
StringBuilder response = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
response.append(line).append("\r\n");
}
reader.close();
JSONObject jsonobject = new JSONObject(response.toString());
JSONArray js=(JSONArray)jsonobject.get("lives");
JSONObject lives = js.getJSONObject(0);
String weather = lives.get("weather").toString();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (connection != null) {
connection.disconnect();
}
}