我正在使用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'