pom文件:
1 2 3 4 5 | <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.5</version> </dependency> |
Gson相比org.json最大的好处是从json字符串转向java实例时候少了依据每个实例自己赋值的过程,比如在org.json的时候,我们先从json字符串构建一个jsonobject,然后用各种的json get方法获取到每个字段的值,这是一个体力活。而gson依据反射机制我们只要传递我们要实例化的类型class进去返回就是创建好的实例。大大减少了代码量。
java转json
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | import java.util.List; import java.util.Map; import com.google.gson.Gson; import gson.demo.javabean.Person; public class ObjectToJson { /** * javabean to json * * @param person * @return */ public static String javabeanToJson(Person person) { Gson gson = new Gson(); String json = gson.toJson(person); return json; } /** * list to json * * @param list * @return */ public static String listToJson(List<Person> list) { Gson gson = new Gson(); String json = gson.toJson(list); return json; } /** * map to json * * @param map * @return */ public static String mapToJson(Map<String, Person> map) { Gson gson = new Gson(); String json = gson.toJson(map); return json; } } |
Json转java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | import java.util.List; import java.util.Map; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import gson.demo.javabean.Person; public class JsonToObject { /** * json to javabean * * @param json */ public static void jsonToJavaBean(String json) { Gson gson = new Gson(); Person person = gson.fromJson(json, Person.class);//对于javabean直接给出class实例 System.out.println(person.toString()); } /** * json字符串转List集合 */ public static void jsonToList(String json) { Gson gson = new Gson(); List<Person> persons = gson.fromJson(json, new TypeToken<List<Person>>() { }.getType());//对于不是类的情况,用这个参数给出 for (Person person : persons) { System.out.println(person); } } public static void jsonToMap(String json) { // TODO Auto-generated method stub Gson gson = new Gson(); Map<String, Person> maps = gson.fromJson(json, new TypeToken<Map<String, Person>>() { }.getType()); for (Map.Entry<String, Person> entry : maps.entrySet()) { System.out.println("key: " + entry.getKey() + " " + "value: " + entry.getValue()); } } } |