为杰克逊添加动态JSON属性作为Java Pojo

为杰克逊添加动态JSON属性作为Java Pojo,第1张

杰克逊添加动态JSON属性作为Java Pojo

您可以使用JsonAnyGetter批注来创建动态

key-value
对。下面的示例显示了如何为同一
Label
类生成3个不同的键:

import com.fasterxml.jackson.annotation.JsonAnyGetter;import com.fasterxml.jackson.annotation.JsonProperty;import com.fasterxml.jackson.annotation.JsonRootName;import com.fasterxml.jackson.databind.ObjectMapper;import com.fasterxml.jackson.databind.SerializationFeature;import java.util.ArrayList;import java.util.Collections;import java.util.List;import java.util.Map;public class JsonApp {    public static void main(String[] args) throws Exception {        AddLabel label = new AddLabel("A label");        label.getLabels().add(AddLabel.Label.remove("Remove"));        label.getLabels().add(AddLabel.Label.set("Set"));        ObjectMapper mapper = new ObjectMapper();        mapper.enable(SerializationFeature.INDENT_OUTPUT);        System.out.println(mapper.writevalueAsString(label));    }}@JsonRootName(value = "update")class AddLabel {    @JsonProperty("labels")    private List<Label> labels;    public AddLabel(String labelName) {        this.labels = new ArrayList<>();        this.labels.add(Label.add(labelName));    }    public List<Label> getLabels() {        return labels;    }    public static class Label {        private final String key;        private final String value;        private Label(String key, String value) { this.key = key; this.value = value;        }        public static Label add(String value) { return new Label("add", value);        }        public static Label remove(String value) { return new Label("remove", value);        }        public static Label set(String value) { return new Label("set", value);        }        @JsonAnyGetter        public Map<String, String> getDynamic() { return Collections.singletonMap(key, value);        }    }}

上面的代码打印:

{  "labels" : [ {    "add" : "A label"  }, {    "remove" : "Remove"  }, {    "set" : "Set"  } ]}

也可以看看:

  • 杰克逊@JsonAnyGetter和@JsonAnySetter示例
  • 杰克逊注释示例
  • 如何为Json对象使用动态属性名称


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5427206.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存