[英]Complex Json Mapping in Spring with RestTemplate
我正在嘗試使用我的 Java 實體 class 對 map 進行 jsonResponse。 json 響應如下所示
"classResults":{
"classSuggestion":[
"classA",
{
"section":"section c"
}
]
}
我用於映射的 Java Class 可能看起來像這樣。 我將有一個 object 的 ClassSuggestion,以便 map classSuggestion object。 但是,classSuggestion 將如何保存上述 json 數據?
public class ClassResults {
ClassSuggestion classSuggestion
}
我的 ClassSuggestion 會如何?
public class ClassSuggestion {
String classes
String section
}
我如何 map 這個到 Java Class 或數據類型?
@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"
}
}
我通過編寫自定義反序列化器解決了這個問題:
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 上,使用自定義反序列化器使用 JsonDeserialize。
@JsonDeserialize(using=ClassSuggestionDeserializer.class)
public class ClassSuggestion {
Map<String, String> classResults;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.