gpt4 book ai didi

android - 找不到非具体集合类型的反序列化

转载 作者:行者123 更新时间:2023-11-29 14:52:07 24 4
gpt4 key购买 nike

我正在使用 jackson 库将 JSON 映射到对象中。我大大简化了问题,结果是这样的:

public class MyObject{

public ForeignCollection<MySecondObject> getA(){
return null;
}

public ForeignCollection<MyThirdObject> getB(){
return null;
}
}

我正在解析一个空的 JSON 字符串:

ObjectMapper mapper = new ObjectMapper();
mapper.readValue("{}", MyObject.class);

readValue 上,我得到这个异常:

com.fasterxml.jackson.databind.JsonMappingException: Can not find a deserializer for non-concrete Collection type [collection type; class com.j256.ormlite.dao.ForeignCollection, contains [simple type, class com.test.MyThirdObject]]

当我在 MyObject 类中有两个 get 方法返回一个 ForeignCollection 时,就会发生这种情况。删除其中一个 get 方法不会导致异常。

事实上,我对映射器查看 get 方法这一事实感到惊讶,它应该只设置我指示的字段。

这里发生了什么?

最佳答案

您需要在 ObjectMapper 中使用 Guava 模块。这是 Maven 依赖项:

<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-guava</artifactId>
<version>{whatever is the latest}</version>
</dependency>

在您的代码中:

ObjectMapper mapper = new ObjectMapper();
// register module with object mapper
mapper.registerModule(new GuavaModule());

您可以省略 @JsonDeserialize@JsonSerialize 注释。

更多信息 here .

关于android - 找不到非具体集合类型的反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14853324/

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