gpt4 book ai didi

java - JSON:反序列化子类型

转载 作者:行者123 更新时间:2023-11-30 11:25:27 25 4
gpt4 key购买 nike

已经有 same issue在这个资源上。但答案对我来说似乎完全错误,并且不适合我。

什么问题:

com.fasterxml.jackson.databind.JsonMappingException: Could not resolve type id 'MyRequest$GetAll' into a subtype of [simple type, class 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() {
}
}

我尝试过的事情:

我试着关注 that建议,并将子类型注册从注释移动到 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 来显式命名它,而不是依赖简单的类名。这样维护起来更安全,并且如果您重构事物(例如将类移动到不同的包),则不太可能导致问题。

关于java - JSON:反序列化子类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20281752/

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