0

我有一个问题,我有点困惑。我对 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) {

}

我最困惑的是......数组类型相当于什么。关于获取该变量值的正确方法的任何建议或推理都会很棒......谢谢大家...... :)。

4

3 回答 3

1

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

于 2012-04-13T17:42:19.457 回答
1

这将取决于服务器应该返回什么。它可以是任何东西的数组,如果这是一项公共服务,则应该有一个规范可供参考。

如果您也负责服务器部分,并且您有一个支持对象,那么 Google 的 GSON 库非常易于使用。它还将使类型信息保持直截了当。

于 2012-04-13T17:42:53.253 回答
1

认为 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。

于 2012-04-13T17:59:55.903 回答