JSON与Javabean转换的几种形式

Posted 月魄

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSON与Javabean转换的几种形式相关的知识,希望对你有一定的参考价值。

    JSON格式的数据传递是最常用的方法之一,以下列出了常用的几种形态以及与Javabean之间的转换:

  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     <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
 2     <dependency>
 3         <groupId>com.google.code.gson</groupId>
 4         <artifactId>gson</artifactId>
 5         <version>2.8.1</version>
 6     </dependency>
 7     <!-- https://mvnrepository.com/artifact/org.json/json -->
 8     <dependency>
 9         <groupId>org.json</groupId>
10         <artifactId>json</artifactId>
11         <version>20170516</version>
12     </dependency>
View Code

其次,封装的Javabean代码如下

技术分享
 1 import java.util.List;
 2 
 3 public class UserBean {
 4 
 5     private String name;
 6     
 7     private Integer age;
 8     
 9     private List<InterestBean> interests;
10 
11     public String getName() {
12         return name;
13     }
14 
15     public void setName(String name) {
16         this.name = name;
17     }
18 
19     public Integer getAge() {
20         return age;
21     }
22 
23     public void setAge(Integer age) {
24         this.age = age;
25     }
26     
27     
28     
29     
30     public List<InterestBean> getInterests() {
31         return interests;
32     }
33 
34     public void setInterests(List<InterestBean> interests) {
35         this.interests = interests;
36     }
37 
38 
39 
40 
41      class InterestBean{
42         private String interest;
43         
44         private List<String> colors;
45 
46         public String getInterest() {
47             return interest;
48         }
49 
50         public void setInterest(String interest) {
51             this.interest = interest;
52         }
53 
54         public List<String> getColors() {
55             return colors;
56         }
57 
58         public void setColors(List<String> colors) {
59             this.colors = colors;
60         }
61         
62         
63     }
64     
65 }
View Code

1、普通的json4格式的JSON解析:

技术分享
 1 public void testParseJson(){
 2         
 3         JSONObject jsonObj = new JSONObject(json4);
 4         String name = jsonObj.getString("name");
 5         int age = jsonObj.getInt("age");
 6         System.out.println(name);
 7         System.out.println(age);
 8         UserBean user = new UserBean();
 9         user.setAge(age);
10         user.setName(name);
11         
12     }
View Code

2、数组形式的JSON解析以及GSON解析:

技术分享
1 public void testJsonArray(){
2         JSONArray jsonArray = new JSONArray(json2);
3         for (int i = 0; i < jsonArray.length(); i++) {
4             JSONObject jsonObj = jsonArray.getJSONObject(i);
5             String name = jsonObj.getString("name");
6             System.out.println(name);
7 
8         }
9     }
View Code
技术分享
 1     /**
 2      * 解析json数组
 3      */
 4     public void testParseListJson(){
 5         Gson gson = new Gson();
 6         Type type = new TypeToken<List<UserBean>>(){}.getType();
 7         List<UserBean> users = gson.fromJson(json2, type);
 8         for(UserBean user:users){
 9             System.out.println(user.getName());
10         }
11     }
View Code

3、内嵌JSON形式的JSON与GSON解析:

技术分享
 1 /**
 2      * 内嵌JSON解析
 3      */
 4     public void testParseJson1(){
 5         JSONObject rootJson = new JSONObject(json1);
 6         JSONArray jsonInterestArray = rootJson.getJSONArray("interests");
 7         for (int i = 0; i < jsonInterestArray.length(); i++) {
 8             JSONObject interestJsonObj = jsonInterestArray.getJSONObject(i);
 9             String interest = interestJsonObj.getString("interest");
10             System.out.println(interest);
11             Object obj = interestJsonObj.get("colors");
12             System.out.println(obj);
13         }
14     }
View Code
技术分享
 1 /**
 2      * 内嵌GSON解析
 3      */
 4     public void testSimpleJson(){
 5         Gson gson = new Gson();
 6         UserBean user = gson.fromJson(json1, UserBean.class);
 7         System.out.println(user.getName());
 8         System.out.println(user.getAge());
 9         System.out.println(user.getInterests().size());
10         List<InterestBean> list = user.getInterests();
11         for(InterestBean bean:list) {
12             System.out.println(bean.getInterest());
13             List<String> colors = bean.getColors();
14             for(String color:colors){
15                 System.out.println(color);
16             }
17         }
18     }
View Code

4、Map形式的JSON的GSON解析:

技术分享
 1     /**
 2      * 解析一个map类型的json
 3      */
 4     public void testParseMapJson(){
 5         Gson gson = new Gson();
 6         Type type = new TypeToken<Map<String,UserBean>>(){}.getType();
 7         Map<String,UserBean> map = gson.fromJson(json3, type);
 8         Set<String> keys = map.keySet();
 9         for(String key:keys){
10             UserBean bean = map.get(key);
11             System.out.println(key);
12             System.out.println(bean.getName());
13         }
14     }
View Code

5、将一个JavaBean对象封装成JSON格式

技术分享
 1     /**
 2      * 将一个JavaBean对象封装成JSON格式
 3      */
 4     public String testJavaBean2Json(){
 5         UserBean userBean = new UserBean();
 6         userBean.setName("zhangsan");
 7         userBean.setAge(33);
 8         List<InterestBean> list = new ArrayList<InterestBean>();
 9         InterestBean bean1 = new UserBean().new InterestBean();
10         bean1.setInterest("篮球1");
11         InterestBean bean2 = new UserBean().new InterestBean();
12         bean2.setInterest("篮球2");
13         list.add(bean1);
14         list.add(bean2);
15         userBean.setInterests(list);
16         //将User Bean转换成Json
17         Gson gson = new Gson();
18         String jsonStr = gson.toJson(userBean);
19         System.out.println(jsonStr);
20         return jsonStr;
21     }
22 
23 }
View Code

仅供参考,如有雷同,纯属巧合^_^




以上是关于JSON与Javabean转换的几种形式的主要内容,如果未能解决你的问题,请参考以下文章

前台 JSON对象转换成字符串 相互转换 的几种方式

js中 json对象与json字符串相互转换的几种方式

Json字符串与Object对象相互转换的几种方式

Json字符串与Object对象相互转换的几种方式

Json字符串与Object对象相互转换的几种方式

C# 对象与JSON字符串互相转换的几种方式