您的位置:首页 > 编程语言 > Java开发

通过json-lib实现Java对象和json字符串的相互转换

2017-10-13 21:17 836 查看
通过json-lib实现Java对象和json字符串的相互转换 

下面的案例使用单元测试(junit)方式进行了测试,所以在测试中需要配置junit环境,本人使用的eclipse开发工具,eclipse自带junit测试环境但需要配置,其它的开发工具则需要导入junit测试包。

注:junit测试时测试的方法名必须以test开始,并且在方法上面必须加 @Test

需要导入的json-lib包:



4000
示例代码如下:

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字符串转换为映射集合对象

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: