问题描述:
开发的过程中有个场景,有个数据结构是上传数据时用到的UploadData,这个结构在其他模块也有用到,因此定义完后一般不会修改添加。
但是我本地UI是用一个recyclerview来展示数据,需要在原有的数据结构上加两个状态信息,因此,本地新建了一个数据结构DisplayData继承了UploadData,在原基础上加上了两个状态位参数。但是每次数据下载和上传需要两个对象互相转换下。
解决方法:使用了Gson
- 下载的数据可以直接使用Gson转化为DisplayData类;
- 数据上传的时候可以使用Gson转为String,再转UploadData类进行上传;
之前尝试了属性拷贝的方法,但是这个只适合较为简单的数据结构,具体方法如下:
/**
* 复制对象属性包含父类
*
* @param from
* @param to
* @throws Exception
*/
@SuppressWarnings("unchecked")
public static void copyPropertiesIncludeFather(Object from, Object to) throws Exception {
Log.i("test", "--- copyPropertiesIncludeFather ---");
Method[] fromMethods = getAllMethodsFromSonObject(from);
Method[] toMethods = getAllMethodsFromSonObject(to);
Method fromMethod = null, toMethod = null;
String fromMethodName = null, toMethodName = null;
for (int i = 0; i