【发布时间】:2021-08-19 01:05:10
【问题描述】:
这是我有这个错误的方法
private <T> Mono<CarbonResponse<T>> evaluateVersion(Key key, String facts, boolean showTestResults) {
return mapper.readValue(result, new TypeReference<CarbonResponse<T>>() {}); // error here
}
结果是 JSON 字符串。
我的 CarbonResponse.java
public class CarbonResponse<T> {
int code;
String message;
DataV1<T> data;
}
DataV1.java
public class DataV1<T> {
@JsonProperty(value = "rule_set_id")
String ruleSetId;
@JsonProperty(value = "version_id")
String ruleSetVersionId;
T result;
@JsonProperty(value = "rules_evaluation_response")
List<T> rulesEvaluationResponse;
}
分级
implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.10.3'
// https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core
implementation group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.10.3'
完整的错误跟踪
java.lang.IllegalArgumentException:无法识别的类型:[null] 在 com.fasterxml.jackson.databind.type.TypeFactory._fromAny(TypeFactory.java:1266) 在 com.fasterxml.jackson.databind.type.TypeFactory._fromParamType(TypeFactory.java:1480) 在 com.fasterxml.jackson.databind.type.TypeFactory._fromAny(TypeFactory.java:1250) 在 com.fasterxml.jackson.databind.type.TypeFactory.constructType(TypeFactory.java:670) 在 com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3197) 在 com.pharmeasy.carbon.client.CarbonClient.lambda$evaluateVersion$0(CarbonClient.java:321) 在 reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:100) 在 reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1705) 在 reactor.core.publisher.MonoZip$ZipCoordinator.signal(MonoZip.java:247) 在 reactor.core.publisher.MonoZip$ZipInner.onNext(MonoZip.java:329)
我能知道我在这里缺少什么吗?
编辑
当我们有 T 时,我认为 new TypeReference<CarbonResponse<T>>() {} 会给出 null,但我无法找出解决方案。
【问题讨论】:
-
添加评论,因为它可能会出现,请
-
你能找到任何解决方案吗?
-
@user3247895 是的,必须在这里和那里进行一些更改才能使其正常工作
标签: java spring-boot generics jackson spring-data