Невозможно отобразить ответ API на общий класс - PullRequest
0 голосов
/ 25 октября 2019

Я пытаюсь отобразить ответ API на мой общий класс. Но я получаю ошибку при этом:

Код Mapper выглядит следующим образом:

Response response = authenticate().body(sqlQueryModel).when().contentType(ContentType.JSON).post("/SqlUtility/ExecuteSQLQuery");
ResponseBody body = response.getBody();

Тело ответа при выполнении body.prettyPrint(); равно:

{
  "Data": {
    "Table": [
      {
        "RECORD_ID": 1,
        "EXPORT_OBJECT_NAME": "cfg_set_reporting_view_header",
        "TABLE_NAME": "cfg_set_reporting_view_header",
        "ADMIN_SECTION": "Reporting",
        "DISPLAY_LABEL_ADMIN": "Reporting View Header",
        "ACTIVE_FLAG": true,
        "VISIBLE_ON_ADMIN": true
      },
      {
        "RECORD_ID": 2,
        "EXPORT_OBJECT_NAME": "cfg_not_notification_target",
        "TABLE_NAME": "cfg_not_notification_target",
        "ADMIN_SECTION": "Notifications",
        "DISPLAY_LABEL_ADMIN": "Notification Target",
        "ACTIVE_FLAG": true,
        "VISIBLE_ON_ADMIN": true
      }
    ]
  },
  "Filter": null,
  "Message": {
    "MessageCode": 200,
    "MessageType": 1,
    "Message": "Success",
    "MessageSource": "some_api"
  }
}

, и мой класс POJO выглядит следующим образом:

public class ApiResponseModel<T> {
    private MessageModel Message;

    private FilterModel Filter;

    private T Data;

    public MessageModel getMessage() {
        return Message;
    }

    public void setMessage(MessageModel Message) {
        this.Message = Message;
    }

    public FilterModel getFilter() {
        return Filter;
    }

    public void setFilter(FilterModel Filter) {
        this.Filter = Filter;
    }

    public T getData() {
        return Data;
    }

    public void setData(T Data) {
        this.Data = Data;
    }

    @Override
    public String toString() {
        return "ClassPojo [Message = " + Message + ", Filter = " + Filter + ", Data = " + Data + "]";
    }
}

теперь при выполнении кода ниже для десериализации тела ответа я получаю исключение:

 ApiResponseModel<LookupDataModel> responseBody = body.as(new TypeToken<ApiResponseModel<LookupTableModel>>() {
        }.getType());

Исключениеis:

Исключение в потоке "main" com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: нераспознанное поле "Данные" (класс com.mydesq.automation.test.adminconsole.api.models. commonModel.ApiResponseModel), не помечен как игнорируемый (3 известных свойства: «фильтр», «данные», «сообщение»]) в [Source: (StringReader);строка: 2, столбец: 14] (через цепочку ссылок: com.mydesq.automation.test.adminconsole.api.models.commonModel.ApiResponseModel ["Данные"])

Может кто-нибудь помочь мнеузнать причину этой ошибки?

...