封装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);
}