在Android中从JSON访问对象

时间:2012-04-13 17:34:48

标签: android json arrays

我有一个问题,我有点困惑。我是JSON的新手,并在android API中获取JSON值。我想在我得到的响应中访问一个数组。我得到的JSON代码是这样的:

Response:
{
"event": {  
    "participants": []
},
"status": "success"
}

我如何访问参与者数组并存储其值。这就是我现在正在尝试的......但我似乎没有得到我想要的东西。

try{
                //get the JSON values from the URL.
                JSONObject json = jParser.getJSONFromUrl("http://somesite.com/api/find?"+"somevar="+someJavaStringVar);

                json_event = json.getJSONObject("event");

                JSONArray json_array_participants = json_event.getJSONArray("participants");  

} catch(JSONException e) {

}

我最担心的是......数组类型相当于什么。任何关于获得变量值的正确方法的建议或推理都会很棒......谢谢你们...... :)。

3 个答案:

答案 0 :(得分:1)

我强烈建议使用gson作为首选解析器,因为除了创建域对象之外,它将为您执行序列化和反序列化的所有工作。 本教程可以帮助您: http://www.javacodegeeks.com/2011/01/android-json-parsing-gson-tutorial.html

答案 1 :(得分:1)

这取决于服务器应返回的内容。它可以是任何东西的数组,如果这是一个公共服务,那么应该有一个规范可以用。

如果你负责服务器部分,并且你有一个支持对象,谷歌的GSON库非常容易使用。它还可以直接保存类型信息。

答案 2 :(得分:1)

Think JSON实际上只是一个键值配对。 JSONArray类型只是一个充满对象的数组(如Object[]) - 它不知道它包含的对象是什么或者它们将被用于什么。您可以根据您对源的了解为JSON流分配含义。从我对你的代码的看法来看,大多数看起来很好,但我不知道你的jParser.getJSONFromURL()在做什么。通常,您将从响应字符串构建JSON,如下所示:

String jsonString = getJSONFromUrl("http://somesite.com/api/find?"+"somevar="+someJavaStringVar);

JSONObject json = new JSONObject(jsonString)

JSONObject json_event = json.getJSONObject("event");

JSONArray json_array_participants = json_event.getJSONArray("participants");

您可以像任何其他数组一样遍历数组以获取子对象或其他:

for(int i=0; i < json_array_participants.getLength(); i++) {
  JSONObject participant = json_array_participants.getJSONObject(i);
  // Do stuff
}

作为旁注 - 我将使用GSON,直到您了解底层协议,至少一点 - 因为您永远不知道何时可能出于某种原因需要从其他语言解析JSON。