objectMapper.readValue не работает для этого JSON, что-то не так? - PullRequest
0 голосов
/ 02 мая 2019

При анализе результата от silverpop мы используем objectMapper.

Ответ выглядит так:

{
  "meta": {
    "attributes": {},
    "generalErrors": [
      "No contact found"
    ],
    "fieldErrors": {},
    "links": [],
    "nextPageUrl": null
  },
  "data": null
}

Следующий код не может разобрать это:

String str = "{\"meta\":{\"attributes\":{},\"generalErrors\":[\"No contact found\"],\"fieldErrors\":{},\"links\":[],\"nextPageUrl\":null},\"data\":null}";
ObjectMapper objectMapper = ObjectMapperFactory.getDefaultObjectMapper();
ApiResponse apiResponse = objectMapper.readValue(str, 
ApiResponse.class);
log.info("apiResponse: " + apiResponse);

ApiResponse.java:

public class ApiResponseDO extends HttpResponse {
   private RestApiMeta meta;
   private RestApiData[] data;
   public ApiResponseDO() { }
   public RestApiMeta getMeta() {return meta;}
   public void setMeta(RestApiMeta meta) { this.meta = meta; }
   public RestApiData[] getData() {   return data; }
   public void setData(RestApiData[] data) {  this.data = data; }

}

RestApiMeta.java

public class RestApiMeta {
    Object attributes;  
    String[] generalErrors;
    Object fieldErrors; 
    Object[] links;   
    Object nextPageUrl;

    public RestApiMeta() {     }
    public Object getAttributes() { return attributes; }
    public void setAttributes(Object attributes) { this.attributes = attributes;   }
    public String[] getGeneralErrors() { return generalErrors; }
    public void setGeneralErrors(String[] generalErrors) {           this.generalErrors = generalErrors;  }
    public Object getFieldErrors() {  return fieldErrors;  }
    public void setFieldErrors(Object fieldErrors) {         this.fieldErrors = fieldErrors;   }
    public Object[] getLinks() {  return links;  }
    public void setLinks(Object[] links) { this.links = links; }
    public String getNextPageUrl() { return nextPageUrl;  }
    public void setNextPageUrl(String nextPageUrl) { this.nextPageUrl = nextPageUrl; }

Вывод выглядит так:

apiResponse: meta=attributes={},generalErrors=<null>,fieldErrors=<null>,links={},nextPageUrl=<null>,,data=<null>

т.е. его вернул пустой (новый) объект. Нет ошибок или исключений.

Есть идеи?

...