【Java alibaba&hutool】JSON、Map、实体对象间的相互转换
首先要知道三者的互转关系,可以先将JSON理解成是String类型。这篇博文主要是记录阿里巴巴的JSONObject的两个方法。toJSONString()以及parseObject()方法。顺便巩固Map与实体对象的转换技巧。
引入依赖
com.alibaba.fastjson2 fastjson2 2.0.12 com.alibaba fastjson 1.2.83 cn.hutool hutool-all 5.8.10
实体Bean
@Data @AllArgsConstructor @NoArgsConstructor public class User { private String username; private Integer age; private String sex; }
Map JSON
// 1、Map 转为 JSON:{"sex":"男","age":"18","username":"张三"} HashMap map = new HashMap(); map.put("username", "张三"); map.put("age", "18"); map.put("sex", "男"); String mapToJSON = JSONObject.toJSONString(map); // 2、JSON 转为 Map JSONObject jsonObject = JSONObject.parseObject(mapToJSON); // 这里需要注意的是 转过来的Map中的key与value分别只能为String与Object 否则会报错 Map newMap = jsonObject;
JSON Bean
// 1、JSON 转为 实体对象:User(username=张三, age=18, sex=男) // 将Object子类转为JSONObject进而转为实体对象 Map就是上面的Map User jsonToBean = JSONObject.parseObject(JSONObject.toJSONString(map), User.class); // 相当于以下代码 String object = "{\"sex\":\"男\",\"age\":\"18\",\"username\":\"张三\"}"; User u = JSONObject.parseObject(object, User.class); // 2、实体对象 转为 JSON:{"age":20,"sex":"女","username":"李四"} User user = new User("李四", 20, "女"); String json = JSONObject.toJSONString(user);
Bean Map
// 1、实体对象 转为 Map User user = new User("李四", 20, "女"); // 转为Map只能接收key与value分别为String与Object Map beanToMap = new HashMap(); // beanToMap有四个重载方法 可自行了解 beanToMap = BeanUtil.beanToMap(user, beanToMap, CopyOptions.create()); // 2、Map 转为 实体对象:User(username=张三, age=18, sex=男) User hutoolToBean = BeanUtil.toBean(map, User.class); // 第三个参数表示是否遵守驼峰命名 User hutoolMapToBean = BeanUtil.mapToBean(map, User.class, true, CopyOptions.create()); // 实际上是将Map转为JSONObject再转为实体对象 User mapToBean = JSONObject.parseObject(JSONObject.toJSONString(map), User.class);
综上:这里所学得知识使用fastjson是实现Map JSON -> Bean。其余由糊涂工具完成。总结一下parseObject()方法。只要是String就可以进行转换。而toJSONString()是将对象转为String数据类型。
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。