Java Spring中使用RestTemplate的复杂Json映射
我正在尝试用Java实体类映射jsonResponse。json响应如下所示Java Spring中使用RestTemplate的复杂Json映射,java,json,spring,resttemplate,Java,Json,Spring,Resttemplate,我正在尝试用Java实体类映射jsonResponse。json响应如下所示 "classResults":{ "classSuggestion":[ "classA", { "section":"section c" } ] } 我用于映射的Java类可能如下所示
"classResults":{
"classSuggestion":[
"classA",
{
"section":"section c"
}
]
}
我用于映射的Java类可能如下所示。我将有一个ClassSuggestion对象,以便映射ClassSuggestion对象。然而,classSuggestion如何像上面那样保存json数据
public class ClassResults {
ClassSuggestion classSuggestion
}
我的建议怎么样
public class ClassSuggestion {
String classes
String section
}
如何将其映射到Java类或数据类型?@data//lombok
@Data // lombok
public class ClassResults {
private List<ClassSuggestion> classSuggestion; // mapped from array
}
@Data
@NoArgsConstructor
public class ClassSuggestion {
private String classes;
private String section;
public ClassSuggestion(String classes) {
this.classes = classes; //Handle string "classA"
}
}
公开课成绩{
私有列表classSuggestion;//从数组映射
}
@资料
@诺尔格构装师
公开课建议{
私有字符串类;
私有字符串部分;
公共类建议(字符串类){
this.classes=classes;//句柄字符串“classA”
}
}
我通过编写自定义反序列化程序解决了这个问题:
class ClassSuggestionDeserializer extends StdDeserializer<Employee> {
@Override
public Map<String, String> deserialize(JsonParser jp, DeserializationContext dc) throws IOException, JsonProcessingException {
ObjectCodec codec = jp.getCodec();
TreeNode node = codec.readTree(jp);
JsonNode classResults = node.get("classResults");
// and finally iterating through the classResults to get string values
}
}
class ClassSuggestionDeserializer扩展StdDeserializer{
@凌驾
公共映射反序列化(JsonParser jp,反序列化上下文dc)引发IOException,JsonProcessingException{
ObjectCodec codec=jp.getCodec();
TreeNode节点=codec.readTree(jp);
JsonNode classResults=node.get(“classResults”);
//最后遍历classResults以获得字符串值
}
}
同时,在数据类上,使用自定义反序列化器使用JsonDeserialize
@JsonDeserialize(using=ClassSuggestionDeserializer.class)
public class ClassSuggestion {
Map<String, String> classResults;
}
@JsonDeserialize(使用=ClassSuggestionDeserializer.class)
公开课建议{
地图分类结果;
}
简而言之,您想要一个联合类型?是否可以将“classA”
封装在类似于{“section”:“section c”}
的对象中(您是否可以控制JSON API)?可以有多少字符串和节
对象?我无法控制JSON API,它属于不同的团队。我能够使用自定义反序列化器进行反序列化,我最初试图避免使用自定义反序列化器。