Jackson ObjectMapper: readValue возвращает ноль - PullRequest
0 голосов
/ 04 октября 2018

Мне нужно проанализировать этот json:

{
   "id":"cpd4-b39c4b2a-b5cb-4581-b519-6034aaa7fe4e",
   "transactionId":"768a9be4-b5b3-452f-9bd3-9fff2e9ace5c",
   "status":"PUBLIC",
   "confidential":true,
   "expiringAt":1231231,
   "locked":true,
   "metadata":[
      {
         "user":"admin",
         "creationTimestamp":1538578453285,
         "value":"metadata"
      }
   ],
   "security":"read",
   "timestampCreation":1538578453285,
   "userCreation":"admin",
   "appCreation":"app",
   "document":{
      "id":null,
      "transactionId":"768a9be4-b5b3-452f-9bd3-9fff2e9ace5c",
      "docId":"68aab3799a9380fe82ed43ff2d46a5b07da1b270-1282",
      "size":1282,
      "name":"pom.xml",
      "alias":"alias",
      "hash":"68aab3799a9380fe82ed43ff2d46a5b07da1b270",
      "title":"title",
      "encoding":"UTF-8",
      "mimeType":"application/xml"
   }
}

для объекта Reference класс:

public class Reference {

    private String id;
    private String transactionId;

    private DocumentStatus status;
    private Boolean confidential;
    private Integer expiringAt;
    private Boolean locked;

    private List<Metadata> metadata;
    private String security;

    // IDReferenciaAlta
    private Date timestampCreation;
    private String userCreation;
    private String appCreation;

    private Date timestampModified;
    private String userModified;
    private String appModified;

    private Date timestampDeletion;
    private String userDeletion;
    private String appDeletion;

    //getters and setters...
}

, где Metadata:

public class Metadata {

    private String user;
    private Date creationTimestamp;
    private String value;

    //getters an setters
}

В настоящее время я использую этот код:

Reference reference = null;
try {
    reference = this.mapper.readValue(jsonDocument, Reference.class);
} catch (IOException e1) {
    // TODO: Throw domain exception...
    e1.printStackTrace();
}

Проблема в том, что this.mapper.readValue(...) возвращает null.

Я знаю, что схемы json и свойства класса Reference не являютсяточно так же, но я ожидал получить ссылку с "общими" свойствами json

1 Ответ

0 голосов
/ 04 октября 2018

Без трассировки стека мы почти не понимаем, что это за ошибка.Однако, как видно из вашего вопроса, свойство document не сопоставлено ни с одним полем класса Reference.

Так что вы можете либо:

  • Сопоставить свойство document с полем.

  • Используйте @JsonIgnoreProperties("document") в классе Reference, чтобы игнорировать свойство document.В качестве альтернативы вы можете использовать @JsonIgnoreProperties(ignoreUnknown = true), чтобы игнорировать любые неизвестные свойства.

  • Настройте ObjectMapper для игнорированиянеизвестные свойства путем отключения DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES.См. Ниже:

    ObjectMapper mapper = new ObjectMapper();
    mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
    Reference reference = mapper.readValue(jsonDpcument, Reference.class);
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...