java从单个对象以及对象集合中提取任何属性值
我有一个从对象中提取字段的函数,如下所示:
public String getId(Map<String, Object> input, String fieldName)
return BeanUtils.getProperty(input, fieldName);
}
实际上,上面的函数是在方面中调用的
我正在从所有截获的方法参数构造在上述函数中传递的Map<String, Object>
,如下所示:
public Map<String, Object> getArgumentsAsMap(JoinPoint joinPoint) throws JsonProcessingException {
Map<String, Object> argumentNameValueMap = new HashMap<>();
MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature();
if (methodSignature.getParameterNames() == null) {
return argumentNameValueMap;
}
for (int i = 0; i < methodSignature.getParameterNames().length; i++) {
String argumentName = methodSignature.getParameterNames()[i];
Object argumentValue = joinPoint.getArgs()[i];
if (Objects.isNull(methodSignature.getParameterTypes())) {
argumentNameValueMap.put(argumentName, mapper.convertValue(argumentValue, Map.class));
}
}
return argumentNameValueMap;
}
函数getId
适用于任何普通对象和任何参数,但List类型的参数除外
实际上,我在将对象列表作为param传递时得到了这个映射,如下所示:
Map<String, Object> myMap = {"myDTOs" -> {"value" -> "[{"id":null,"name":"Test","description":"Test","studentId":"abcd"}]"}}
从上面的图中,我尝试使用BeanUtils
提取studentId
,如下所示:
BeanUtils.getProperty(myMap, "value[0].studentId")
但它不起作用,我得到了以下例外:
Indexed or mapped properties are not supported on objects of type
请任何人在此提供帮助,以便提取任何字段值的代码既适用于单个对象,也适用于集合?否则,我必须编写额外的代码来检查参数是否可能是集合类型,然后相应地处理它
共 (0) 个答案