关于Model作为参数在反射调用中问题

@JFINAL

    Admin 是一个 继承了Model类,我遇到问题,Admin 作为输入参数,在通过 反射method.invoke() 调用中无法获取转换的值,其它几个输入类,不管是Map还是 javaBean都可以很好通过method.invoke 反射动态调用执行。我现在想实现采用jsonrpc调用Service.不太了解怎么将json数据转成对应model实例以及作为 invoke参数输入?

{

    "jsonrpc": "2.0",

    "method": "admin.update",

    "params":[{"username":"bbbb","role":"bbbbb","id":1}],

    "id":1

}


public boolean update(Admin admin);
	
public boolean update(Map<String, String> map);
	
public boolean update(AdminBean bean);
//TODO 这段代码造成封装有问题
convertedParams = convertJsonToParameters(method, params);
if (convertedParameterTransformer != null) {
    convertedParams = convertedParameterTransformer.transformConvertedParameters(target, convertedParams);
}
result = method.invoke(target, convertedParams);
private Object[] convertJsonToParameters(Method m, List<JsonNode> params) throws IOException {
Object[] convertedParams = new Object[params.size()];
Type[] parameterTypes = m.getGenericParameterTypes();
		
/**********start guoenzhou h2017-11-16 04:45  对于输入参数是jinfal 模型无法获取到值**************/
for (int i = 0; i < parameterTypes.length; i++) {
JsonParser paramJsonParser = mapper.treeAsTokens(params.get(i));
JavaType paramJavaType = mapper.getTypeFactory().constructType(parameterTypes[i]);
convertedParams[i] = mapper.readValue(paramJsonParser, paramJavaType);//在参数向类注入参数时不行
}		
		
//for (int i = 0; i < parameterTypes.length; i++) {
//JsonParser paramJsonParser = mapper.treeAsTokens(params.get(i));
//JavaType paramJavaType = mapper.getTypeFactory().constructType(parameterTypes[i]);
//convertedParams[i] = mapper.readValue(paramJsonParser, paramJavaType);//在参数向类注入参数时不行
//}
/**********end guoenzhou 2017-11-16 04:45  对于输入参数是jinfal 模型无法获取到值**************/
return convertedParams;
}


评论区

JFinal

2017-11-16 10:13

1:用官方提供的生成器为 model 生成 getter setter 方法
2:me.setJsonFactory(new MixedJsonFactory())
3:Json.getJson().parse(jsonString, Admin.class)

enzhou

2017-11-17 15:45

@JFinal 谢谢 我看下这块代码实现

热门反馈

扫码入社