JSON与Javabean转换的几种形式

来源:互联网 发布:网路优化 编辑:程序博客网 时间:2024/05/29 14:44

 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     <!-- (官网:www.fhadmin.org) 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>
复制代码

其次,封装的Javabean代码如下(官网:www.fhadmin.org)

复制代码
 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 }
复制代码

1、普通的json4格式的JSON解析(官网:www.fhadmin.org):

复制代码
 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     }
复制代码

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     }
复制代码
复制代码
 1     /** 2      * 解析json数组(官网:www.fhadmin.org) 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     }
复制代码

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     }
复制代码
复制代码
 1 /** 2      * 内嵌GSON解析(官网:www.fhadmin.org) 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     }
复制代码

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     }
复制代码

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转换成Json17         Gson gson = new Gson();18         String jsonStr = gson.toJson(userBean);19         System.out.println(jsonStr);20         return jsonStr;21     }22 23 }
复制代码

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