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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值