【问题标题】:Using reflection to set property values where types are unknown使用反射设置类型未知的属性值
【发布时间】:2013-05-18 05:33:59
【问题描述】:

我正在使用反射在运行时设置值对象属性。如果一切都是字符串,我可能不会问这个问题,但事实并非如此。我有一个返回 json 的 Web 服务,我想使用该服务返回的 json 来填充对象。我有一个名为alphabeticalKeys 的字符串ArrayList,其中包含json 字符串中的排序键。这是我用来动态填充对象(用户)的代码:

for(String fieldName : alphabeticalKeys){
    Log.d("JSON:" + fieldName, json.getString(fieldName));
    Field f = userClass.getDeclaredField(fieldName);
    f.setAccessible(true);
    f.set(user, jsonObject.get(fieldName));
} 

在json数据集中,有strings,doubles等等。这是工厂类的一部分,其中返回的对象类型在编译时是未知的。此外,json 字段的数据类型可能会根据所需的对象类型而有所不同。

json 输出与返回对象中的字段名称匹配,因此我正在寻找一种方法来处理 json 输出中返回的不同数据类型。有人可以提供建议吗?

谢谢!薇薇安

【问题讨论】:

标签: java reflection


【解决方案1】:

有一些库可以帮助使用反射设置属性值,并在必要时转换为适当的类型。比如Spring Framework的BeanWrapperApache Commons BeanUtils

还有一些 json 库可以处理 json 与 java 对象之间的映射。例如,GsonJackson。这可能会更容易,尤其是当 json 结构与 java 对象结构非常匹配时。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-06
    • 1970-01-01
    • 2010-11-21
    • 2020-05-18
    • 1970-01-01
    相关资源
    最近更新 更多