jackson|jackson 如何将实体转json json字符串转实体
目录
- 将实体转json json字符串转实体
- 实体转json
- json转实体
- 使用Jackson操作json数据,各场景实例
- 1. 对象(示例为 UserEntity)转 json 数据
- 2. json 数据 转 对象
- 3. map 转 json 数据
- 4. json 数据 转 map
- 5. List
转 json 数据 - 6. json 数据 转 List
- 7.接口接收稍微复杂一点的json数据,如何拆解
将实体转json json字符串转实体
@AutowiredObjectMapper objectMapper;
实体转json
String datahttps://www.it610.com/article/= ""; //一个json串Student stu = new Student (); stu = objectMapper.readValue(data, Student .class); // json字符串转实体publicString writeAsString(T t) throws JsonProcessingException {return objectMapper.writeValueAsString(t); } String aa = writeAsString(stu);
json转实体
publicT readValue(String data) {try {return objectMapper.readValue(data, new TypeReference () {}); } catch (Exception e) {// TODO: handle exception}return null; }
使用Jackson操作json数据,各场景实例 该篇内容,结合实例介绍使用jackson来操作json数据:
在pom.xml文件中添加 ,Jackson 依赖:
com.fasterxml.jackson.core jackson-databind2.11.1 com.fasterxml.jackson.core jackson-core2.11.1 com.fasterxml.jackson.core jackson-annotations2.11.1
示例中使用到的实体类, UserEntity.java
/** * @Author : JCccc * @CreateTime : 2020/3/18 * @Description : **/public class UserEntity {private Integer id; private String name; private Integer age; // set get 方法 和 toString 等方法就不粘贴出来了}
在介绍示例前,先看一张图,使用jackson如:
文章图片
1. 对象(示例为 UserEntity)转 json 数据
writeValueAsString 方法
public static void main(String[] args) throws JsonProcessingException {UserEntity userEntity=new UserEntity(); userEntity.setId(100); userEntity.setName("JCccc"); userEntity.setAge(18); ObjectMapper mapper = new ObjectMapper(); String jsonString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(userEntity); System.out.println(jsonString); }
控制台输出:
文章图片
格式很漂亮,是因为使用了 :
文章图片
咱们不需要漂亮,所以后面的我都不使用格式的方法了,转换的时候,只需要 writeValueAsString 就够了 。
2. json 数据 转 对象
【jackson|jackson 如何将实体转json json字符串转实体】readValue 方法
ObjectMapper mapper = new ObjectMapper(); //json字符串转对象UserEntity userEntityNew = mapper.readValue(jsonString, UserEntity.class); System.out.println(userEntityNew);
控制台输出:
文章图片
3. map 转 json 数据
ObjectMapper mapper = new ObjectMapper(); Map map=new HashMap(); map.put("A",1); map.put("B",2); map.put("C",3); map.put("D",4); String jsonMap = mapper.writeValueAsString(map); System.out.println(jsonMap);
控制台输出:
文章图片
4. json 数据 转 map
ObjectMapper mapper = new ObjectMapper(); //json字符串转为Map对象Map mapNew=mapper.readValue(jsonMap, Map.class); System.out.println(mapNew);
控制台输出:
文章图片
5. List
ObjectMapper mapper = new ObjectMapper(); UserEntity userEntity1=new UserEntity(); userEntity1.setId(101); userEntity1.setName("JCccc1"); userEntity1.setAge(18); UserEntity userEntity2=new UserEntity(); userEntity2.setId(102); userEntity2.setName("JCccc2"); userEntity2.setAge(18); UserEntity userEntity3=new UserEntity(); userEntity3.setId(103); userEntity3.setName("JCccc3"); userEntity3.setAge(18); ListuserList=new ArrayList<>(); userList.add(userEntity1); userList.add(userEntity2); userList.add(userEntity3); String jsonList = mapper.writeValueAsString(userList); System.out.println(jsonList);
控制台输出:
文章图片
6. json 数据 转 List
ObjectMapper mapper = new ObjectMapper(); ListuserListNew= mapper.readValue(jsonList,new TypeReference >(){}); System.out.println(userListNew.toString());
控制台输出:
文章图片
7.接口接收稍微复杂一点的json数据,如何拆解
现在模拟了一串稍微复杂一些的json数据,如:
{ "msg": "success", "data": [{"id": 101,"name": "JCccc1","age": 18},{"id": 102,"name": "JCccc2","age": 18},{"id": 103,"name": "JCccc3","age": 18} ], "status": 200}
那么我们接口接收时,如果操作呢?
1.直接使用 @RequestBody Map map 接收,里面如果嵌套list,那就拿出对应的value转list,然后该怎么拿怎么拿。
@PostMapping("testJackson")public void testJackson(@RequestBody Map map) { System.out.println(map); Stringmsg = String.valueOf(map.get("msg")); System.out.println(msg); List dataList = (List) map.get("data"); System.out.println(dataList.toString()); }
2.使用字符串接收json数据 @RequestBody String jsonStr , 那么就使用jackson把这个json数据转为Map,然后该怎么拿怎么拿。
@PostMapping("testJackson")public void testJackson(@RequestBody String jsonStr) throws JsonProcessingException { System.out.println(jsonStr); ObjectMapper mapper = new ObjectMapper(); Map map = mapper.readValue(jsonStr, Map.class); Stringmsg = String.valueOf(map.get("msg")); System.out.println(msg); Stringstatus = String.valueOf(map.get("status")); System.out.println(status); List dataList = (List) map.get("data"); System.out.println(dataList.toString()); }
好的,该篇就到此。
ps: 为啥我要科普这个jackson的使用么?这个算是基本的操作了,原本我经手的很多项目都用到的fastjson ,其实使用起来也杠杠的。
除了jackson是springboot web包的内部解析框架外,其实还有一些原因。
懂的人自然会明白。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
推荐阅读
- 考研英语阅读终极解决方案——阅读理解如何巧拿高分
- 如何寻找情感问答App的分析切入点
- 即将到手三百万
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus使用queryWrapper如何实现复杂查询
- 思友人
- 如何在Mac中的文件选择框中打开系统隐藏文件夹
- 漫画初学者如何学习漫画背景的透视画法(这篇教程请收藏好了!)
- java中如何实现重建二叉树
- Linux下面如何查看tomcat已经使用多少线程