我有以下JSON响应。
{"message":"[{"first_name":"Sushant","last_name":"Bhatnagar","receiver_id":"19","docket_number":"Test12","status":"open"}]","code":200,"format":"json"}
,我创建了两个类来解析它,如下所示:-
public class JsonResponse implements Serializable {
public String code;
public String format;
public List<Message> message;
}
公共类Message实现Serializable{
public String first_name;
public String last_name;
public String receiver_id;
public String docket_number;
public String status;
}
使用GSOAP解析json,得到以上错误。解析JSON的代码是:-
public static JsonResponse readDockets(String mobileNumber) {
JsonResponse res = new JsonResponse();
HttpClient client = new DefaultHttpClient();
String service = "http://api.pod.iamwhiney.com:8994/api.php?path=/deliveryRecord/refresh/"+"9968395206";
HttpGet httpGet = new HttpGet(service);
try {
HttpResponse response = client.execute(httpGet);
StatusLine statusLine = response.getStatusLine();
int statusCode = statusLine.getStatusCode();
if (statusCode == 200) {
HttpEntity getResponseEntity = response.getEntity();
InputStream httpResponseStream = getResponseEntity.getContent();
Reader inputStreamReader = new InputStreamReader(httpResponseStream);
Gson gson = new Gson();
res = gson.fromJson(inputStreamReader, JsonResponse.class);
} else {
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return res;
}
您的JSon
字符串应该是这样的格式:
{
sections:
[
{
"SectionId": 1,
"SectionName": "Android"
}
]
}
我不知道你为什么使用Gson,因为Android有自己的内置JSON解析器。至于你得到的错误……这是因为你解析的JSON是JSONArray,而不是JSONObject。我不太确定@Yaqub在看什么,但你的JSON响应应该如下所示:
{"message":
{"first_name":"Sushant",
"last_name":"Bhatnagar".....
"status":"open"
},"code":"200","format":"json"}
也就是说,内容周围没有[],因为这告诉JSON解析器它是一个只有1个索引的JSON数组,而您显然想要一个JSON对象。上面的JSONString将允许您解析它,您可以从'message'标记中获得JSONObject。
注意:我已经删除了转义,因为我想通过解析器运行我的编辑,但是你可以很容易地把它们添加进去,它应该仍然可以工作。
注意:原始JSON中的"code":200
需要是"code":"200"
,否则你会得到另一个错误