gpt4 book ai didi

java - jackson 无法识别@JsonCreator 注释

转载 作者:搜寻专家 更新时间:2023-10-30 21:46:25 24 4
gpt4 key购买 nike

我目前正在使用 Jackson 1.4.2 并尝试反序列化从我们的 UI 传回 Java Controller (Servlet) 的 code 值(类型信息的唯一标识符)。

有多种类型(例如 ABCTypeXYZType 等)都是从 AbstractType 扩展而来的,但是每个具体类型都有一个静态工厂方法,它接受一个参数、一个唯一标识符,并返回由该标识符表示的类型对象(名称、关联类型、描述、有效首字母缩写词等)。每个具体类型(例如 XYZType)中的静态方法都用 @JsonCreator 注释:

@JsonCreator
public static XYZType getInstance(String code) {
.....
}

我看到的问题是 Jackson 的映射器试图将 json 反序列化为这些类型时抛出的异常:

Caused by: org.codehaus.jackson.map.JsonMappingException: No default constructor found for type [simple type, class com.company.type.XYZtype]: can not instantiate from Json object.

静态工厂方法的@JsonCreator 注释我在这里遗漏了什么(或者它与 Jackson 1.4.2 处理从 AbstractType 扩展的具体类型有关) >?)?

最佳答案

注解@JsonCreator 需要注解@JsonProperty。这Jackson wiki page提供的信息很少,但确实提供了示例代码:

@JsonCreator
public Name(@JsonProperty("givenName") String g, @JsonProperty("familyName") String f)
{
givenName = g;
familyName = f;
}

您可以在 this blog post 找到更详细的解释.

因此,您的示例代码应如下所示:

@JsonCreator
public static XYZType getInstance(@JsonProperty("someCode") String code)
{
...
}

关于java - jackson 无法识别@JsonCreator 注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3118982/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com