JSON(jsonlib)与java对象的相互转换
2016-12-16 00:54
288 查看
在上篇文章中,我有提到过这个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进行测试
用户类:
package com.wanghang.domain;
/**
* 用户实体类
*
* @author Hang.W
* @version 1.0,2016-12-15 00:10:34
*/
public class User {
/** 用户id */
private String id;
/** 用户名 */
private String username;
/** 用户密码 */
private String password;
public User() {
super();
}
public User(String id, String username, String password) {
super();
this.id = id;
this.username = username;
this.password = password;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User [id=" + id + ", username=" + username + ", password="
+ password + "]";
}
}
使用JSONLib工具进行操作:
package com.wanghang.test;
import java.util.ArrayList;
import java.util.HashMap;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
import org.junit.Test;
import com.wanghang.domain.User;
/**
* Json_lib开发包
* * JSONLIB:主要用于将对象和MAP集合转换成JSON
* * JSONARRAY:主要用于将数组和List集合转成JSON
*
* @author Hang.W
* @version 1.0, 2016-12-15 00:15:07
*/
public class Json_libTest {
@Test
/**
* 将对象转成 Json
* {"id":"1","password":"123","username":"张三"}
*/
public void test() {
User user = new User("1", "张三", "123");
// 将对象和Map集合转换成JSon使用JSONObject
JSONObject jsonObject = JSONObject.fromObject(user);
System.out.println(jsonObject);
}
@Test
/**
* 将List集合转换成Json
*/
public void test2() {
ArrayList<User> list = new ArrayList<User>();
list.add(new User("1", "张三", "123"));
list.add(new User("2", "李四", "124"));
// 将数组和List集合转换成Json使用JSONArray对象
JSONArray jsonArray = JSONArray.fromObject(list);
System.out.println(jsonArray);
}
@Test
/**
* 将数组转换成Json
*/
public void test3() {
User[] arr = new User[2];
arr[0] = new User("1", "张三", "123");
arr[1] = new User("2", "李四", "124");
// 将数组转换成Json使用JSONArray对象
JSONArray jsonArray = JSONArray.fromObject(arr);
System.out.println(jsonArray);
}
@Test
/**
* 将map集合转换成Json
*/
public void test4() {
HashMap<String, User> map = new HashMap<String, User>();
map.put("001", new User("1", "张三", "123"));
map.put("002", new User("2", "李四", "124"));
// 将map集合转换为Json用JSONObject对象
JSONObject jsonObject = JSONObject.fromObject(map);
System.out.println(jsonObject);
}
@Test
/**
* 将list集合转换成Json,并且去除多余的id属性
*/
public void test5() {
ArrayList<User> list = new ArrayList<User>();
list.add(new User("1", "张三", "123"));
list.add(new User("2", "李四", "124"));
// 去除id属性
JsonConfig jsonConfig = new JsonConfig();
// 创建jsonConfig去除id多余属性
jsonConfig.setExcludes(new String[]{"id"});
JSONArray jsonArray = JSONArray.fromObject(list, jsonConfig);
System.out.println(jsonArray);
}
}
演示结果:
可以看出来都是JSON格式的字符串,那么上述就是将java对象转换为JSON格式的字符串,
当我们与页面进行数据交互时,我们要将这些转换后的JSON字符串传到页面中,然后用var data = eval("("+JSON字符串+")");用eval函数进行解析成js对象或数组
二:进行JSON字符串转换为Java对象的操作
package com.wanghang.test;
import java.util.HashMap;
import java.util.List;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.junit.Test;
import com.wanghang.domain.User;
/**
* Json_lib开发包
* * JSONLIB:主要用于将对象和MAP集合转换成JSON
* * JSONARRAY:主要用于将数组和List集合转成JSON
*
* @author Hang.W
* @version 1.0, 2016-12-17 00:25:43
*/
public class Json_libTest2 {
@Test
/**
* 将JSON字符串转为java对象(user)
*/
public void test() {
// 参数{"id":"1","password":"123","username":"张三"}是由上边java对象转为JSON字符串生成的,但是需要转义
String string = "{\"id\": \"1\", \"password\": \"123\", \"username\": \"张三\"}";
// 将普通字符串类型转为JSON字符串类型
JSONObject jsonObject = JSONObject.fromObject(string);
// 将JSON字符串进行转换User对象操作
User user = (User) JSONObject.toBean(jsonObject, User.class);
System.out.println("test():" + user);
}
@Test
/**
* 将JSON字符串数组转换为java对象(user)数组
*/
public void test2() {
// 参数[{"id":"1","password":"123","username":"张三"},{"id":"2","password":"124","username":"李四"}]是由上边java对象转为JSON字符串生成的,完全原创
String string = "[{\"id\": \"1\", \"password\": \"123\", \"username\": \"张三\"}, {\"id\": \"2\", \"password\": \"124\", \"username\": \"李四\"}]";
// 使用JSONArray将普通字符串数组类型转为JSONArray字符串数组类型
JSONArray jsonArray = JSONArray.fromObject(string);
//
for (Object object : jsonArray) {
// 将JSON数组中的每一个JSON字符串转为JSON字符串对象
JSONObject jsonObject = JSONObject.fromObject(object);
// 再将JSON字符串对象进行转换User对象操作
User user = (User) JSONObject.toBean(jsonObject, User.class);
System.out.println("test2():" + user);
}
}
@Test
/**
* 将JSON字符串数组转换为java对象(user)List集合
*/
public void test3() {
// 参数[{"id":"1","password":"123","username":"张三"},{"id":"2","password":"124","username":"李四"}]是由上边java对象转为JSON字符串生成的
String string = "[{\"id\": \"1\", \"password\": \"123\", \"username\": \"张三\"}, {\"id\": \"2\", \"password\": \"124\", \"username\": \"李四\"}]";
// 将字符串数组转换为JSONList格式
JSONArray jsonArray = JSONArray.fromObject(string);
// 直接将JSONArray(JSONList)转换为List集合
List<User> list = (List<User>) JSONArray.toList(jsonArray, Use
ac9f
r.class);
for (User user : list) {
System.out.println("test3():" + user);
}
}
}
那么运行结果:
如图可视:上述是将JSON字符串转为JSON对象/数组/集合的过程,主要还是用到JSONObect和JSONArray两个对象的方法
当然使用JSONlib解析这些数据还是比较麻烦的,光jar包就要6个,下次有时间再写一些简单的工具类,这样便于开发。
接下来那就简单介绍一下
概念: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进行测试
用户类:
package com.wanghang.domain;
/**
* 用户实体类
*
* @author Hang.W
* @version 1.0,2016-12-15 00:10:34
*/
public class User {
/** 用户id */
private String id;
/** 用户名 */
private String username;
/** 用户密码 */
private String password;
public User() {
super();
}
public User(String id, String username, String password) {
super();
this.id = id;
this.username = username;
this.password = password;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User [id=" + id + ", username=" + username + ", password="
+ password + "]";
}
}
使用JSONLib工具进行操作:
package com.wanghang.test;
import java.util.ArrayList;
import java.util.HashMap;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
import org.junit.Test;
import com.wanghang.domain.User;
/**
* Json_lib开发包
* * JSONLIB:主要用于将对象和MAP集合转换成JSON
* * JSONARRAY:主要用于将数组和List集合转成JSON
*
* @author Hang.W
* @version 1.0, 2016-12-15 00:15:07
*/
public class Json_libTest {
@Test
/**
* 将对象转成 Json
* {"id":"1","password":"123","username":"张三"}
*/
public void test() {
User user = new User("1", "张三", "123");
// 将对象和Map集合转换成JSon使用JSONObject
JSONObject jsonObject = JSONObject.fromObject(user);
System.out.println(jsonObject);
}
@Test
/**
* 将List集合转换成Json
*/
public void test2() {
ArrayList<User> list = new ArrayList<User>();
list.add(new User("1", "张三", "123"));
list.add(new User("2", "李四", "124"));
// 将数组和List集合转换成Json使用JSONArray对象
JSONArray jsonArray = JSONArray.fromObject(list);
System.out.println(jsonArray);
}
@Test
/**
* 将数组转换成Json
*/
public void test3() {
User[] arr = new User[2];
arr[0] = new User("1", "张三", "123");
arr[1] = new User("2", "李四", "124");
// 将数组转换成Json使用JSONArray对象
JSONArray jsonArray = JSONArray.fromObject(arr);
System.out.println(jsonArray);
}
@Test
/**
* 将map集合转换成Json
*/
public void test4() {
HashMap<String, User> map = new HashMap<String, User>();
map.put("001", new User("1", "张三", "123"));
map.put("002", new User("2", "李四", "124"));
// 将map集合转换为Json用JSONObject对象
JSONObject jsonObject = JSONObject.fromObject(map);
System.out.println(jsonObject);
}
@Test
/**
* 将list集合转换成Json,并且去除多余的id属性
*/
public void test5() {
ArrayList<User> list = new ArrayList<User>();
list.add(new User("1", "张三", "123"));
list.add(new User("2", "李四", "124"));
// 去除id属性
JsonConfig jsonConfig = new JsonConfig();
// 创建jsonConfig去除id多余属性
jsonConfig.setExcludes(new String[]{"id"});
JSONArray jsonArray = JSONArray.fromObject(list, jsonConfig);
System.out.println(jsonArray);
}
}
演示结果:
可以看出来都是JSON格式的字符串,那么上述就是将java对象转换为JSON格式的字符串,
当我们与页面进行数据交互时,我们要将这些转换后的JSON字符串传到页面中,然后用var data = eval("("+JSON字符串+")");用eval函数进行解析成js对象或数组
二:进行JSON字符串转换为Java对象的操作
package com.wanghang.test;
import java.util.HashMap;
import java.util.List;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.junit.Test;
import com.wanghang.domain.User;
/**
* Json_lib开发包
* * JSONLIB:主要用于将对象和MAP集合转换成JSON
* * JSONARRAY:主要用于将数组和List集合转成JSON
*
* @author Hang.W
* @version 1.0, 2016-12-17 00:25:43
*/
public class Json_libTest2 {
@Test
/**
* 将JSON字符串转为java对象(user)
*/
public void test() {
// 参数{"id":"1","password":"123","username":"张三"}是由上边java对象转为JSON字符串生成的,但是需要转义
String string = "{\"id\": \"1\", \"password\": \"123\", \"username\": \"张三\"}";
// 将普通字符串类型转为JSON字符串类型
JSONObject jsonObject = JSONObject.fromObject(string);
// 将JSON字符串进行转换User对象操作
User user = (User) JSONObject.toBean(jsonObject, User.class);
System.out.println("test():" + user);
}
@Test
/**
* 将JSON字符串数组转换为java对象(user)数组
*/
public void test2() {
// 参数[{"id":"1","password":"123","username":"张三"},{"id":"2","password":"124","username":"李四"}]是由上边java对象转为JSON字符串生成的,完全原创
String string = "[{\"id\": \"1\", \"password\": \"123\", \"username\": \"张三\"}, {\"id\": \"2\", \"password\": \"124\", \"username\": \"李四\"}]";
// 使用JSONArray将普通字符串数组类型转为JSONArray字符串数组类型
JSONArray jsonArray = JSONArray.fromObject(string);
//
for (Object object : jsonArray) {
// 将JSON数组中的每一个JSON字符串转为JSON字符串对象
JSONObject jsonObject = JSONObject.fromObject(object);
// 再将JSON字符串对象进行转换User对象操作
User user = (User) JSONObject.toBean(jsonObject, User.class);
System.out.println("test2():" + user);
}
}
@Test
/**
* 将JSON字符串数组转换为java对象(user)List集合
*/
public void test3() {
// 参数[{"id":"1","password":"123","username":"张三"},{"id":"2","password":"124","username":"李四"}]是由上边java对象转为JSON字符串生成的
String string = "[{\"id\": \"1\", \"password\": \"123\", \"username\": \"张三\"}, {\"id\": \"2\", \"password\": \"124\", \"username\": \"李四\"}]";
// 将字符串数组转换为JSONList格式
JSONArray jsonArray = JSONArray.fromObject(string);
// 直接将JSONArray(JSONList)转换为List集合
List<User> list = (List<User>) JSONArray.toList(jsonArray, Use
ac9f
r.class);
for (User user : list) {
System.out.println("test3():" + user);
}
}
}
那么运行结果:
如图可视:上述是将JSON字符串转为JSON对象/数组/集合的过程,主要还是用到JSONObect和JSONArray两个对象的方法
当然使用JSONlib解析这些数据还是比较麻烦的,光jar包就要6个,下次有时间再写一些简单的工具类,这样便于开发。
相关文章推荐
- json和java对象的相互转换
- java对象与json对象间的相互转换
- 使用jackson对Java对象与JSON字符串相互转换的一些总结
- Jsonlib实现Json字符串和Java对象的互相转换
- JSON与java对象的相互转换
- JSON数据与Java对象相互转换
- 使用Jackson来实现Java对象与JSON的相互转换的教程
- JSON的String字符串与Java的List列表对象的相互转换
- java对象与json对象间的相互转换
- 使用jackson对Java对象与JSON字符串相互转换
- Json-lib 实现 json,java 对象,xml 之间相互转换
- Gson详解:Java对象与JSON相互转换的利器
- java对象与json对象间的相互转换
- 使用jackson对Java对象与JSON字符串相互转换的一些总结
- java对象与json串的相互转换 将Bean中的Timestamp转换为json中的日期字符串
- 使用jackson对Java对象与JSON字符串相互转换的一些总结
- java对象与json对象间的相互转换
- java对象与json对象间的相互转换
- java对象与json对象间的相互转换
- 研究一下 项目 webservice xml和java对象的相互自动转换,json和java对象的相互自动转换