使用反射设置类型未知的属性值

时间:2013-05-17 20:05:48

标签: java reflection

我使用反射在运行时设置值对象属性。如果一切都是字符串,我可能不会问这个问题,但事实并非如此。我有一个返回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数据集中,有字符串,双精度等。这是工厂类的一部分,其中返回的对象类型在编译时是未知的。此外,json字段的数据类型可能会根据所需对象的类型而有所不同。

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

THX!维维

1 个答案:

答案 0 :(得分:0)

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

还有json库可以处理json到/从java对象的映射。例如,GsonJackson。这可能会更容易,特别是如果json结构与java对象结构紧密匹配。

相关问题