码迷,mamicode.com
首页 > 编程语言 > 详细

Java之JSON操作(gson)

时间:2018-02-12 13:44:47      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:blog   void   []   没有   pack   enc   element   div   ddr   

使用gson包操作JSON数据。

依赖包:gson-2.8.2.jar

<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.2</version>
</dependency>

代码如下:

  1 package json.gson;
  2 
  3 import java.util.ArrayList;
  4 import java.util.List;
  5 import java.util.Map;
  6 
  7 import com.google.gson.Gson;
  8 import com.google.gson.JsonArray;
  9 import com.google.gson.JsonElement;
 10 import com.google.gson.JsonParser;
 11 import com.google.gson.reflect.TypeToken;
 12 
 13 /**
 14  * 使用gson来操作Json
 15  * 1.对象实体类,list,map,等转化成----->jsonString(进行数据传递)
 16  * 2.jsonString转化成----->对象实体类,list,map(解析返回的数据)
 17  * 3.我使用的是gson-2.2.2.jar
 18  *
 19  */
 20 public class JsonUtil {
 21 
 22 
 23     private static Gson gson = null;
 24 
 25     static {
 26         if (gson == null) {
 27             gson = new Gson();
 28         }
 29     }
 30 
 31 
 32     /**
 33      * 将object对象转成json字符串(jsonString)
 34      * boject 可以是List,也可以是Bean(对象类型)
 35      *
 36      * @param object
 37      */
 38     public static String GsonString(Object object) {
 39         String gsonString = null;
 40         if (gson != null) {
 41             gsonString = gson.toJson(object);
 42         }
 43         return gsonString;
 44     }
 45 
 46 
 47     /**
 48      * 入参是json对象
 49      * 将gsonObjectString转成泛型bean(实体类)
 50      *
 51      * @param gsonString
 52      */
 53     public static <T> T GsonToBean(String gsonString, Class<T> cls) {
 54         T t = null;
 55         if (gson != null) {
 56             t = gson.fromJson(gsonString, cls);
 57         }
 58         return t;
 59     }
 60 
 61     /**
 62      * 这里的入参是json数组类型的字符串
 63      * jsonArrayString转成list
 64      */
 65     public static <T> List<T> jsonArrayToList(String json, Class<T> cls) {
 66         Gson gson = new Gson();
 67         List<T> list = new ArrayList<T>();
 68         JsonArray array = new JsonParser().parse(json).getAsJsonArray();
 69         for (final JsonElement elem : array) {
 70             list.add(gson.fromJson(elem, cls));
 71         }
 72         return list;
 73     }
 74 
 75 
 76     /**
 77      * List对泛型没有要求
 78      * jsonString转成list中有map的
 79      */
 80     public static <T> List<Map<String, T>> GsonToListMap(String gsonString) {
 81         List list = null;
 82         if (gson != null) {
 83             list = gson.fromJson(gsonString,
 84                     new TypeToken<List>() {
 85                     }.getType());
 86         }
 87         return list;
 88     }
 89 
 90     /**
 91      * 要求List中全部是Map
 92      * jsonString转成list中有map的
 93      */
 94     public static <T> List<Map<String, T>> GsonToListMaps(String gsonString) {
 95         List<Map<String, T>> list = null;
 96         if (gson != null) {
 97             list = gson.fromJson(gsonString,
 98                     new TypeToken<List<Map<String, T>>>() {
 99                     }.getType());
100         }
101         return list;
102     }
103 
104 
105     /**
106      * jsonString转成map的
107      */
108     public static <T> Map<String, T> GsonToMaps(String gsonString) {
109         Map<String, T> map = null;
110         if (gson != null) {
111             map = gson.fromJson(gsonString, new TypeToken<Map<String, T>>() {
112             }.getType());
113         }
114         return map;
115     }
116 
117     /**
118      * map转jsonString,指定了Map类型
119      */
120     public static String MapToJson(Map<String, Object> map) {
121         String str = null;
122         if (gson != null) {
123             str = gson.toJson(map);
124         }
125         return str;
126     }
127 
128 }

 

测试代码:

 1 package json.gson;
 2 
 3 import bean.User;
 4 
 5 public class TestGson {
 6 
 7     private static User user = null;
 8 
 9     static {
10         user = new User("tom", 25, "NO.1 street");
11     }
12 
13     public static void main(String[] args) {
14         String jsonStr = JsonUtil.GsonString(user);
15         System.out.println(jsonStr);
16 
17         String jsonStr2 = "{\"name\":\"tom\",\"age\":25,\"address\":\"NO.1 street\"}";
18         User user2 = JsonUtil.GsonToBean(jsonStr2, User.class);
19         System.out.println(user2);
20     }
21 }

 

运行结果:

{"name":"tom","age":25,"address":"NO.1 street"}
User[name=‘tom‘, age=25, address=‘NO.1 street‘]

 

Java之JSON操作(gson)

标签:blog   void   []   没有   pack   enc   element   div   ddr   

原文地址:https://www.cnblogs.com/gongxr/p/8444183.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!