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

在项目开发中遇到一个问题就是:如何将Java中的对象集合list转为JSON字符串,再将得到的JSON字符串还原为list集合,前者可以使用Jackson,在处理JSON数据的工具包中Jackson在性能和效率方面都很不错,但是想把JSON字符串转为list的对象集合就没有那么简单,可以综合利用json包来进行。

实体类:

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 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转为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


你可能感兴趣的:(Java,json,对象)