相关疑难解决方法(0)

Jackson TypeReference在扩展时是否有效?

以下片段是不言自明的.您可以看到类型信息未被删除,但mapper不会获取类型信息.我猜是杰克逊不允许这样,对吧?如果我直接传递TypeReference,它会被正确反序列化.

public class AgentReq<T> extends TypeReference<AgentResponse<T>> {...}

mapper.readValue(reader, new AgentReq<Map<String, Set<Whatever>>>());
Run Code Online (Sandbox Code Playgroud)

如果我这样做,它也行不通:

public class AgentReq<T> {

    public TypeReference<AgentResponse<T>> getTypeRef() {
        return new TypeReference<AgentResponse<T>>() {};
    }
}

mapper.readValue(reader, new AgentReq<Map<String, Set<Whatever>>>()).getTypeRef();
Run Code Online (Sandbox Code Playgroud)

我正在使用2.1.5版.

编辑:为了将来参考,在解决问题时不要低估TypeReference构造函数.在那里你可以直接看到它是否能够检索类型信息.顺便说一句答案是否定的,你不能扩展TypeReference并期望它工作,你甚至不能覆盖它的getType()方法并提供从你的类解析的类型信息,因为你可以得到的只是getClass(). getGenericSuperClass()...你不能做getClass().getGenericClass()

java json jackson

2
推荐指数
1
解决办法
2731
查看次数

标签 统计

jackson ×1

java ×1

json ×1