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>
其次,封装的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 }
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 }
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数组 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解析 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转换成Json 17 Gson gson = new Gson(); 18 String jsonStr = gson.toJson(userBean); 19 System.out.println(jsonStr); 20 return jsonStr; 21 } 22 23 }
仅供参考,如有雷同,纯属巧合^_^
以上是关于JSON与Javabean转换的几种形式的主要内容,如果未能解决你的问题,请参考以下文章