先随便建一个类Person.java:
package demo01.pojo; public class Person { private Integer id; private String name; public Person() { } public Person(Integer id, String name) { this.id = id; this.name = name; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
在JsonTest.java中实现类型的相互转换(记得导jar包(我使用的是gson-2.2.4.jar)):
1、JavaBean和Json的相互转换:
使用toJson()方法转换成json字符串,使用fromJson()方法转换回来
/** * 1.javaBean和json的互转 */ @Test public void test1(){ Person person = new Person(1, "哈哈哈"); Gson gson = new Gson(); //toJson()方法可以把java对象转换成为json字符串 String personJsonString = gson.toJson(person); System.out.println(personJsonString); //fromJson()把json字符串转换为java对象 Person person1 = gson.fromJson(personJsonString, Person.class); System.out.println(person1); }
2、 List类型和Json的相互转换
这里采用的方法是写一个PersonListType.java类去继承TypeToken,使用它的getType()方法获取类型作为fromJson的第二个参数(也可采用匿名内部类的方法)
PersonListType.java:
package demo01.json; import com.google.gson.reflect.TypeToken; import demo01.pojo.Person; import java.util.ArrayList; /** * 在JsonTest.java中,用做将json字符串转换成list */ public class PersonListType extends TypeToken<ArrayList<Person>> { }
/** * 2.list和json的互转 */ @Test public void test2(){ List<Person> personList=new ArrayList<>(); personList.add(new Person(1,"哈哈哈")); personList.add(new Person(2,"嘿嘿嘿")); Gson gson = new Gson(); //把列表转换为json字符串 String personListJsonString = gson.toJson(personList); System.out.println(personListJsonString); List<Person>list = gson.fromJson(personListJsonString,new PersonListType().getType()); System.out.println(list); }
3、Map类型和Json的相互转换
原理和List基本相同,这里使用匿名内部类的方法,就不用再另写一个类了
/*** * 3.map和json的互转 */ public void test3(){ Map<Integer,Person> personMap = new HashMap<>(); personMap.put(1,new Person(1,"哈哈哈")); personMap.put(2,new Person(2,"嘿嘿嘿")); Gson gson = new Gson(); //把map集合转换成为json字符串 String personMapJsonString = gson.toJson(personMap); System.out.println(personMapJsonString); //把json字符串转换成为map集合 // Map<Integer,Person> personMap2 = gson.fromJson(personMapJsonString,new PersonMapType().getType()); Map<Integer,Person> personMap2 = gson.fromJson(personMapJsonString,new TypeToken<HashMap<Integer,Person>>(){}.getType()); System.out.println(personMap2); }
完整JsonTest.java代码:
package demo01.json; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import demo01.pojo.Person; import org.junit.Test; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class JsonTest { /** * 1.javaBean和json的互转 */ @Test public void test1(){ Person person = new Person(1, "哈哈哈"); Gson gson = new Gson(); //toJson()方法可以把java对象转换成为json字符串 String personJsonString = gson.toJson(person); System.out.println(personJsonString); //fromJson()把json字符串转换为java对象 Person person1 = gson.fromJson(personJsonString, Person.class); System.out.println(person1); } /** * 2.list和json的互转 */ @Test public void test2(){ List<Person> personList=new ArrayList<>(); personList.add(new Person(1,"哈哈哈")); personList.add(new Person(2,"嘿嘿嘿")); Gson gson = new Gson(); //把列表转换为json字符串 String personListJsonString = gson.toJson(personList); System.out.println(personListJsonString); List<Person>list = gson.fromJson(personListJsonString,new PersonListType().getType()); System.out.println(list); } /*** * 3.map和json的互转 */ public void test3(){ Map<Integer,Person> personMap = new HashMap<>(); personMap.put(1,new Person(1,"哈哈哈")); personMap.put(2,new Person(2,"嘿嘿嘿")); Gson gson = new Gson(); //把map集合转换成为json字符串 String personMapJsonString = gson.toJson(personMap); System.out.println(personMapJsonString); //把json字符串转换成为map集合 // Map<Integer,Person> personMap2 = gson.fromJson(personMapJsonString,new PersonMapType().getType()); Map<Integer,Person> personMap2 = gson.fromJson(personMapJsonString,new TypeToken<HashMap<Integer,Person>>(){}.getType()); System.out.println(personMap2); } }