通过json-lib实现Java对象和json字符串的相互转换

以你之姓@ 2022-06-07 07:09 255阅读 0赞

通过json-lib实现Java对象和json字符串的相互转换

下面的案例使用单元测试(junit)方式进行了测试,所以在测试中需要配置junit环境,本人使用的eclipse开发工具,eclipse自带junit测试环境但需要配置,其它的开发工具则需要导入junit测试包。

注:junit测试时测试的方法名必须以test开始,并且在方法上面必须加 @Test

需要导入的json-lib包:

Center

示例代码如下:

  1. package cn.sz.hcq.test;
  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import java.util.List;
  5. import java.util.Map;
  6. import java.util.Set;
  7. import org.junit.Test;
  8. import cn.sz.hcq.pojo.User;
  9. import net.sf.json.JSONArray;
  10. import net.sf.json.JSONObject;
  11. public class JsonlibTest {
  12. /**
  13. * 将Java对象转换为json字符串
  14. */
  15. @Test
  16. public void testToString() {
  17. User u = new User();
  18. u.setUid(1);
  19. u.setUname("张三");
  20. // 创建json对象实现了转换
  21. JSONObject js = JSONObject.fromObject(u);
  22. System.out.println(js);
  23. }
  24. /**
  25. * 将json字符串转换为java对象
  26. */
  27. @Test
  28. public void testToObject() {
  29. String str = "{\"uid\":1,\"uname\":\"张三\"}";
  30. // 将str字符串转化为JSONObject类型
  31. JSONObject js = JSONObject.fromObject(str);
  32. // 将json字符串转化为对象
  33. User user = (User) JSONObject.toBean(js, User.class);
  34. System.out.println(user.toString());
  35. }
  36. /**
  37. * 将list集合转换为json字符串
  38. */
  39. @Test
  40. public void testListToString() {
  41. User u1 = new User();
  42. u1.setUid(1);
  43. u1.setUname("张三");
  44. User u2 = new User();
  45. u2.setUid(2);
  46. u2.setUname("李四");
  47. List<User> list = new ArrayList<>();
  48. list.add(u1);
  49. list.add(u2);
  50. // 将list 集合转换为json
  51. JSONArray js = JSONArray.fromObject(list);
  52. System.out.println(js);
  53. }
  54. /**
  55. * 将json字符串转换为list集合
  56. *
  57. */
  58. @Test
  59. public void TestStringToList() {
  60. String str = "[{\"uid\":1,\"uname\":\"张三\"},{\"uid\":2,\"uname\":\"李四\"}]";
  61. JSONArray js = JSONArray.fromObject(str);
  62. // List<User> users = (List<User>) JSONArray.toCollection(js,
  63. // User.class);
  64. User[] users = (User[]) JSONArray.toArray(js);
  65. for (User u : users) {
  66. System.out.println(u.toString());
  67. }
  68. }
  69. /**
  70. * 将映射集合(Map)转换为json字符串
  71. */
  72. @Test
  73. public void testMapToString() {
  74. User u1 = new User();
  75. u1.setUid(1);
  76. u1.setUname("张三");
  77. User u2 = new User();
  78. u2.setUid(2);
  79. u2.setUname("李四");
  80. Map<String, User> map = new HashMap<>();
  81. map.put("user1", u1);
  82. map.put("user2", u2);
  83. // JSONArray和JSONObject的区别是JSONArray转换的字符串用[]包起来
  84. JSONArray js = JSONArray.fromObject(map);
  85. System.out.println("JSONArray: " + js);
  86. JSONObject jso = JSONObject.fromObject(map);
  87. System.out.println("JSONObject: " + jso);
  88. }
  89. /**
  90. * 将json字符串转换为映射集合对象
  91. */
  92. @Test
  93. public void testStringMap() {
  94. String str = "{\"user1\":{\"uid\":1,\"uname\":\"张三\"},\"user2\":{\"uid\":2,\"uname\":\"李四\"}}";
  95. Map<String, User> map = new HashMap<>();
  96. JSONObject js = JSONObject.fromObject(str);
  97. Set<String> keys = js.keySet();
  98. for (String key : keys) {
  99. Object obj = js.get(key);
  100. User user = (User) JSONObject.toBean(JSONObject.fromObject(obj), User.class);
  101. map.put(key, user);
  102. }
  103. // 方便观察我们查看第一个集合的信息
  104. User u = map.get("user1");
  105. System.out.println(u.toString());
  106. }
  107. }

测试结果如下:

将Java对象转换为json字符串

Center 1

将json字符串转换为java对象

Center 2

将list集合转换为json字符串

Center 3

将json字符串转换为list集合

Center 4

将映射集合(Map)转换为json字符串

Center 5

将json字符串转换为映射集合对象

Center 6

发表评论

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

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

相关阅读