首页 > 其他分享 >Spring Boot 配置 Jackson

Spring Boot 配置 Jackson

时间:2023-10-14 16:14:14浏览次数:36  
标签:Jackson Spring Boot springframework Json user import public

image

什么是 Jackson ? 有什么作用?

Jackson 是 Spring Boot 内置的 Json 解析框架,用来完成出入参的序列化和反序列化。通常,我们会在 Controller 类中方法上,加上 @RequestBody 或者 @ResponseBody 注解,Spring Boot 会自动对出入参做 Json 解析与转换工作。

注意:@RequestBody用于将入参 Json 转换成对象,而 @ResponseBody 用于将对象转换成 Json 返回。

已经内置,为何还需要配置?

内置的 Jackson 无法满足生产所需,比如说对自定义日期格式,亦或者我们想适配 Java 8 新加入的 LocalDateLocalDateTime 等。

下面以自定义日期格式转换为例,定义一个 /user 接口:

package site.exception.springbootjackson.controller;

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import site.exception.springbootjackson.entity.User;

/**
 * @time 21:03
 * @discription
 **/
@RestController
public class UserController {

    /**
     * 定义一个创建用户的接口
     * @param user
     * @return
     */
    @PostMapping("/user")
    public User createUser(@RequestBody User user) {
        System.out.println(user.getCreateTime().toString());
        // 将 user 再以 Json 的形式返回
        return user;
    }
}

User.java:

package site.exception.springbootjackson.entity;

import java.io.Serializable;
import java.util.Date;

/**
 * @time 21:00
 * @discription
 **/
@Data
public class User implements Serializable {
    /**
     * 用户名
     */
    private String username;
    /**
     * 密码
     */
    private String password;
    /**
     * 创建时间
     */
    private Date createTime;

}

上面这个接口我们直接使用的 @RestController, 它会将此 Controller 中的方法均以 Json 的格式进行返回。完成这一切以后,启动项目,并通过 Postman 访问该接口,测试一下 Json 格式提交能否进行正常转换:

image

很不幸,报错了!接下来,我们需要自定义格式转换。

配置 Jackson

定义一个 JacksonConfig 配置类:

package site.exception.springbootjackson.config;

import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.text.SimpleDateFormat;

/**
 * @time 19:32
 * @discription
 **/
@Configuration
public class JacksonConfig {

    @Bean
    public ObjectMapper objectMapper() {
        ObjectMapper objectMapper = new ObjectMapper();
        // 自定义日期转换格式
        objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
        return objectMapper;
    }
}

重新启动项目,再次对该接口访问:
image

标签:Jackson,Spring,Boot,springframework,Json,user,import,public
From: https://www.cnblogs.com/shenMaQN/p/17764275.html

相关文章

  • Spring Boot 配置拦截器
    通过拦截器,我们可以针对特定URI做拦截,做相关业务处理,比如检查用户是否登录,打印每个请求的处理耗时等。一、新建一个拦截器新建登录验证类 LoginValidationInterceptor.java:packagesite.exception.springbootinterceptor.interceptor;importorg.springframework.lang.N......
  • 简单易用的Spring Boot邮件发送
    ......
  • Spring Cloud建筑工地智慧平台源码,自主版权+实际应用案例
    建筑工地智慧平台源码,施工管理端、项目监管端、数据大屏端、移动APP端全套源码技术架构:微服务+Java+SpringCloud、Vue+UniApp+MySql+自主版权+实际应用案例+演示   建筑工地智慧平台已应用于线上巡查、质量管理、实名制管理、危大工程管理、运渣车管理、绿色施工、视频监......
  • Springboot中使用RabbitMq
    代码地址:https://gitee.com/Aes_yt/middleware-demo/tree/master/rabbitmq安装RabbitMq1.docker拉取镜像dockerpullrabbitmq:3.9.29-management2.创建rabbitmq容器dockerrun-d--namerabbitmq-p5672:5672-p15672:15672rabbitmq:3.9.29-management3.访问地......
  • spring6-事务
    1、JdbcTemplate1.1、简介Spring框架对JDBC进行封装,使用JdbcTemplate方便实现对数据库操作1.2、准备工作①搭建子模块搭建子模块:spring-jdbc-tx②加入依赖<dependencies><!--springjdbcSpring持久化层支持jar包--><dependency><groupId>org.springfram......
  • 博学谷学习记录 自我总结 用心分享 | Spring源码刨析
    别再盲目的说spring有三级缓存了,两个缓存只是启动时为了解决循环依赖,spring启动后只有一个缓存有用一、什么是循环依赖循环依赖指的就是循环引用,就是两个或多个bean相互之间的持有对方,比如CircleA引用CircleB,CircleB引用CircleC,CircleC引用CircleA,则它们最终......
  • Spring Boot + Redis 延时双删功能,实战来了!
    一、业务场景在多线程并发情况下,假设有两个数据库修改请求,为保证数据库与redis的数据一致性,修改请求的实现中需要修改数据库后,级联修改Redis中的数据。请求一:A修改数据库数据B修改Redis数据请求二:C修改数据库数据D修改Redis数据并发情况下就会存在A—>C—>D—>B的情......
  • Spring远程命令执行漏洞(CVE-2022-22965)原理研究
    一、前置知识SpringMVC参数绑定为了方便编程,SpringMVC支持将HTTP请求中的的请求参数或者请求体内容,根据Controller方法的参数,自动完成类型转换和赋值。之后,Controller方法就可以直接使用这些参数,避免了需要编写大量的代码从HttpServletRequest中获取请求数据以及类型转换。这个......
  • Java设计模式-策略模式-基于Spring实现
    1、策略模式1.1、概述策略模式是一种行为设计模式,它允许在运行时选择算法的行为。它将算法封装在独立的策略类中,使得它们可以相互替换,而不影响客户端代码。这种模式通过将算法的选择从客户端代码中分离出来,提供了更大的灵活性和可维护性。在Java中,策略模式的设计理念可以通过以......
  • 采用SpringBoot+原生HTML+MySQL开发的电子病历系统源码
    电子病历系统采用“所见即所得、一体化方式”,协助医生和护士准确、标准、快捷实现病历书写、修改、审阅、打印、体温单浏览、医嘱管理等,是提供病历快速简洁化完成的一系列综合型医生病历工作平台。本套电子病历系统主要面向医疗机构医生、护士,提供对住院病人的电子病历书写、保存......