繁体   English   中英

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

[英]Using reflection to set property values where types are unknown

我正在使用反射在运行时设置值对象属性。 如果一切都是字符串,我可能不会问这个问题,但事实并非如此。 我有一个返回json的Web服务,我想使用该服务返回的json来填充对象。 我有一个名为AlphabeticalKeys的字符串数组,它在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输出中返回的不同数据类型的方法。 有人可以提出建议吗?

谢谢! 维维安

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

还有json库将处理json与java对象之间的映射。 例如, GsonJackson 这可能会更容易,尤其是在json结构与java对象结构紧密匹配的情况下。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM