java – Jackson映射中标准和动态属性的混合
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – Jackson映射中标准和动态属性的混合,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1825字,纯文字阅读大概需要3分钟。
内容图文
![java – Jackson映射中标准和动态属性的混合](/upload/InfoBanner/zyjiaocheng/734/eced7bf5304b462998aee3a0adc74278.jpg)
我们正在使用提供json的REST服务,该服务将包含一些标准属性以及许多动态属性.
例如:
{
id: 123,
name: "some name",
custom_name: "Some value",
some_other_custom_name: "Some other value",
}
理想情况下,我希望课程设计如下:
public class MyObject{
@JsonProperty int id;
@JsonProperty String name;
private Map<String, String> customVals;
public int getId(){
return id;
}
public String getName(){
return name;
}
public String getCustomVal(String key){
return customVals.get(key);
}
}
有没有办法说服杰克逊将自定义值推入Map(或实现等效功能)?
现在,我只是将整个对象反序列化为一个Map,并将其包装在我的业务对象中,但它并不像反序列化处理它那样优雅.
解决方法:
你可以使用Jackson @JsonAnySetter and @JsonAnyGetter annotations.
这是一个完整的例子:
public class JacksonAnyGetter {
static final String JSON = "{"
+ " \"id\": 123,"
+ " \"name\": \"some name\","
+ " \"custom_name\": \"Some value\","
+ " \"some_other_custom_name\": \"Some other value\""
+ "}";
static class Bean {
public int id;
public String name;
private Map<String, Object> properties = new HashMap<>();
@JsonAnySetter
public void add(String key, String value) {
properties.put(key, value);
}
@JsonAnyGetter
public Map<String, Object> getProperties() {
return properties;
}
@Override
public String toString() {
return "Bean{" +
"id=" + id +
", name='" + name + '\'' +
", properties=" + properties +
'}';
}
}
public static void main(String[] args) throws IOException {
final ObjectMapper mapper = new ObjectMapper();
final Bean bean = mapper.readValue(JSON, Bean.class);
System.out.println(bean);
final String json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(bean);
System.out.println(json);
}
}
输出:
Bean{id=123, name='some name', properties={custom_name=Some value, some_other_custom_name=Some other value}}
{
"id" : 123,
"name" : "some name",
"custom_name" : "Some value",
"some_other_custom_name" : "Some other value"
}
内容总结
以上是互联网集市为您收集整理的java – Jackson映射中标准和动态属性的混合全部内容,希望文章能够帮你解决java – Jackson映射中标准和动态属性的混合所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。