运行时将JSON String转换为Java Object是否可行?
运行时将JSON字符串转换为指定类的Java对象
当然可行!你已经找对了思路,只需要调整readValue方法的参数就能解决问题。
你代码里已经通过Class.forName(reference3)获取到了目标类型的Class实例,直接把这个实例传给readValue方法,就能完成JSON字符串到对应Java对象的转换,不需要硬写死.class引用。
另外还有几个小细节可以优化:
- *
Class.newInstance()*在Java 9及以上已经被废弃,建议改用getDeclaredConstructor().newInstance()来创建实例,兼容性更好 - 参数类型数组的创建可以简化,不用单独声明变量
修改后的代码如下:
String className = errorInfo.getClassName(); String methodName = errorInfo.getMethodName(); String requestMessage = errorInfo.getMessage(); String reference3 = errorInfo.getReference3(); try { Class<?> targetClass = Class.forName(className); Object obj = targetClass.getDeclaredConstructor().newInstance(); // 替代废弃的newInstance() Class<?> paramType = Class.forName(reference3); Method method = targetClass.getMethod(methodName, paramType); // 直接传入动态获取的Class实例 Object requestObj = new ObjectMapper().readValue(requestMessage, paramType); method.invoke(obj, requestObj); } catch(Exception ex) { // 建议添加异常处理逻辑,比如打印日志,避免吞掉异常导致问题难以排查 ex.printStackTrace(); }
这样就能在运行时动态指定要转换的目标类,完美实现你的需求啦!
内容的提问来源于stack exchange,提问作者Ram Pratap
相关产品推荐
相关产品推荐

