首页 > 解决方案 > 如何使用 java 和 jackson api 获取 @JsonProperty 的值?

问题描述

在我的项目中的一个案例中,我遇到了需要获取 JSONPropoerty 名称来构建另一个 json 对象的案例。

我有一个 pojo 类:

 public class Records {
    @JsonProperty("NEWVALUE")
    private String new;
}

现在在另一个类中,我需要使用与我的 Record pojo 类的 @JsonProperty 名称关联的 json 属性名称来创建 JSON 对象。

我想要类似的东西

Record rec=new Record();
JsonNode tmpNode=new JsonNode();
String key= <somehow get value from rec object i.e. "NEWVALUE">
((ObjectNode) tmpNode).put(key, "abc"));

有什么方法可以获取与 java 字段名称关联的 json 属性名称。

标签: javajacksonjackson-databind

解决方案


即便如此, Jackson, 有像com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector,com.fasterxml.jackson.databind.introspect.AnnotatedField等等这样的类......如果真的不需要,我建议不要使用它。它们非常复杂API,仅适用于com.fasterxml.jackson.databind.introspect您需要以某种方式创建的对象。

最简单的解决方案是创建public static final字段并在另一个类中使用:

class Records {

    public static final String NEW_VALUE = "NEWVALUE";

    @JsonProperty(NEW_VALUE)
    private String value;
}

您可以按如下方式使用它:

((ObjectNode) tmpNode).put(Records.NEW_VALUE, "abc"));

或者,仅用于Reflection从给定字段中读取注释。

也可以看看:


推荐阅读