JSON(jsonlib)与java对象的相互转换

在上篇文章中,我有提到过这个JSON技术,目前大多接口也已经开始使用JSON进行传输数据。

接下来那就简单介绍一下

概念:JSON(JavaScript Object Notation)是一种轻量级的数据交互格式。它基于标准的Javascript的一个子集,是一个JS对象或数组结构的字符串

语法格式:例:对象{“username”:"admin", "password":"123"},数组[{“username”:"admin", "password":"123"}, {“username”:"tom", "password":"123"}]。简单来说:

数据在键值对中,数据由逗号分隔,花括号保存对象,方括号保存数组

数据类型:JSON有三种数据类型。1.单个数据(number, String,boolean,null)四种数据类型,2.数组,3.对象

 

JSON工具有很多,GSON,fastJson,JSONLIB等,那么接下来就用JSONLIB进行操作(前提是先要下载JSONLIB的jar包,并且导入到工程中)

JSONLIB中的API:

JSONObject:主要用于将对象和MAP集合转成JSON

JSONArray:主要用于将数组和List集合转成JSON

 

一:将java对象转为JSON字符串

演示过程中:1.使用用户类作为POJO 2.使用c3p0数据库连接池从数据库中查询结果,3使用JUnit4进行测试

用户类:

 

  1. package com.wanghang.domain;  
  2.   
  3. /** 
  4.  * 用户实体类 
  5.  *  
  6.  * @author Hang.W 
  7.  * @version 1.0,2016-12-15 00:10:34 
  8.  */  
  9. public class User {  
  10.       
  11.     /** 用户id */  
  12.     private String id;  
  13.   
  14.     /** 用户名 */  
  15.     private String username;  
  16.   
  17.     /** 用户密码 */  
  18.     private String password;  
  19.   
  20.     public User() {  
  21.         super();  
  22.     }  
  23.   
  24.     public User(String id, String username, String password) {  
  25.         super();  
  26.         this.id = id;  
  27.         this.username = username;  
  28.         this.password = password;  
  29.     }  
  30.   
  31.     public String getId() {  
  32.         return id;  
  33.     }  
  34.   
  35.     public void setId(String id) {  
  36.         this.id = id;  
  37.     }  
  38.   
  39.     public String getUsername() {  
  40.         return username;  
  41.     }  
  42.   
  43.     public void setUsername(String username) {  
  44.         this.username = username;  
  45.     }  
  46.   
  47.     public String getPassword() {  
  48.         return password;  
  49.     }  
  50.   
  51.     public void setPassword(String password) {  
  52.         this.password = password;  
  53.     }  
  54.   
  55.     @Override  
  56.     public String toString() {  
  57.         return "User [id=" + id + ", username=" + username + ", password="  
  58.                 + password + "]";  
  59.     }  
  60.   
  61. }  

 

 

 

使用JSONLib工具进行操作:

 

  1. package com.wanghang.test;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.HashMap;  
  5. import net.sf.json.JSONArray;  
  6. import net.sf.json.JSONObject;  
  7. import net.sf.json.JsonConfig;  
  8. import org.junit.Test;  
  9. import com.wanghang.domain.User;  
  10.   
  11. /** 
  12.  * Json_lib开发包 
  13.  * * JSONLIB:主要用于将对象和MAP集合转换成JSON 
  14.  * * JSONARRAY:主要用于将数组和List集合转成JSON 
  15.  *  
  16.  * @author Hang.W 
  17.  * @version 1.0, 2016-12-15 00:15:07 
  18.  */  
  19. public class Json_libTest {  
  20.   
  21.     @Test  
  22.     /** 
  23.      * 将对象转成 Json 
  24.      * {"id":"1","password":"123","username":"张三"} 
  25.      */  
  26.     public void test() {  
  27.         User user = new User("1""张三""123");  
  28.         // 将对象和Map集合转换成JSon使用JSONObject  
  29.         JSONObject jsonObject = JSONObject.fromObject(user);  
  30.         System.out.println(jsonObject);  
  31.     }  
  32.       
  33.     @Test  
  34.     /** 
  35.      * 将List集合转换成Json 
  36.      */  
  37.     public void test2() {  
  38.         ArrayList<User> list = new ArrayList<User>();  
  39.         list.add(new User("1""张三""123"));  
  40.         list.add(new User("2""李四""124"));  
  41.         // 将数组和List集合转换成Json使用JSONArray对象  
  42.         JSONArray jsonArray = JSONArray.fromObject(list);  
  43.         System.out.println(jsonArray);  
  44.     }  
  45.       
  46.     @Test  
  47.     /** 
  48.      * 将数组转换成Json 
  49.      */  
  50.     public void test3() {  
  51.         User[] arr = new User[2];  
  52.         arr[0] = new User("1""张三""123");  
  53.         arr[1] = new User("2""李四""124");  
  54.         // 将数组转换成Json使用JSONArray对象  
  55.         JSONArray jsonArray = JSONArray.fromObject(arr);  
  56.         System.out.println(jsonArray);  
  57.     }  
  58.       
  59.     @Test  
  60.     /** 
  61.      * 将map集合转换成Json 
  62.      */  
  63.     public void test4() {  
  64.         HashMap<String, User> map = new HashMap<String, User>();  
  65.         map.put("001"new User("1""张三""123"));  
  66.         map.put("002"new User("2""李四""124"));  
  67.         // 将map集合转换为Json用JSONObject对象  
  68.         JSONObject jsonObject = JSONObject.fromObject(map);  
  69.         System.out.println(jsonObject);  
  70.     }  
  71.       
  72.     @Test  
  73.     /** 
  74.      * 将list集合转换成Json,并且去除多余的id属性 
  75.      */  
  76.     public void test5() {  
  77.         ArrayList<User> list = new ArrayList<User>();  
  78.         list.add(new User("1""张三""123"));  
  79.         list.add(new User("2""李四""124"));  
  80.         // 去除id属性  
  81.         JsonConfig jsonConfig = new JsonConfig();  
  82.         // 创建jsonConfig去除id多余属性  
  83.         jsonConfig.setExcludes(new String[]{"id"});  
  84.         JSONArray jsonArray = JSONArray.fromObject(list, jsonConfig);  
  85.         System.out.println(jsonArray);  
  86.     }  
  87. }  

演示结果:

 

可以看出来都是JSON格式的字符串,那么上述就是将java对象转换为JSON格式的字符串,

当我们与页面进行数据交互时,我们要将这些转换后的JSON字符串传到页面中,然后用var data = eval("("+JSON字符串+")");用eval函数进行解析成js对象或数组

 

二:进行JSON字符串转换为Java对象的操作

 

  1. package com.wanghang.test;  
  2.   
  3. import java.util.HashMap;  
  4. import java.util.List;  
  5. import net.sf.json.JSONArray;  
  6. import net.sf.json.JSONObject;  
  7. import org.junit.Test;  
  8. import com.wanghang.domain.User;  
  9.   
  10. /** 
  11.  * Json_lib开发包 
  12.  * * JSONLIB:主要用于将对象和MAP集合转换成JSON 
  13.  * * JSONARRAY:主要用于将数组和List集合转成JSON 
  14.  *  
  15.  * @author Hang.W 
  16.  * @version 1.0, 2016-12-17 00:25:43 
  17.  */  
  18. public class Json_libTest2 {  
  19.   
  20.     @Test  
  21.     /** 
  22.      * 将JSON字符串转为java对象(user)  
  23.      */  
  24.     public void test() {  
  25.         // 参数{"id":"1","password":"123","username":"张三"}是由上边java对象转为JSON字符串生成的,但是需要转义  
  26.         String string = "{\"id\": \"1\", \"password\": \"123\", \"username\": \"张三\"}";  
  27.           
  28.         // 将普通字符串类型转为JSON字符串类型  
  29.         JSONObject jsonObject = JSONObject.fromObject(string);  
  30.           
  31.         // 将JSON字符串进行转换User对象操作  
  32.         User user = (User) JSONObject.toBean(jsonObject, User.class);  
  33.         System.out.println("test():" + user);  
  34.     }  
  35.       
  36.     @Test  
  37.     /** 
  38.      * 将JSON字符串数组转换为java对象(user)数组 
  39.      */  
  40.     public void test2() {  
  41.         // 参数[{"id":"1","password":"123","username":"张三"},{"id":"2","password":"124","username":"李四"}]是由上边java对象转为JSON字符串生成的,完全原创  
  42.         String string = "[{\"id\": \"1\", \"password\": \"123\", \"username\": \"张三\"}, {\"id\": \"2\", \"password\": \"124\", \"username\": \"李四\"}]";  
  43.           
  44.         // 使用JSONArray将普通字符串数组类型转为JSONArray字符串数组类型  
  45.         JSONArray jsonArray = JSONArray.fromObject(string);  
  46.           
  47.         //   
  48.         for (Object object : jsonArray) {  
  49.             // 将JSON数组中的每一个JSON字符串转为JSON字符串对象  
  50.             JSONObject jsonObject = JSONObject.fromObject(object);  
  51.               
  52.             // 再将JSON字符串对象进行转换User对象操作  
  53.             User user = (User) JSONObject.toBean(jsonObject, User.class);  
  54.             System.out.println("test2():" + user);  
  55.         }  
  56.     }  
  57.       
  58.     @Test  
  59.     /** 
  60.      * 将JSON字符串数组转换为java对象(user)List集合 
  61.      */  
  62.     public void test3() {  
  63.         // 参数[{"id":"1","password":"123","username":"张三"},{"id":"2","password":"124","username":"李四"}]是由上边java对象转为JSON字符串生成的
  64.         String string = "[{\"id\": \"1\", \"password\": \"123\", \"username\": \"张三\"}, {\"id\": \"2\", \"password\": \"124\", \"username\": \"李四\"}]";  
  65.           
  66.         // 将字符串数组转换为JSONList格式  
  67.         JSONArray jsonArray = JSONArray.fromObject(string);  
  68.           
  69.         // 直接将JSONArray(JSONList)转换为List集合  
  70.         List<User> list = (List<User>) JSONArray.toList(jsonArray, User.class);  
  71.           
  72.         for (User user : list) {  
  73.             System.out.println("test3():" + user);  
  74.         }  
  75.     }  
  76.       
  77. }  

那么运行结果:

 

如图可视:上述是将JSON字符串转为JSON对象/数组/集合的过程,主要还是用到JSONObect和JSONArray两个对象的方法

当然使用JSONlib解析这些数据还是比较麻烦的,光jar包就要6个,下次有时间再写一些简单的工具类,这样便于开发。

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值