![](/img/trans.png)
[英]JsonAnyGetter / JsonAnySetter the resulting JSON has doubled values
[英]Using @JsonAnyGetter /@JsonAnySetter to Serialize JSON and change property name (Jackson)
我有一个 JSON 看起来像:
{"pfm1":{"status":true,"candid":true},
"pfm2":{"status":false,"candid":true},
"pfm3":{"status":false,"candid":true}}
我想映射它并使用变量字符串名称更改 pfm1、pfm2、pfm3 的属性命名。 您能否在下面的课程中指出如何做到这一点。 输出应为:
{"Idname01":{"status":true,"candid":true},
"Idname02":{"status":false,"candid":true},
"Idname03":{"status":false,"candid":true}}
Msg jsonobject=mapper.readValue(input, Msg.class);
班级
static class Msg {
@JsonIgnore
private Object pfm1;
@JsonIgnore
private Object pfm2;
@JsonIgnore
private Object pfm3;
private Map<String, Object> pfm = new HashMap<String, Object>();
public Object getPfm1() {return pfm1;}
public void setMpfm1(Object pfm1) {this.pfm1 = pfm1;}
public Object getPfm2() {return mpfm2;}
public void setPfm2(Object pfm2) {this.pfm2 = pfm2;}
public Object getPfm3() {return mpfm3;}
public void setPfm3(Object pfm3) {this.pfm3 = pfm3;}
@JsonAnySetter
public void set(String name, Object value) {
mpfm.put(name, value);
}
public Msg(){
}
}
在不使用 getter、setter 和 @jsonanygetter 的情况下找到了解决方案。 只需使用对象节点。 可以操作您的 json 结构,包括更改 name 属性。 它更简单明了。
newNode.set("newname",node);
///convert constructed newNode to json
String jsonout = newNode.toString();
“newname”可以设置为存储变量。 节点是从顶部结构中提取的对象节点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.