我遇到了一个问题,即JsonProperty注释更改变量的名称没有被尊重。这是示例应用程序 https://github.com/derrylvarghese/problematicjson
我正在将以下JSON转换为POJO,然后将其转换回JSON
String json = "{\"response\": {\"companyname\": \"ABC Company\",\"issn\": [{\"format\": \"paper\",\"val\": \"0018-9480\"},{\"format\": \"online\",\"val\": \"1557-9670\"}]},\"teststring\":\"testing me out\"}";
ObjectMapper mapper = new ObjectMapper();
WrapperObj record = mapper.readValue(json, WrapperObj.class);
ObjectWriter writer = mapper.writer();
writer.writeValue(response.getOutputStream(), record);
我期待着' val'在'发布'对象显示为'值'因为我有一个@JsonProperty("值")应用于' val'领域。 这是输出json(为简洁起见而编辑)。
issn: [
{
format: "Print ISSN",
val: "0018-9480"
}
]
如果我要创建一个Issn对象并执行record.getResponse.setIssn(setMyObject),则json输出会显示正确的JsonProperty标记。我正在链接到一个示例项目,如果有人感兴趣的话会显示这个项目。 (git link:https://github.com/derrylvarghese/problematicjson)
更新
似乎因为我用@JsonProperty("value")
注释了我的POJO字段,传入的JSON字段也应该被称为' value'。这一切都是在我看到' val'在输出中,因为我有一个捕获所有字段所在的所有List字段。我删除了JsonAnyGetter字段,现在我的' val'字段没有出现。
答案 0 :(得分:2)
答案 1 :(得分:0)
确保在项目中添加了jackson-databind依赖项/ jar -
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.0</version>
</dependency>
答案 2 :(得分:0)
好的,显然在过去的某个时候杰克逊可能已经支持一个序列化的名称,另一个用于反序列化。似乎不再是了。当我用@JsonProperty(“value”)注释一个getter(getVal())时,它希望传入的json有效负载也有“value”(而不是“val”),尽管我有一个setVal()方法。