通过json-lib实现Java对象和json字符串的相互转换
通过json-lib实现Java对象和json字符串的相互转换
下面的案例使用单元测试(junit)方式进行了测试,所以在测试中需要配置junit环境,本人使用的eclipse开发工具,eclipse自带junit测试环境但需要配置,其它的开发工具则需要导入junit测试包。
注:junit测试时测试的方法名必须以test开始,并且在方法上面必须加 @Test
需要导入的json-lib包:
示例代码如下:
package cn.sz.hcq.test;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.junit.Test;
import cn.sz.hcq.pojo.User;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class JsonlibTest {
/**
* 将Java对象转换为json字符串
*/
@Test
public void testToString() {
User u = new User();
u.setUid(1);
u.setUname("张三");
// 创建json对象实现了转换
JSONObject js = JSONObject.fromObject(u);
System.out.println(js);
}
/**
* 将json字符串转换为java对象
*/
@Test
public void testToObject() {
String str = "{\"uid\":1,\"uname\":\"张三\"}";
// 将str字符串转化为JSONObject类型
JSONObject js = JSONObject.fromObject(str);
// 将json字符串转化为对象
User user = (User) JSONObject.toBean(js, User.class);
System.out.println(user.toString());
}
/**
* 将list集合转换为json字符串
*/
@Test
public void testListToString() {
User u1 = new User();
u1.setUid(1);
u1.setUname("张三");
User u2 = new User();
u2.setUid(2);
u2.setUname("李四");
List<User> list = new ArrayList<>();
list.add(u1);
list.add(u2);
// 将list 集合转换为json
JSONArray js = JSONArray.fromObject(list);
System.out.println(js);
}
/**
* 将json字符串转换为list集合
*
*/
@Test
public void TestStringToList() {
String str = "[{\"uid\":1,\"uname\":\"张三\"},{\"uid\":2,\"uname\":\"李四\"}]";
JSONArray js = JSONArray.fromObject(str);
// List<User> users = (List<User>) JSONArray.toCollection(js,
// User.class);
User[] users = (User[]) JSONArray.toArray(js);
for (User u : users) {
System.out.println(u.toString());
}
}
/**
* 将映射集合(Map)转换为json字符串
*/
@Test
public void testMapToString() {
User u1 = new User();
u1.setUid(1);
u1.setUname("张三");
User u2 = new User();
u2.setUid(2);
u2.setUname("李四");
Map<String, User> map = new HashMap<>();
map.put("user1", u1);
map.put("user2", u2);
// JSONArray和JSONObject的区别是JSONArray转换的字符串用[]包起来
JSONArray js = JSONArray.fromObject(map);
System.out.println("JSONArray: " + js);
JSONObject jso = JSONObject.fromObject(map);
System.out.println("JSONObject: " + jso);
}
/**
* 将json字符串转换为映射集合对象
*/
@Test
public void testStringMap() {
String str = "{\"user1\":{\"uid\":1,\"uname\":\"张三\"},\"user2\":{\"uid\":2,\"uname\":\"李四\"}}";
Map<String, User> map = new HashMap<>();
JSONObject js = JSONObject.fromObject(str);
Set<String> keys = js.keySet();
for (String key : keys) {
Object obj = js.get(key);
User user = (User) JSONObject.toBean(JSONObject.fromObject(obj), User.class);
map.put(key, user);
}
// 方便观察我们查看第一个集合的信息
User u = map.get("user1");
System.out.println(u.toString());
}
}
测试结果如下:
将Java对象转换为json字符串
将json字符串转换为java对象
将list集合转换为json字符串
将json字符串转换为list集合
将映射集合(Map)转换为json字符串
将json字符串转换为映射集合对象
还没有评论,来说两句吧...