gpt4 book ai didi

java - 使用 ObjectMapper 反序列化具有相同属性但不同类名的多个对象

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

如何使用对象映射器反序列化具有相同结构但不同变量名称的多个对象?

{ 
"id":"A0D-29G3-03",
"a":{
"flag":"NORMAL",
"date":"..."
},
"b":{
"flag":"NORMAL",
"date":"..."
}
}

我将拥有比 A 和 B 更多的对象。这只是一个示例。如何反序列化具有相同结构但不同类名的多个对象(使用 ObjectMapper)?无需为每个类创建一个pojo......

最佳答案

... different class name

ab 不是不同的类名,不是吗?它们是可以共享同一类的不同领域。您可以将一个类(示例中的 Abc)用于字段 ab 等。

这对你有用吗?

    @Setter
@Getter
@ToString
@JsonIgnoreProperties(ignoreUnknown = true)
public static class AbcWrapper {
private String id;
@JsonAnySetter
Map<String, Abc> abc = new LinkedHashMap<>();
}

@Setter
@Getter
@ToString
public static class Abc {
private String flag;
private String date;
}

public static void main(String[] args) throws IOException {
String json = "{ " +
" \"id\":\"A0D-29G3-03\"," +
" \"a\":{ " +
" \"flag\":\"NORMAL\"," +
" \"date\":\"...\"" +
" }," +
" \"a1\":{ " +
" \"flag\":\"NORMAL\"," +
" \"date\":\"...\"" +
" }," +
" \"a2\":{ " +
" \"flag\":\"NORMAL\"," +
" \"date\":\"...\"" +
" }," +
" \"a3\":{ " +
" \"flag\":\"NORMAL\"," +
" \"date\":\"...\"" +
" }," +
" \"b\":{ " +
" \"flag\":\"NORMAL\"," +
" \"date\":\"...\"" +
" }" +
"}";


ObjectMapper mapper = new ObjectMapper();
final AbcWrapper abcWrapper = mapper.readValue(json.getBytes(), AbcWrapper.class);
System.out.println(abcWrapper);
}

我在示例中使用了lombok注释@Setter@Getter@ToString。如果您不想使用 lombok,可以将它们替换为 setter/getter。

关于java - 使用 ObjectMapper 反序列化具有相同属性但不同类名的多个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58911592/

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