我收到了Json的回复。我无法从string.my字符串中获取值
Json_response是
{"NameAllList":[{"Current":{"time":"2012-02-21T08:04:21","Name":"abcd"},
"Next":{"Name":"data1","StartTime":"2012-02-21T08:06:21"}},{"Current":{"time":"2012-02-21T08:14:21","Name":"defg"},
"Next":{"Name":"data2","StartTime":"2012-02-21T08:24:21"}},{"Current":{"time":"2012-02-21T08:28:21","Name":"ghij"},
"Next":{"Name":"data3","StartTime":"2012-02-21T08:34:21"}},{"Current":{"time":"2012-02-21T08:40:21","Name":"knmo"},
"Next":{"Name":"data4","StartTime":"2012-02-21T08:48:21"}}]}
我试过这个。
JSONObject jsonObj = new JSONObject(json_response);
JSONObject subObj = jsonObj.getJSONObject("Current");
String name_current =subObj.getString("Name");
但我无法获得“姓名”的价值。我做了什么错。提供进行上述解析的链接。
答案 0 :(得分:3)
首先,您的JSON响应将NameAllList作为JSON对象数组。
所以你必须首先获取JSON数组,然后你可以逐个获取对象。
例如:
JSONObject jsonString = (new JSONObject(json_response_string));
JSONArray array = jsonString.getJSONArray("NameAllList");
for(int i=0; i<array.length(); i++)
{
// Retrieve Current object as such
JSONObject objCurrent = array.getJSONObject("Current");
// Retrieve Next object as such
JSONObject objNext = array.getJSONObject("Next");
}
答案 1 :(得分:1)
看起来像是在尝试使用JSONObject。试试这个:
JSONObject jsonString = (new JSONObject(json_response_string));
JSONArray array = jsonString.getJSONArray("NameAllList");
在你的JSON返回中,“NameAllList实际上是一个数组,需要像这样处理。一旦你将它设置为”array“,你就可以运行for循环并将其视为Java中的任何其他数组。
如果有帮助,请告诉我。
大卫
答案 2 :(得分:1)
您没有正确解析json,因此您无法获取Name的值。请注意,JSON Annotation []代表JSONArray,而{}代表JSONObject,因此获取当前项目名称的方法是:
JSONObject jsonObj = new JSONObject(json_response_string);
JSONArray jsonArr=jsonObj.getJSONArray("NameAllList");
String Hora_name_current="";
for(int i=0;i<jsonArr.length();i++)
{
JSONObject obj=jsonArr.get(i);
try{
JSONObject subObj = obj.getJSONObject("Current");
Hora_name_current =subObj.getString("Name");
break;
}catch(JSONException ex)
{
}
}
答案 3 :(得分:-1)
JSONObject jsonObj = new JSONObject(json_response_string); JSONArray jsonArray = jsonObj.getJSONArrays(“NameAllList”);