gpt4 book ai didi

java - 使用 @JsonAnyGetter/@JsonAnySetter 序列化 JSON 并更改属性名称 (Jackson)

转载 作者:行者123 更新时间:2023-12-01 18:39:37 26 4
gpt4 key购买 nike

我有一个如下所示的 JSON:

{"pfm1":{"status":true,"candid":true},
"pfm2":{"status":false,"candid":true},
"pfm3":{"status":false,"candid":true}}

我想映射它并使用变量字符串名称更改 pfm1、pfm2、pfm3 的属性命名。请您指出如何在下面的类(class)中完成它。输出应为:

{"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”可以设置为存储变量。节点是从顶层结构中提取的对象节点。

关于java - 使用 @JsonAnyGetter/@JsonAnySetter 序列化 JSON 并更改属性名称 (Jackson),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59965051/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com