Аннотации @JsonProperty (JSON) и @XMLElement (JAXB) не работают в классе Pojo - PullRequest
0 голосов
/ 20 ноября 2018

Я использую Джексона для сериализации / десериализации POJO.Я использую зависимость:

   <dependency>
        <groupId>com.fasterxml.jackson.jaxrs</groupId>
        <artifactId>jackson-jaxrs-json-provider</artifactId>
        <version>2.9.7</version>
    </dependency>

У меня есть POJO, который выглядит примерно так:

   @JsonIgnoreProperties(ignoreUnknown = true)
   class MyPOJO{

   private MyPOJO(){
   }

   @JsonProperty("name")
   String name;
   @JsonProperty("id")
   String id;
   ........
   .........
   // getters only (no setters)
  }

Я аннотирую свои геттеры с помощью @JsonProperty ("...")снова.

Когда я пишу тестовый код, я могу десериализовать мой POJO все в порядке.Но когда я отправляю запрос через клиент Postman, я получаю следующую ошибку:

   Unrecognized field "name" (class MyPOJO), not marked 
   as ignorable (0 known properties: ])
   at [Source: (org.apache.cxf.transport.http.AbstractHTTPDestination$1); 
   line: 10, column: 14] (through reference chain: SomePOJO1["somename1"]- 
   >java.util.ArrayList[0]->SomePOJO2["somename2"]->java.util.ArrayList[0]- 
   >MyPOJO["name"])

Вот мой тестовый код, который прекрасно работает

     final String json = "some json string here";
     final ObjectMapper mapper = new ObjectMapper();

    try {
        final MyPOJO pojo= mapper.readValue(json, MyPOJO.class);
        System.out.println(pojo.getId());
        System.out.println(pojo.getName());
    } catch (final Exception e) {
        e.printStackTrace();
    }

   Output : "123"
            "abc"

В Codehaus Jackson нет библиотекиclasspath и я импортируем правильные классы из com.fasterxml.jackson.MyPOJO используется другим POJO из другого модуля в качестве поля элемента (как видно из ошибки).

MyPOJO имеет закрытый конструктор без аргументов, и в полях нет сеттеров.

Что мне здесь не хватает ??

Спасибо!


РЕДАКТИРОВАТЬ

@ XmlElement аннотации (javax.xml.bind.annotation.XmlElement) являютсятакже не работает над этим классом вместе с аннотациями @JsonProperty.XML также показывает ту же ошибку:

   @JsonIgnoreProperties(ignoreUnknown = true)
   @XmlType(name = "MyPOJOType", propOrder = {"id", "name"})
   class MyPOJO{

   private MyPOJO(){
   }

   @XmlElement(name = "name", required = true)
   @JsonProperty("name")
   String name;

   @XmlElement(name = "id", required = true)
   @JsonProperty("id")
   String id;
   ........
   .........
   // getters only (no setters)
  }

При вводе XML в качестве ввода:

   Output : JAXBException occurred : cvc-complex-type.2.4.a: Invalid 
   content was found starting with element 'name'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...