Gson是一个Java 对象和 JSON 数据之间进行映射的 Java 类库,可以将一个 JSON 字符串转成一个 Java 对象,或者将Java对象转化为JSON字符串。
实体类对象如下:
import java.util.Date;
public class Employee {
private String name;
private String empId;
private Date hireDay;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmpId() {
return empId;
}
public void setEmpId(String empId) {
this.empId = empId;
}
public Date getHireDay() {
return hireDay;
}
public void setHireDay(Date hireDay) {
this.hireDay = hireDay;
}
@Override
public String toString() {
return "Employee [name=" + name + ", empId=" + empId + ", hireDay="
+ hireDay + "]";
}
public Employee() {
}
public Employee(String name, String empId, Date hireDay) {
this.name = name;
this.empId = empId;
this.hireDay = hireDay;
}
}
使用JUnit进行测试,测试类如下:
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.junit.Test;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
public class GsonTest {
private static Gson gson = new Gson();
/**
* 单个的对象转化
*/
@Test
public void simpleObject() {
Employee employee = new Employee("jerry", "20245", new Date());
// 将employee转化为JSON对象
String employeeJson = gson.toJson(employee);
// 输出employee对象
System.out.println("employee对象:\n" + employee);
// 输出employee转化后的JSON数据对象
System.out.println("转化为JSON的信息:\n" + employeeJson);
Employee employee2 = gson.fromJson(employeeJson, Employee.class);
// 输出JSON数据转化为Employee对象
System.out.println("JSON数据转化为Employee对象:\n" + employee2);
}
/**
* list类型的Employee与JSON数据的相互转化
*/
@Test
public void listObject() {
List<Employee> employees = new ArrayList<Employee>();
employees.add(new Employee("jerry", "23245", new Date()));
employees.add(new Employee("cindy", "1854", new Date()));
employees.add(new Employee("kimi", "1858", new Date()));
// 输出employees对象
System.out.println("employees对象:\n" + employees);
String employeesJson = gson.toJson(employees);
// 输出employees转化后的JSON数据对象
System.out.println("转化为JSON的信息:\n" + employeesJson);
// 将Json转化为list类型的employee
List<Employee> employees2 = gson.fromJson(employeesJson,
new TypeToken<List<Employee>>() {
}.getType());
// 输出JSON转化为list的对象
System.err.println("转化为list类型的数据:\n" + employees2);
}
/**
* map类型的Employee与JSON格式的相互转化
*/
@Test
public void mapObject(){
Map<String, Employee> map = new HashMap<String,Employee>();
map.put("jerry", new Employee("jerry", "21245", new Date()));
map.put("cindy", new Employee("cindy", "1854", new Date()));
map.put("kimi", new Employee("kimi", "1858", new Date()));
//输出map对象
System.out.println("输出map对象:\n"+map);
String mapJson = gson.toJson(map);
//输出json字符串
System.out.println("Json对象:\n"+mapJson);
//输出由JSON转化为Map对象
Map<String, Employee>map2 = gson.fromJson(mapJson, new TypeToken<Map<String,Employee>>(){}.getType());
System.err.println("JSON转化为map对象:\n"+map2);
}
}