1

我有以下 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;

}

公共类消息实现可序列化{

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;
}
4

2 回答 2

0

我不知道你为什么使用 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 将允许您解析它,您可以从“消息”标签中获取 JSONObject。

注意:我已经删除了转义,因为我想通过解析器运行我的编辑,但是您可以轻松地将它们重新添加,它应该仍然可以工作。

注意"code":200在您的原始 JSON 中必须是,"code":"200"否则您将在那里收到另一个错误

于 2013-02-08T09:17:15.877 回答
0

您的JSon字符串应采用以下格式:

{
  sections: 
      [
          {
             "SectionId": 1,
             "SectionName": "Android"
          }
      ]
}
于 2013-02-08T09:09:49.497 回答