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