目录
测试公共类
@Data
public class Person {
private String name;
private FullName fullName;
private int age;
private Date birthday;
private List<String> hobbies;
private Map<String, String> clothes;
private List<Person> friends;
private String address;
public static Person prepare() {
List<Person> friends=new ArrayList<Person>();
friends.add(createAPerson("小明",null));
friends.add(createAPerson("Tony",null));
friends.add(createAPerson("陈小二",null));
return createAPerson("邵同学",friends);
}
private static Person createAPerson(String name, List<Person> friends) {
Person newPerson=new Person();
newPerson.setName(name);
newPerson.setFullName(new FullName("zjj_first", "zjj_middle", "zjj_last"));
newPerson.setAge(24);
newPerson.setBirthday(new Date());
List<String> hobbies=new ArrayList<String>();
hobbies.add("篮球");
hobbies.add("游泳");
hobbies.add("coding");
newPerson.setHobbies(hobbies);
Map<String,String> clothes=new HashMap<String, String>();
clothes.put("coat", "Nike");
clothes.put("trousers", "adidas");
clothes.put("shoes", "安踏");
newPerson.setClothes(clothes);
newPerson.setFriends(friends);
return newPerson;
}
}
@Data
public class FullName {
private String firstName;
private String middleName;
private String lastName;
public FullName() {
}
public FullName(String firstName, String middleName, String lastName) {
this.firstName = firstName;
this.middleName = middleName;
this.lastName = lastName;
}
}
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
private String name;
private int age;
}
Gson
项目地址:https://github.com/google/gson
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.9</version>
</dependency>
工具类
package com.lb.util;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
public class GsonUtil {
/**
* 不用创建对象,直接使用Gson.就可以调用方法
*/
private static Gson gson = null;
/**
* 判断gson对象是否存在了,不存在则创建对象
*/
static {
if (gson == null) {
//使用GsonBuilder.serializeNulls()可以显示属性为空时,key:null
//.setDateFormat设置Date类型,转换成json时的输出格式
// gson = new GsonBuilder().serializeNulls().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
}
}
private GsonUtil() {
}
/**
* 将对象转成json格式
*/
public static String toJson(Object object) {
String gsonString = null;
if (gson != null) {
gsonString = gson.toJson(object);
}
return gsonString;
}
/**
* 将json转成特定的cls的对象
*/
public static <T> T fromJson(String gsonString, Class<T> cls) {
T t = null;
if (gson != null) {
//传入json对象和对象类型,将json转成对象
t = gson.fromJson(gsonString, cls);
}
return t;
}
/**
* json字符串转对象
*/
public static <T> T toObject(String gsonString, TypeToken<T> typeToken) {
if (gson != null) {
return gson.fromJson(gsonString, typeToken.getType());
}
return null;
}
}
测试
public class GsonUtilTest {
@Test
public void test01() {
Person person = Person.prepare();
String json = GsonUtil.toJson(person);
System.out.println(json);
Person p2 = GsonUtil.fromJson(json, Person.class);
FullName fullName = p2.getFullName();
System.out.println(fullName);
Date birthday = p2.getBirthday();
System.out.println(birthday);
List<String> hobbies = p2.getHobbies();
for (String hobby : hobbies) {
System.out.println(hobby);
}
Map<String, String> clothes = p2.getClothes();
for (Map.Entry<String, String> entry : clothes.entrySet()) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}
List<Person> friends = p2.getFriends();
for (Person friend : friends) {
System.out.println(friend);
}
}
@Test
public void test_list() {
List<User> list = new ArrayList<User>();
list.add(new User("lisi", 23));
list.add(new User("wangwu", 22));
list.add(new User("zhaoliu", 24));
String json = GsonUtil.toJson(list);
new TypeToken<List<User>>() {
};
List<User> users = GsonUtil.toObject(json, new TypeToken<List<User>>() {});
for (User user : users) {
System.out.println(user);
}
}