如何获取@JsonProperty';使用java和jackson api的s值?

如何获取@JsonProperty';使用java和jackson api的s值?,java,jackson,jackson-databind,Java,Jackson,Jackson Databind,在我的项目中的一个例子中,我遇到了一个需要获取JSONPropoerty名称来构建另一个json对象的例子 我有一门pojo课程: public class Records { @JsonProperty("NEWVALUE") private String new; } 现在在另一个类中,我需要使用与我的记录pojo类的@JsonProperty名称关联的JSON属性名称创建JSON对象 我想要像这样的东西 Record rec=new Record(); JsonNode

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

我有一门pojo课程:

 public class Records {
    @JsonProperty("NEWVALUE")
    private String new;
}
现在在另一个类中,我需要使用与我的记录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"));
Record rec=新记录();
JsonNode tmpNode=新的JsonNode();
字符串键=
((ObjectNode)tmpNode.put(key,“abc”);

是否有任何方法可以获取与java字段名关联的json属性名。

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

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

class Records {

    public static final String NEW_VALUE = "NEWVALUE";

    @JsonProperty(NEW_VALUE)
    private String value;
}
您可以按如下方式使用它:

((ObjectNode) tmpNode).put(Records.NEW_VALUE, "abc"));
或者,只需使用
Reflection
从给定字段读取注释

另见:


类似这样的内容是的,这是使用公共静态最终字段的一个很好的解决方法。关于设置名称值而不是使用反射的好建议。