首先要知道三者的互转关系,可以先将JSON理解成是String类型。这篇博文主要是记录阿里巴巴的JSONObject的两个方法。toJSONString()以及parseObject()方法。顺便巩固Map与实体对象的转换技巧。
引入依赖
<!-- 阿里巴巴 JSON转换 以下二选一即可 没有去细研究两者差距-->
<!-- 主要是使用JSONObject类的两个方法 -->
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.12</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.83</version>
</dependency>
<!-- 糊涂 -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.10</version>
</dependency>
实体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<String,String> 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<String,Object> 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("李四","女");
// 转为Map只能接收key与value分别为String与Object
Map<String,Object> beanToMap = new HashMap<>();
// beanToMap有四个重载方法 可自行了解
beanToMap = BeanUtil.beanToMap(user,beanToMap,CopyOptions.create());
// 2、Map 转为 实体对象:User(username=张三,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数据类型。
原文地址:https://blog.csdn.net/m0_65563175/article/details/132482371
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。