java.lang.IllegalArgumentException:无法识别的类型:杰克逊中的 [null]

Posted

技术标签:

【中文标题】java.lang.IllegalArgumentException:无法识别的类型:杰克逊中的 [null]【英文标题】:java.lang.IllegalArgumentException: Unrecognized Type: [null] in Jackson 【发布时间】: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&lt;CarbonResponse&lt;T&gt;&gt;() 会给出 null,但我无法找出解决方案。

【问题讨论】:

添加评论,因为它可能会出现,请 你能找到任何解决方案吗? @user3247895 是的,必须在这里和那里进行一些更改才能使其正常工作 【参考方案1】:

你可以使用

Mono<CarbonResponse<Void>>
new TypeReference<CarbonResponse<Void>

【讨论】:

最好解释这个问题的原因,然后提出解决方案。

以上是关于java.lang.IllegalArgumentException:无法识别的类型:杰克逊中的 [null]的主要内容,如果未能解决你的问题,请参考以下文章

IllegalArgumentException:此 NavController 未知导航目的地 xxx