2013-05-17 77 views
1

我正在使用反射来设置运行时的值对象属性。如果一切都是弦乐,我可能不会问这个问题,但事实并非如此。我有一个返回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! Vivian

+2

http://docs.oracle.com/javase/tutorial/reflect/member/fieldTypes.html –

回答

0

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

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