使用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']