JSON格式的数据传递是最常用的方法之一,以下列出了常用的几种形态以及与Javabean之间的转换:
1
|
2
3
4
|
String json1="{'name':'zhangsan','age':23,'interests':[{'interest':'篮球','colors':['绿色','黄色']},{'interest':'足球','colors':['红色','蓝色']}]}"; String json2="[{'name':'zhangsan'},{'name':'lisi'},{'name':'王五'}]"; String json3="{'1':{'name':'zhangsan'},'3':{'name':'lisi'},'4':{'name':'wangwu'}}";//map String json4="{'name':'zhangsan','age':23}"; |
首先,此处的转化依赖两个JAR包
1
|
2
3
4
5
6
7
8
9
10
11
12
|
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson --> < dependency > < groupId >com.google.code.gson</ groupId > < artifactId >gson</ artifactId > < version >2.8.1</ version > </ dependency > <!-- https://mvnrepository.com/artifact/org.json/json --> < dependency > < groupId >org.json</ groupId > < artifactId >json</ artifactId > < version >20170516</ version > </ dependency > |
其次,封装的Javabean代码如下
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
import java.util.List; public class UserBean { private String name; private Integer age; private List< InterestBean > interests; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public List< InterestBean > getInterests() { return interests; } public void setInterests(List< InterestBean > interests) { this.interests = interests; } class InterestBean{ private String interest; private List< String > colors; public String getInterest() { return interest; } public void setInterest(String interest) { this.interest = interest; } public List< String > getColors() { return colors; } public void setColors(List< String > colors) { this.colors = colors; } } } |
1、普通的json4格式的JSON解析:
1
|
2
3
4
5
6
7
8
9
10
11
12
|
public void testParseJson(){ JSONObject jsonObj = new JSONObject(json4); String name = jsonObj.getString("name"); int age = jsonObj.getInt("age"); System.out.println(name); System.out.println(age); UserBean user = new UserBean(); user.setAge(age); user.setName(name); } |
2、数组形式的JSON解析以及GSON解析:
1
|
2
3
4
5
6
7
8
9
|
public void testJsonArray(){ JSONArray jsonArray = new JSONArray(json2); for (int i = 0; i < jsonArray.length(); i++) { JSONObject jsonObj = jsonArray.getJSONObject(i); String name = jsonObj.getString("name"); System.out.println(name); } } |
1
|
2
3
4
5
6
7
8
9
10
11
|
/** * 解析json数组 */ public void testParseListJson(){ Gson gson = new Gson(); Type type = new TypeToken< List <UserBean>>(){}.getType(); List< UserBean > users = gson.fromJson(json2, type); for(UserBean user:users){ System.out.println(user.getName()); } } |
3、内嵌JSON形式的JSON与GSON解析:
1
|
2
3
4
5
6
7
8
9
10
11
12
13
14
|
/** * 内嵌JSON解析 */ public void testParseJson1(){ JSONObject rootJson = new JSONObject(json1); JSONArray jsonInterestArray = rootJson.getJSONArray("interests"); for (int i = 0; i < jsonInterestArray.length(); i++) { JSONObject interestJsonObj = jsonInterestArray.getJSONObject(i); String interest = interestJsonObj.getString("interest"); System.out.println(interest); Object obj = interestJsonObj.get("colors"); System.out.println(obj); } } |
1
|
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
/** * 内嵌GSON解析 */ public void testSimpleJson(){ Gson gson = new Gson(); UserBean user = gson.fromJson(json1, UserBean.class); System.out.println(user.getName()); System.out.println(user.getAge()); System.out.println(user.getInterests().size()); List< InterestBean > list = user.getInterests(); for(InterestBean bean:list) { System.out.println(bean.getInterest()); List< String > colors = bean.getColors(); for(String color:colors){ System.out.println(color); } } } |
4、Map形式的JSON的GSON解析:
1
|
2
3
4
5
6
7
8
9
10
11
12
13
14
|
/** * 解析一个map类型的json */ public void testParseMapJson(){ Gson gson = new Gson(); Type type = new TypeToken< Map <String,UserBean>>(){}.getType(); Map< String ,UserBean> map = gson.fromJson(json3, type); Set< String > keys = map.keySet(); for(String key:keys){ UserBean bean = map.get(key); System.out.println(key); System.out.println(bean.getName()); } } |
5、将一个JavaBean对象封装成JSON格式
1
|
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
/** * 将一个JavaBean对象封装成JSON格式 */ public String testJavaBean2Json(){ UserBean userBean = new UserBean(); userBean.setName("zhangsan"); userBean.setAge(33); List< InterestBean > list = new ArrayList< InterestBean >(); InterestBean bean1 = new UserBean().new InterestBean(); bean1.setInterest("篮球1"); InterestBean bean2 = new UserBean().new InterestBean(); bean2.setInterest("篮球2"); list.add(bean1); list.add(bean2); userBean.setInterests(list); //将User Bean转换成Json Gson gson = new Gson(); String jsonStr = gson.toJson(userBean); System.out.println(jsonStr); return jsonStr; } } |
仅供参考,如有雷同,纯属巧合^_^
以上这篇详谈JSON与Javabean转换的几种形式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:http://www.cnblogs.com/lq147760524/archive/2017/08/22/7413835.html