首先要知道三者的互转关系,可以先将JSON理解成是String类型。这篇博文主要是记录阿里巴巴的JSONObject的两个方法。toJSONString()以及parseObject()方法。顺便巩固Map与实体对象的转换技巧。
引入依赖
com.alibaba.fastjson2fastjson22.0.12com.alibabafastjson1.2.83cn.hutoolhutool-all5.8.10
实体Bean
@Data@AllArgsConstructor@NoArgsConstructorpublic 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 转为 MapJSONObject jsonObject = JSONObject.parseObject(mapToJSON);// 这里需要注意的是 转过来的Map中的key与value分别只能为String与Object 否则会报错Map newMap = jsonObject;
JSON Bean
// 1、JSON 转为 实体对象:User(username=张三, age=18, sex=男)// 将Object子类转为JSONObject进而转为实体对象 Map就是上面的MapUser 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、实体对象 转为 MapUser user = new User("李四", 20, "女");// 转为Map只能接收key与value分别为String与ObjectMap 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数据类型。