gpt4 book ai didi

java - jackson 与 JSON : map unrecognized fields

转载 作者:行者123 更新时间:2023-12-01 10:02:21 24 4
gpt4 key购买 nike

我需要将 JSON 字符串转换为 Java 对象。 JSON 将包含一些已知字段和一些未知字段。这是一个例子:

public class MyJsonBean {
private String abc;
private String def;

// getters and setters
}

以及我想要解析的 JSON:

{"abc":"value1","def":"value2","ghi":"value3","jkl":"value4"}

只有固定字段是“abc”和“def”。其他字段是可变的。我希望 Jackson 解析变量字段并将它们放入 MyJsonBean 类中的列表/映射中。有什么办法可以做到这一点吗?

最佳答案

使用 @JsonAnySetter json反序列化时调用来存储json对象的非成员元素。将值存储在 otherAnnotations 字段中。

Jackson 实际上可以与此类 POJO 一起工作:这是一种方法:

 public class MyJsonBean 
{
// Two mandatory properties
protected final String abc;
protected final String def;

// and then "other" stuff:
protected Map<String,Object> other = new HashMap<String,Object>();

// Could alternatively add setters, but since these are mandatory
@JsonCreator
public MyJsonBean (@JsonProperty("abc") String abc, @JsonProperty("def") String def)
{
this.abc = abc;
this.def = def;
}

public int getId() { return id; }
public String getName() { return name; }

public Object get(String name) {
return other.get(name);
}

// "any getter" needed for serialization
@JsonAnyGetter
public Map<String,Object> any() {
return other;
}

@JsonAnySetter
public void set(String name, Object value) {
other.put(name, value);
}
}

现在我们已经完成了:很好地序列化和反序列化。

分享并享受...:)

关于java - jackson 与 JSON : map unrecognized fields,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36698528/

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