java - Jackson 无法识别的字段 "media:recent"

标签 java json exception mapper jsonschema2pojo

我在将 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/

相关文章:

java - 我如何使用 struts 2 将组合框值提取到我的 DAO 中?

java - 如何自定义和覆盖 jaxb 绑定(bind)

c# - DbContext.SaveChangesAsync 异常处理

java - 按 T​​ab 键时 Silk4J 对象映射编辑器中出现 NullPointerException

java - 如何从 Jython 脚本调用 C 函数?

json - 使用 axios.get 渲染 json 数据

json - 使用 mongoimport 解析 JSON 失败

json - 在 bash 脚本中,如何删除 JSON 数据集 {} 中双引号之间的所有双引号

python:异常流程:捕获后继续向下捕获 block ?

c# - 在 C# 中,是否有任何我不应该使用的内置异常?