如何通过改造过帐数据并以正确的格式获取响应?

时间:2019-01-22 09:57:28

标签: android json post retrofit

我要例外了

java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 2 column 1 path $

在调用POST请求时。

根据this的回答,我的json响应确实带有花括号{}。

首先我的json响应是-

{
    "status": {
        "status": "1",
        "message": "Entry inserted successfully"
    },
    "data": {
        "date": "24-Mar-2226",
        "month": "March",
        "party_name": "mark"
    }
}

然后我将两个单独的对象合并为一个响应对象-

{
   "response": {
       "status": {
           "status": "1",
           "message": "Entry inserted successfully"
       },
       "data": {
           "date": "24-Mar-2226",
           "month": "March",
           "party_name": "mark"
       }
   }
}

但仍然出现相同的错误。

经过改造的GET请求工作正常,但POST请求却无法正常工作。

这是我的POST查询-

  @POST("AddEntry")
    Call<ResponseClass> addMyEntry(@Body DetailsClass details);

2 个答案:

答案 0 :(得分:0)

该异常表明您用String类型标记的属性,但是在JSON中它是一个对象。

使用JSON是:

{
   "response": {
       "status": {
           "status": "1",
           "message": "Entry inserted successfully"
       },
       "data": {
           "date": "24-Mar-2226",
           "month": "March",
           "party_name": "mark"
       }
   }
}

您应该拥有一些如下课程:

public class Response {
 @SerializedName("status")
 public Status status;

 @SerializedName("data")
 public Data data;
}

public class Status {
 @SerializedName("status")
 public String status;

 @SerializedName("message")
 public String message;
}

public class Data {
 @SerializedName("date")
 public String date;

 @SerializedName("month")
 public String month;

 @SerializedName("party_name")
 public String party_name;
}

答案 1 :(得分:0)

请使用下面的类结构。

这个问题对于大多数开发人员来说都是很普遍的,他们只是了解结构并继续前进。

Select SUM(noofsales) 
     From table 
  Groupby substring_index(PurchaseType, ',', 0)