Java Jackson ReadValue没有';t转换为列表<&燃气轮机;

Java Jackson ReadValue没有';t转换为列表<&燃气轮机;,java,reflection,jackson,Java,Reflection,Jackson,我有个问题。我使用自定义注释,它接受方法参数并将它们从json转换为pojo。下面是一个例子: ... MethodParameter param // here a parameter from methods, marked with custom annotation ... JSON_MAPPER.readValue(node, param.getParameterType()); java.util.LinkedHashMap cannot be cast to com.lifer

我有个问题。我使用自定义注释,它接受方法参数并将它们从json转换为pojo。下面是一个例子:

...
MethodParameter param 
// here a parameter from methods, marked with custom annotation
...
JSON_MAPPER.readValue(node, param.getParameterType());

java.util.LinkedHashMap cannot be cast to com.liferay.portal.kernel.util.KeyValuePair
但当我尝试转换列表时,它不起作用。但是下面的代码运行良好

JSON_MAPPER.readValue(node, new TypeReference<List<KeyValuePair>>(){});
JSON_MAPPER.readValue(节点,新类型引用(){});

如何计算收入数据的类型?我该怎么办?

我假设您的方法

public List<KeyValuePair> methodName(..) {..}

方法签名是什么?列表设置-它在控制器方法中用自定义注释标记,然后转到my custom annotation实现@SotiriosDelimanolisI试图使用类似
JSON_MAPPER.readValue(node,param.getGenericParameterType())的东西
但它不起作用,因为param.getGenericParameter返回类型,而不是类,因为readValue不接受类型。@jahra抱歉,我把它与Gson混淆了,后者接受
类型
。使用Jackson,只需使用
TypeFactory
构建
JavaType
。我已经编辑了详细信息,很有效!这就像霍格沃兹的魔法,但很管用!非常感谢,你救了我:)但我有个问题。如果param不是泛型的,而是简单字符串或其他类类型,它会工作吗?@jahra它应该工作。如果返回类型不是泛型的,它将只返回相应的
Class
对象<代码>类是
类型
的子类型。
mapper.readValue(node, mapper.getTypeFactory().constructType(param.getGenericParameterType()));