自动将字符串转换为Java对象
-
29-09-2019 - |
题
我想转换用户输入 Map<String, String[]>
到 Java 中的对象。更具体地说,我想将 HttpServletRequest 的参数转换为任意域对象的字段。
我想要这样的东西:
Domain d = Converter.convert(params, new Domain());
如果字符串数组中有多个元素(即映射条目的值),则应将其转换为列表或数组。也许应该考虑区域设置来进行日期和货币转换。如果能列出转换错误的列表就更好了。
有没有带有这样转换器的库?
你会称其为“转换器”吗?我认为它通常被称为“数据绑定”,但在我看来这是错误的术语,因为它与将模型值绑定到 GUI 元素有关,有什么稍微不同的事情 - 不是吗?
解决方案
如果您的网络框架不支持此功能,请查看
http://commons.apache.org/beanutils/ ,特别是 beanutils 包,它具有与您想要的类似用途(可能完全相同)的类。
您也可以考虑切换到更成熟的框架;-)
其他提示
不要使用这个纯代码,因为它只是一个示例。您应该添加一些漂亮的异常处理和一个通过映射的循环。但一般的想法是这样的:
void putValue(String name, String value, Object object) throws Exception {
String setterName = "set"+name.substring(0,1).toUpperCase()+name.substring(1);
Method m = object.getClass().getMethod(setterName, String.class);
if (m!=null) {
m.invoke(object, value);
}
}
这段代码,给定了参数名称 '姓名' 会尝试寻找方法 setName(String name)
并用给定的值调用它。
不隶属于 StackOverflow