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
还没有评论,来说两句吧...