我有这样的API输出:
{"user" : {"status" : {"stat1" : "54", "stats2" : "87"}}}
我使用以下命令从此API创建一个简单的JSONObject
:
JSONObject json = getJSONfromURL(URL);
在此之后,我可以像这样读取用户的数据:
String user = json.getString("user");
但是如何获取stat1
和stat2
的数据?
答案 0 :(得分:22)
JSONObject
使用JSONObject.getJSONObject(String)
,JSONObject.getJSONArray(String)
为多种不同的数据类型提供访问权限,包括嵌套的JSONObjects
和JSONArrays
。
鉴于你的JSON,你需要做这样的事情:
JSONObject json = getJSONfromURL(URL);
JSONObject user = json.getJSONObject("user");
JSONObject status = user.getJSONObject("status");
int stat1 = status.getInt("stat1");
请注意,此处缺少错误处理:例如,代码假定存在嵌套成员 - 您应该检查null
- 并且没有异常处理。
答案 1 :(得分:2)
JSONObject mJsonObject = new JSONObject(response);
JSONObject userJObject = mJsonObject.getJSONObject("user");
JSONObject statusJObject = userJObject.getJSONObject("status");
String stat1 = statusJObject.getInt("stat1");
String stats2 = statusJObject.getInt("stats2");
来自您的回复用户且状态是对象,因此使用 getJSONObject 和 stat1 和 stats2 是状态对象键,因此使用 getInt()方法获取整数值并使用 getString()方法获取字符串值。
答案 2 :(得分:1)
要访问JSON中的属性,可以使用JSON.parse解析对象,然后加入所需的属性,如:
var star1 = user.stat1;