【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数据类型。【Java alibaba&hutool】JSON、Map、实体对象间的相互转换_第1张图片

 

 

你可能感兴趣的:(java,json,后端)