Android JSONObject解析问题

时间:2013-05-26 11:31:14

标签: android json

尝试使用android JSON对象来解析特定的响应,但我无法创建一个解析此响应的代码“{”r“:{”f“:[1,0,15,5948]} }”。

尝试使用以下代码,但收到错误:

“f没有价值:{”r“:{”f“:[1,0,15,5948]}}”

代码如下:

String abc = "{\"r\":{\"f\":[1,0,15,5948]}}";

JSONObject json = new JSONObject(abc);

if (json.has("r")) {

Bundle b = new Bundle();

b.putInt("p", json.getJSONArray("f").getInt(0));

b.putInt("s", json.getJSONArray("f").getInt(1));

}

我打算解析上面的响应并获取bundle各个变量中的值。 像b.putInt("p", json.getJSONArray("f").getInt(0));一样应该得到f中的1:[1 ....] 等等。

有人可以帮助我们获取上述响应值的工作代码。

2 个答案:

答案 0 :(得分:2)

"f""r"的子元素,因此您需要像这样访问它:

getJSONObject("r").getJSONArray("f")

答案 1 :(得分:0)

当你这样做时:

b.putInt("p", json.getJSONArray("f").getInt(0));

json变量仍引用json的根对象。您必须遍历一个级别才能访问字段f。

这对我有用:

String abc = "{\"r\":{\"f\":[1,0,15,5948]}}";
JSONObject json = new JSONObject(abc);
if (json.has("r")) {
    json = json.getJSONObject("r");
    Bundle b = new Bundle();
    b.putInt("p", json.getJSONArray("f").getInt(0));
    b.putInt("s", json.getJSONArray("f").getInt(1));
}

注意行:

json = json.getJSONObject(“r”);