1

私は次の JSON Response を持っています。

  {"message":"[{\"first_name\":\"Sushant\",\"last_name\":\"Bhatnagar\",\"receiver_id\":\"19\",\"docket_number\":\"Test12\",\"status\":\"open\"}]","code":200,"format":"json"}

そして、以下のように解析するための2つのクラスを作成しました:-

     public class JsonResponse implements Serializable {

public String code;
public String format;
public List<Message> message;

}

public class Message は Serializable を実装します{

public String first_name;
public String last_name;
public String receiver_id;
public String docket_number;
public String status;

}

json の解析に GSOAP を使用すると、上記のエラーが発生します。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

文字JSon列は次の形式である必要があります。

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

Androidには独自のJSONパーサーが組み込まれているため、なぜGsonを使用しているのかわかりません。取得しているエラーについては...解析しているJSONがJSONObjectではなくJSONArrayであるためです。@Yaqub が何を見ているのかよくわかりませんが、JSON 応答は次のようになります。

{"message":    
    {"first_name":"Sushant",
     "last_name":"Bhatnagar".....
     "status":"open"
    },"code":"200","format":"json"}

つまり、コンテンツを [ ] で囲みません。これは、JSON パーサーに、インデックスが 1 つしかない JSON 配列であることを伝えますが、代わりに単一の JSON オブジェクトが必要であることは明らかです。上記の JSONString を使用すると、'message' タグから JSONObject を取得できる場所で解析できます。

: パーサーを介して編集を実行したかったので、エスケープを削除しましたが、これらを簡単に追加して戻すことができ、引き続き機能するはずです。

:"code":200元の JSONの は、そうで"code":"200"なければ別のエラーが発生する必要があります

于 2013-02-08T09:17:15.877 に答える