我有一个问题,我有点困惑。我是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) {
}
我最担心的是......数组类型相当于什么。任何关于获得变量值的正确方法的建议或推理都会很棒......谢谢你们...... :)。
答案 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。