@JsonProperty(JSON)和@XMLElement(JAXB)都不能在Pojo类上使用

时间:2018-11-20 13:57:43

标签: java json serialization jackson

我正在使用Jackson进行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库,我正在从com.fasterxml.jackson导入正确的类。其他模块中的其他POJO也将MyPOJO用作成员字段(也可以从错误中看到)。

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'

0 个答案:

没有答案