Java中对象的list与JSON格式字符串的互相转换

</pre>在项目开发中遇到一个问题就是:如何将Java中的对象集合list转为JSON字符串,再将得到的JSON字符串还原为list集合,前者可以使用Jackson,在处理JSON数据的工具包中Jackson在性能和效率方面都很不错,但是想把JSON字符串转为list的对象集合就没有那么简单,可以综合利用json包来进行。<p></p><p><span style="font-size:18px; color:#ff0000">实体类:</span></p><p></p><pre name="code" class="java">public class User {
	private String name;
	private String password;
	private String address;
	private int age;
}

测试数据的list集合:

User user,user2,user3;
user = new User();
		user.setName("tyyf");
		user.setAddress("湖北汽车工业学院");
		user.setPassword("123456");
		user.setAge(12);
		
		user2 = new User();
		user2.setName("xyz");
		user2.setAddress("湖北汽车工业学院");
		user2.setPassword("123456");
		user2.setAge(12);
		
		user3 = new User();
		user3.setName("addf");
		user3.setAddress("湖北汽车工业学院");
		user3.setPassword("123456");
		user3.setAge(12);
List<User> users = new ArrayList<>();
		users.add(user);
		users.add(user2);
		users.add(user3);



将list集合转为json字符串:

ObjectMapper objectMapper = new ObjectMapper();//在Jackson包中
ByteArrayOutputStream out = new ByteArrayOutputStream();//字节输出流,用于存放输出到json字符串
try {
		objectMapper.writeValue(out, users);//将List<User>转为json
		System.out.println("list转为JSON格式:");
		System.out.println(out.toString());
		JSONArray jsonArray = new JSONArray(out.toString());//利用转换的json
		//字符串新建一个json数组。JSONArray存在于json包中。
		JSONObject jsonObject;
		User jsonToUser;
		for (int i = 0; i < jsonArray.length(); i++) {//迭代循环即可取出原对象
			jsonObject = jsonArray.getJSONObject(i);
			jsonToUser = objectMapper.readValue(jsonObject.toString()
					, User.class);
			System.out.println("从JSON转为对象:"+i+jsonToUser.toString());
		}
	} catch (IOException e) {
		e.printStackTrace();
	} catch (JSONException e) {
		e.printStackTrace();
	}

注:此方法对于数据成员是另一个类对象时,也起作用,使用方法相同。如:

public class Account {

	private float money;
	private User user;
	private String id;
	}


需要json包的联系QQ:1459435164


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值