我在将 JSON 反序列化到 POJO 对象中时遇到问题。
这是我的 JSON 的片段
....."_embedded": {
"media:recent": {
"_links": {
"self": {
"href": "//url"
}
}
}
},....
这是我的类(class)
@JsonInclude(JsonInclude.Include.NON_NULL)
@Generated("org.jsonschema2pojo")
@JsonPropertyOrder({
"media:recent"
})
public class Embedded__ {
@JsonProperty("media:recent")
private MediaRecent mediaRecent;
/**
*
* @return
* The mediaRecent
*/
@JsonGetter("media:recent")
public MediaRecent getMediaRecent() {
return mediaRecent;
}
/**
*
* @param mediaRecent
* The media:recent
*/
@JsonSetter("media:recent")
public void setMediaRecent(MediaRecent mediaRecent) {
this.mediaRecent = mediaRecent;
}
}
当我尝试执行mapper.readValue(json, Response.class)时 程序抛出以下错误:
Caused by: org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "media:recent" (Class ...Embedded__), not marked as ignorable
at [Source: java.io.StringReader@1fe02e4; line: 69, column: 22] (through reference chain: ......Response["data"]->......Data["_embedded"]->......Embedded["media"]->......Medium["_embedded"]->......Embedded_["uploader"]->......Uploader["_embedded"]->......Embedded__["media:recent"])
at org.codehaus.jackson.map.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:53)
问题可能出在属性名称上,因为它有一个冒号。 有没有解决方案来映射这种字段?
谢谢
最佳答案
尝试向您的 Embedded__ 类添加带有根名称的 @JsonRootName 注释:
@JsonInclude(JsonInclude.Include.NON_NULL)
@Generated("org.jsonschema2pojo")
@JsonPropertyOrder({
"media:recent" })
@JsonRootName(value = "_embedded")
public class Embedded__ {
}
并将“UNWRAP_ROOT_VALUE”配置添加到您的映射器中:
ObjectMapper mapper = new ObjectMapper();
mapper.configure(Feature.UNWRAP_ROOT_VALUE, true);
mapper.readValue(json, Response.class)
关于java - Jackson 无法识别的字段 "media:recent",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37988552/