封装gson实现json工具类

488 阅读1分钟

封装gson实现json工具类

public class ConvertUtil {
    private static Gson gson = null;

    // 判断gson对象是否存在了,不存在则创建对象
    static {
        if (gson == null) {
            // gson = new Gson();
            // 当使用GsonBuilder方式时属性为空的时候输出来的json字符串是有键值key的,显示形式是"key":null,而直接new出来的就没有"key":null的
            gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss")
                    .create();
        }
    }

    private ConvertUtil() {
    }

    /**
     * bean转成json字符串
     * @param bean
     * @param <T>
     * @return
     */
    public static <T> String beanToJson(T bean) {
        String gsonString = null;
        if (gson != null) {
            gsonString = gson.toJson(bean);
        }
        return gsonString;
    }

    /**
     * json字符串转成对象
     * @param gsonString
     * @param cls
     * @return
     */
    public static <T> T jsonToBean(String gsonString, Class<T> cls) {
        T t = null;
        if (gson != null) {
            // 传入json对象和对象类型,将json转成对象
            t = gson.fromJson(gsonString, cls);
        }
        return t;
    }

    /**
     * json字符串转成list<Class>
     * @param gsonString
     * @param cls
     * @return
     */
    public static <T> List<T> jsonToList(String gsonString, Class<T> cls) {
        List<T> list = new ArrayList<T>();
        if (gson != null) {
            JsonParser parser = new JsonParser();
            JsonArray jsonarray = parser.parse(gsonString).getAsJsonArray();
            for (JsonElement element : jsonarray) {
                list.add(gson.fromJson(element, cls));
            }
        }
        return list;
    }

    /**
     * list<Class>转为json字符串
     *  @return jsons
     */
    public static <T> String listToJson(List<T> ts) {
        String jsons = gson.toJson(ts);
        return jsons;
    }

}

测试

@Test
public void convertTest() {
    // 模拟用户数据
    User user = getUser();
    List<User> userList = getUserList();

    // 对象转json
    String jsonBean = ConvertUtil.beanToJson(user);
    System.out.println(jsonBean);
    // json转对象
    User userJson = ConvertUtil.jsonToBean(jsonBean, User.class);
    System.out.println(userJson);
    // List<class>转json
    String jsonList = ConvertUtil.listToJson(userList);
    System.out.println(jsonList);
    // json转List<class>
    List<User> listJson = ConvertUtil.jsonToList(jsonList, User.class);
    System.out.println(listJson);
    // 对象转map
    Map<String, Object> mapBean = BeanUtil.beanToMap(user);
    System.out.println(mapBean);
    // map转对象
    User userMap = BeanUtil.mapToBean(mapBean, User.class, true);
    System.out.println(userMap);
}