java - 如何使用 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 属性名称。
解决方案
即便如此, 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
从给定字段中读取注释。
也可以看看:
推荐阅读
- java - 可以使用具体类来实现抽象吗?
- tags - 如何使用 act_as_taggable_on rails 显示所有标签
- css - 全日历突出显示选定的日期
- python - 将一行的一部分与python中另一个文件中的每一行进行比较
- javascript - 为什么音频元素在设置 src 时会中止事件?
- javascript - 如何翻转下拉列表(Popover)uisng popper js
- c++ - 为什么 pthread_create() 返回 0 但线程从不启动
- html - 电子邮件模板中的内联媒体查询
- javascript - Vue2:当页面具有不同高度的图像时如何滚动到底部?
- tensorflow - ImageDataGenerator.flow() 中的内存泄漏