[英]JSON: de-serializing subtypes
此資源上已經存在相同的問題 。 但是答案對我來說似乎是完全錯誤的,對我不起作用。
有什么問題:
com.fasterxml.jackson.databind.JsonMappingException:無法將類型id'MyRequest $ GetAll'解析為[簡單類型,類Request]的子類型
我所擁有的:
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@class")
@JsonSubTypes({ @JsonSubTypes.Type(value = MyRequest.GetAll.class)})
public class Request {
}
public class MyRequest extends Request {
public static class GetAll extends MyRequest {
public GetProfiles() {
}
}
我嘗試做的是:
我試圖遵循該建議,並將子類型注冊從注釋移至Java代碼:
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@class")
public class Request {
}
public class MyRequest extends Request {
public static class GetAll extends MyRequest {
public GetProfiles() {
}
}
public class Utils {
private static final ObjectMapper mapper;
static {
mapper = new ObjectMapper();
registerSubtypes();
mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, false);
mapper.configure(SerializationFeature.INDENT_OUTPUT, true);
mapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);
}
private static registerSubtypes() { //REGISTER ALL SUBTYPES
mapper.registerSubtypes(MyRequest.GetAll.class);
//...
}
}
但是沒有結果,我還是例外! 在這種情況下,最奇怪的是它在我的本地計算機上可以正常工作,但在部署后無法正常工作。
題:
我應該嘗試解決什么問題?
不確定是否有所不同,但您可能想在子類型上使用@JsonTypeName
來顯式命名它,而不是依賴簡單的類名。 這樣可以更安全地維護,並且在您重構事物時(例如將類移至其他程序包)不太可能引起問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.