java Gson与对象,Map集合,List之间的相互转化
前言
今天用的是gson工具类实现几个常用的gson转化和list转为对象这几个常用的。
建一个User类
public class User {
String name;
String id;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
String password;
}
建一个GsonUtil工具类
package com.cn.wjp.util;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.cglib.beans.BeanMap;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
/**
* @ClassName: GsonUtil
* @Description: TODO(这里用一句话描述这个类的作用)
* @author ljt
* @date 2018-11-5 上午8:26:17 * *
*/
public class GsonUtil {
// 不用创建对象,直接使用Gson.就可以调用方法
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 GsonUtil() {
}
/**
* 将对象转成json格式
*
* @param object
* @return String
*/
public static String objectToGson(Object object) {
String gsonString = null;
if (gson != null) {
gsonString = gson.toJson(object);
}
return gsonString;
}
/**
* 将json转成特定的cls的对象
*
* @param gsonString
* @param cls
* @return
*/
public static <T> T gsonToBean(String gsonString, Class<T> cls) {
T t = null;
if (gson != null) {
// 传入json对象和对象类型,将json转成对象
t = gson.fromJson(gsonString, cls);
}
return t;
}
/**
* json字符串转成list
*
* @param gsonString
* @param cls
* @return
*/
public static <T> List<T> gsonToList(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));
}
// 根据泛型返回解析指定的类型,TypeToken<List<T>>{}.getType()获取返回类型
/*
* list = gson.fromJson(gsonString, new TypeToken<List<T>>() {
* }.getType());
*/
}
return list;
}
/**
* list转为对象
* @param List<T> ts
* @return jsons
*/
public static <T> String listToGson(List<T> ts) {
String jsons = gson.toJson(ts);
return jsons;
}
/**
* 将对象装换为map
*
* @param bean
* @return
*/
public static <T> Map<String, Object> beanToMap(T bean) {
Map<String, Object> map = new HashMap<>();
if (bean != null) {
BeanMap beanMap = BeanMap.create(bean);
for (Object key : beanMap.keySet()) {
map.put(String.valueOf(key), beanMap.get(key));
}
}
return map;
}
/**
* 将map装换为javabean对象
*
* @param map
* @param bean
* @return
*/
public static <T> T mapToBean(Map<String, Object> map, T bean) {
BeanMap beanMap = BeanMap.create(bean);
beanMap.putAll(map);
return bean;
}
}
建一个Love测试类
不要在一类名字,看着高兴
package com.cn.wjp.controller;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.cn.wjp.util.GsonUtil;
public class Love {
private static void getList() {
List list=new ArrayList<String>();
list.add("1");
list.add("2");
list.add("3");
System.out.println("List:"+list);
String json= GsonUtil.listToGson(list);
System.out.println("list转为对象"+json);
}
private static void getMap() {
HashMap<Integer, String> map=new HashMap<Integer,String>();
map.put(1, "张三");
map.put(2, "李四");
map.put(3, "王麻子");
System.out.println("map"+map);
}
private static void getObject() {
User love=new User();
love.setId("1");
love.setName("王五");
love.setPassword("123456");
System.out.println("对象:"+love);
//Map与对象之间的转化
Map<String, Object> map= GsonUtil.beanToMap(love);
System.out.println("对象转为Map:"+map);
User l=GsonUtil.mapToBean(map, love);
System.out.println("Map转换对象:"+l);
//gson与对象之间的转化
String loveYou= GsonUtil.objectToGson(love);
System.out.println("对象转为gson"+loveYou);
User user=GsonUtil.gsonToBean(loveYou,User.class);
System.out.println("gson转化对象:"+user);
}
public static void main(String[] args) {
Love.getList();
Love.getMap();
Love.getObject();
}
}
运行结果
注意各种类型的格式