Springboot 使用Jackson 操作 json数据,各场景实例

简介: Springboot 使用Jackson 操作 json数据,各场景实例

该篇内容,结合实例介绍使用jackson来操作json数据:


1. 对象(示例为 UserEntity)转 json 数据


2. json 数据 转 对象


3. map 转 json 数据


4. json 数据 转 map


5. List<UserEntity> 转 json 数据


6. json 数据 转 List<UserEntity>


7.接口接收稍微复杂一点的json数据,如何拆解


在pom.xml文件中添加 ,Jackson  依赖:


        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.11.1</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.11.1</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.11.1</version>
        </dependency>


示例中使用到的实体类, 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如:


image.png


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);
    }


控制台输出:


image.png


格式很漂亮,是因为使用了 :


image.png


咱们不需要漂亮,所以后面的我都不使用格式的方法了,转换的时候,只需要   writeValueAsString 就够了 。

 

2. json 数据 转 对象



readValue 方法


        ObjectMapper mapper = new ObjectMapper();
        //json字符串转对象
        UserEntity userEntityNew = mapper.readValue(jsonString, UserEntity.class);
        System.out.println(userEntityNew);


控制台输出:


image.png


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);



控制台输出:


image.png


4. json 数据 转 map



        ObjectMapper mapper = new ObjectMapper();
        //json字符串转为Map对象
        Map mapNew=mapper.readValue(jsonMap, Map.class);
        System.out.println(mapNew);



控制台输出:


image.png


5. List<UserEntity> 转 json 数据



        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);
        List<UserEntity> userList=new ArrayList<>();
        userList.add(userEntity1);
        userList.add(userEntity2);
        userList.add(userEntity3);
        String jsonList = mapper.writeValueAsString(userList);
        System.out.println(jsonList);


控制台输出:


image.png


6. json 数据 转 List<UserEntity>



        ObjectMapper mapper = new ObjectMapper();
        List<UserEntity> userListNew= mapper.readValue(jsonList,new TypeReference<List<UserEntity>>(){});
        System.out.println(userListNew.toString());


控制台输出:


image.png


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);
        String  msg = 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);
        String  msg = String.valueOf(map.get("msg"));
        System.out.println(msg);
        String  status = 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包的内部解析框架外,其实还有一些原因。


懂的人自然会明白。

相关文章
|
1月前
|
SQL JSON 数据格式
SPL 处理多层 JSON 数据比 DuckDB 方便多了
esProc SPL 处理多层 JSON 数据比 DuckDB 更便捷,尤其在保留 JSON 层次与复杂计算时优势明显。DuckDB 虽能通过 `read_json_auto()` 将 JSON 解析为表格结构,但面对深层次或复杂运算时,SQL 需频繁使用 UNNEST、子查询等结构,逻辑易变得繁琐。而 SPL 以集合运算方式直接处理子表,代码更简洁直观,无需复杂关联或 Lambda 语法,同时保持 JSON 原始结构。esProc SPL 开源免费,适合复杂 JSON 场景,欢迎至乾学院探索!
|
3月前
|
XML JSON API
淘宝商品详情API的调用流程(python请求示例以及json数据示例返回参考)
JSON数据示例:需要提供一个结构化的示例,展示商品详情可能包含的字段,如商品标题、价格、库存、描述、图片链接、卖家信息等。考虑到稳定性,示例应基于淘宝开放平台的标准响应格式。
|
2月前
|
XML JSON API
如何在 Postman 中上传文件和 JSON 数据
如果你想在 Postman 中同时上传文件和 JSON 数据,本文将带你一步一步地了解整个过程,包括最佳实践和技巧,让你的工作更轻松。
|
2月前
|
JSON JavaScript 前端开发
如何在 Postman 中发送 JSON 数据
我们将深入探讨使用 Postman 发送 JSON 数据这一主题,Postman 是一款强大的 API 测试和开发工具。无论您是经验丰富的开发人员还是新手,掌握这项技能对于高效的 API 测试和开发都至关重要。
|
2月前
|
JSON Java 数据库连接
怎样用 esProc 计算来自 Restful 的多层 json 数据
esProc 是一款强大的数据处理工具,可简化 Java 处理 Restful 接口返回的复杂多层 JSON 数据的难题。通过 esProc,不仅能轻松访问和解析 Restful 数据,还能高效完成复杂计算任务,并可无缝嵌入 Java 应用中作为计算引擎使用。例如,筛选特定分类订单或计算金额,esProc 的脚本简洁直观,远优于传统 SQL 或纯 Java 实现。此外,esProc 支持安全认证(如 Cookie 和 Token)及 JDBC 集成,为开发者提供灵活高效的解决方案。
|
2月前
|
JSON JavaScript 数据格式
何如定义 JSON Schema 并验证该 json 数据?
本文定义了一个包含 audio 和 tags 两个必需属性的 JSON Schema,用于规范数据结构。其中,audio 是非空字符串,表示音频组件;tags 是非空数组,表示标签组件。通过示例数据和验证工具(如 ajv, NJsonSchema),可确保 JSON 数据符合 Schema 要求,从而保障数据的一致性和正确性。
115 1
|
3月前
|
存储 JSON API
淘宝商品详情API接口概述与JSON数据示例
淘宝商品详情API是淘宝开放平台提供的核心接口之一,为开发者提供了获取商品深度信息的能力。以下是技术细节和示例:
|
Java 应用服务中间件 Maven
传统maven项目和现在spring boot项目的区别
Spring Boot:传统 Web 项目与采用 Spring Boot 项目区别
594 0
传统maven项目和现在spring boot项目的区别
|
XML Java 数据库连接
创建springboot项目的基本流程——以宠物类别为例
创建springboot项目的基本流程——以宠物类别为例
189 0
创建springboot项目的基本流程——以宠物类别为例
|
存储 机器学习/深度学习 IDE
SpringBoot 项目与被开发快速迁移|学习笔记
快速学习 SpringBoot 项目与被开发快速迁移
SpringBoot 项目与被开发快速迁移|学习笔记