对于json中的map中为对象的解析

来源:互联网 发布:基础建筑学软件 编辑:程序博客网 时间:2024/05/21 17:10

          今天写下此篇,主要是昨天要做一个json的解析,接口的返回json,把一些结构不同的东西放到了一个map中,如何解析,这个问题就变得比较棘手,

         你可以用一个map<String,Object>来把这个结构进行封装,在封装结束把对象解析回来,如何把map中的对象变成具体的对象,这个问题变得比较复杂,如果是一个map中的那个key对应的对象为基本类型或者基本类型的包装类,直接通过对象类型转换就搞定了。如果对象的那个对象是个集合,你就需要把他一个一个遍历,直到那个集合获取到的是一个最基本的对象为止,如何把最小单元的对象变成具体的对象,如果你想通过直接类型转换来搞定,那你就错了,为何?因为那个结构是个map把map转具体对象,直接就报错了。如何解决这个问题?那就是把map转对象,通过对map遍历,通过类型的属性在map中找对应属性名的key存不存在?存在那就找该属性的set方法,把这个属性设置进去,这样就可以把这个转换完了,主要那个key对应的value一定要和那个set方法的类型一致,否则就出错。附上解决的代码:

        //其中那个obj是要转换的具体的类,这个执行完,就把map对象的属性设置到obj这个对象中了
public static void transMap2Bean(Map<String, Object> map, Object obj) {
try {
BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor property : propertyDescriptors) {
String key = property.getName();
if (map.containsKey(key)) {
Object value = map.get(key);
// 得到property对应的setter方法
Method setter = property.getWriteMethod();
setter.invoke(obj, value);
}
}
} catch (Exception e) {
System.out.println("transMap2Bean Error " + e);
}
return;
}


       上面的代码是我们的老大写的。其实有了一堆工具,你只需要懂得该用那个就够了。且行且珍惜。

原创粉丝点击