【发布时间】:2022-01-07 10:15:23
【问题描述】:
如何使用 Jackson 将以下 json 映射到 classB 对象
JSON 输入
{"pattern":3,"graphs":4}
A类
class ClassA{
String name;
int count;
}
B类
class ClassB{
Set<ClassA> data;
}
【问题讨论】:
-
您可以使用@jsonAlias 来执行此操作。
如何使用 Jackson 将以下 json 映射到 classB 对象
JSON 输入
{"pattern":3,"graphs":4}
A类
class ClassA{
String name;
int count;
}
B类
class ClassB{
Set<ClassA> data;
}
【问题讨论】:
假设您在ClassA 中有一个构造函数,如下所示:
class ClassA {
String name;
int count;
public ClassA(String name, int count) {
this.name = name;
this.count = count;
}
}
您可以使用@JsonCreator来微调反序列化中使用的构造函数或工厂方法,如下所示:
class ClassB {
Set<ClassA> data;
@JsonCreator
public ClassB(Map<String, Integer> data){
this.data = data.entrySet().stream()
.map(entry -> new ClassA(entry.getKey(), entry.getValue()))
.collect(Collectors.toSet());
}
}
【讨论】: