T对象转换成map对象/List对象 * 或者map对象/List对象转换为T对象

# 为了做一个数据库的的工具类,使用对象快速查询则想到了对象之间的转换,在网上查找了好多都没有自己想要的,所以就下笔自己想了一个工具类,如果此工具能帮到你我希望更好了,如果对你没有用也不要怪我,因为我也不知道你想要什么样的,就算你想要的,我也不一定写得出来哈,请大家不要见怪哈

初到而来写代码,如果问题请留言

  • 把T对象转换为Map对象

  • Map对象转换为T对象

  • 获得T对象的list中的一个


T为实体对象,没有试过其他复杂对象(对象嵌套对象可能要修改一下)

ObjectsSerializedMap < T >

在工具类里导入这个包很重要
import com.google.gson.Gson;

可以去这里查看最新的包
//http://www.mvnrepository.com/artifact/com.google.code.gson/gson
我使用的是2.8.1的包
as直接引用这个包就可以了 compile ‘com.google.code.gson:gson:2.8.1’

废话不多说了直接上代码



import com.google.gson.Gson;

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * Created by Jay on 2017/9/13 0013.
 * T对象转换成amp对象
 * 或者map对象转换为T对象
 * <p>
 * user to map or map to user
 */

public class ObjectsSerializedMap<T> {
    private T object;
    private Gson gson;

    /**
     * 把T对象转换为Map对象
     *
     * @param tClass T对象
     * @return Map<Object,Object>
     */
    public Map<Object, Object> getObjectMap(T tClass) {
        try {
            if (gson == null) {
                gson = new Gson();
            }
            String jsonStr = gson.toJson(tClass);
            return gson.fromJson(jsonStr, Map.class);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    /**
     * Map对象转换为T对象
     *
     * @param objectMap  Map<Object, Object>对象
     * @param object     Class<T> 对象
     * @return T对象
     */
    public T getT(Map<Object, Object> objectMap, Class<T> object) {
        try {
            //        //"通过Map.entrySet遍历key和value"   尤其是容量大时(相对来说 比2好一点 效率高)
//        for (Map.Entry<Object, Object> entry : objectMap.entrySet()) {
//            Field[] fields = object.getDeclaredFields();
//            if ("$change".equals(fields[1].getName())
//                    || "serialVersionUID".equals(fields[1].getName())) {//这是什么鬼...不知道,应该是install run的差分编译原因
            //如果想用此方法可以去自己把对象里的属性一个一个的添加
//                continue;
//            }
//            System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
//        }
            if (gson == null) {
                gson = new Gson();
            }
            String jsonStr = gson.toJson(objectMap);
            return gson.fromJson(jsonStr, object);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    List<T> tList = null;

    /**
     * 把对象转换为list对象
     *
     * @param tClass
     * @return
     */
    public List<T> setListT(T tClass) {
//      try {
//          if (gson==null){
//              gson = new Gson();
//          }
//          String jsonStr = gson.toJson(tClass);//{"user":"4","ids":"3","avg":"2"}
//          jsonStr="["+jsonStr+"]";
//        //  [{"name":"name0","age":0}]//list数据、、[{"name":"name0","age":0}][{"name":"name1","age":5}][{"name":"name2","age":10}]
//          return gson.fromJson(jsonStr,new TypeToken<List<T>>(){}.getType());
//      }catch (Exception e){
//          e.printStackTrace();
//          return null;
//      }
        try {
            if (tList == null) {
                tList = new ArrayList<T>();
            }
            tList.add(tClass);
            return tList;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    /**
     * 获得单个T对象
     * @return T 对象
     */
    public T getObjectList() {
        try {
            if (tList != null && tList.size() > 0) {
                return tList.get(0);
            }
            return null;
        } catch (Exception e) {
            return null;
        }
    }
}

**源码地址:
https://github.com/Jay-YaoJie/DbHelpeForAndroid

我准备写sqlite 数据库需要的此工具,后期会有跟多更新哦,请多多支持!谢谢!**。

猜你喜欢

转载自blog.csdn.net/jeff_yaojie/article/details/77968380