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

£神魔★判官ぃ 2022-08-03 05:28 575阅读 0赞
  1. </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 {
  2. private String name;
  3. private String password;
  4. private String address;
  5. private int age;
  6. }

测试数据的list集合:

  1. User user,user2,user3;
  2. user = new User();
  3. user.setName("tyyf");
  4. user.setAddress("湖北汽车工业学院");
  5. user.setPassword("123456");
  6. user.setAge(12);
  7. user2 = new User();
  8. user2.setName("xyz");
  9. user2.setAddress("湖北汽车工业学院");
  10. user2.setPassword("123456");
  11. user2.setAge(12);
  12. user3 = new User();
  13. user3.setName("addf");
  14. user3.setAddress("湖北汽车工业学院");
  15. user3.setPassword("123456");
  16. user3.setAge(12);
  17. List<User> users = new ArrayList<>();
  18. users.add(user);
  19. users.add(user2);
  20. users.add(user3);

将list集合转为json字符串:

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

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

  1. public class Account {
  2. private float money;
  3. private User user;
  4. private String id;
  5. }

需要json包的联系QQ:1459435164

发表评论

表情:
评论列表 (有 0 条评论,575人围观)

还没有评论,来说两句吧...

相关阅读