User-Profile-Image
hankin
  • 5
  • Java
  • Kotlin
  • Spring
  • Web
  • SQL
  • MegaData
  • More
  • Experience
  • Enamiĝu al vi
  • 分类
    • Zuul
    • Zookeeper
    • XML
    • WebSocket
    • Web Notes
    • Web
    • Vue
    • Thymeleaf
    • SQL Server
    • SQL Notes
    • SQL
    • SpringSecurity
    • SpringMVC
    • SpringJPA
    • SpringCloud
    • SpringBoot
    • Spring Notes
    • Spring
    • Servlet
    • Ribbon
    • Redis
    • RabbitMQ
    • Python
    • PostgreSQL
    • OAuth2
    • NOSQL
    • Netty
    • MySQL
    • MyBatis
    • More
    • MinIO
    • MegaData
    • Maven
    • LoadBalancer
    • Kotlin Notes
    • Kotlin
    • Kafka
    • jQuery
    • JavaScript
    • Java Notes
    • Java
    • Hystrix
    • Git
    • Gateway
    • Freemarker
    • Feign
    • Eureka
    • ElasticSearch
    • Docker
    • Consul
    • Ajax
    • ActiveMQ
  • 页面
    • 归档
    • 摘要
    • 杂图
    • 问题随笔
  • 友链
    • Spring Cloud Alibaba
    • Spring Cloud Alibaba - 指南
    • Spring Cloud
    • Nacos
    • Docker
    • ElasticSearch
    • Kotlin中文版
    • Kotlin易百
    • KotlinWeb3
    • KotlinNhooo
    • 前端开源搜索
    • Ktorm ORM
    • Ktorm-KSP
    • Ebean ORM
    • Maven
    • 江南一点雨
    • 江南国际站
    • 设计模式
    • 熊猫大佬
    • java学习
    • kotlin函数查询
    • Istio 服务网格
    • istio
    • Ktor 异步 Web 框架
    • PostGis
    • kuangstudy
    • 源码地图
    • it教程吧
    • Arthas-JVM调优
    • Electron
    • bugstack虫洞栈
    • github大佬宝典
    • Sa-Token
    • 前端技术胖
    • bennyhuo-Kt大佬
    • Rickiyang博客
    • 李大辉大佬博客
    • KOIN
    • SQLDelight
    • Exposed-Kt-ORM
    • Javalin—Web 框架
    • http4k—HTTP包
    • 爱威尔大佬
    • 小土豆
    • 小胖哥安全框架
    • 负雪明烛刷题
    • Kotlin-FP-Arrow
    • Lua参考手册
    • 美团文章
    • Java 全栈知识体系
    • 尼恩架构师学习
    • 现代 JavaScript 教程
    • GO相关文档
    • Go学习导航
    • GoCN社区
    • GO极客兔兔-案例
    • 讯飞星火GPT
    • Hollis博客
    • PostgreSQL德哥
    • 优质博客推荐
    • 半兽人大佬
    • 系列教程
    • PostgreSQL文章
    • 云原生资料库
    • 并发博客大佬
Help?

Please contact us on our email for need any support

Support
    首页   ›   Spring   ›   正文
Spring

SpringBoot—默认的json解析方案

2020-03-12 02:17:27
1292  0 0

阅读完需:约 2 分钟

在SpringBoot的编写中常常用@RestController来代替@Controller 是因为 @RestController 集合了 HttpMessageConverter 来从中转换java代码,从而输出和输入json格式的数据。

目录:

先写一个bean:

public class User {
    private Integer id;
    private  String username;
    private  String address;

//    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date birthday;

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", address='" + address + '\'' +
                ", birthday=" + birthday +
                '}';
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}

然后是Controller:

@RestController
public class UserController {
    @GetMapping("/user")
    public List<User> getAllUser(){
        List<User> users=new ArrayList<>();
        for(int i=0;i<10;i++){
            User user=new User();
            user.setAddress("www.enmalvi.com");
            user.setUsername("tiga"+i);
            user.setId(i);
            user.setBirthday(new Date());
            users.add(user);
        }
        return users;
    };
}

之后就可以运行springboot看看结果:

看到了日期的默认格式,但是这不是我想要的格式怎么办?

第一种,可以在bean里写:

@JsonFormat(pattern = "yyyy-MM-dd")

来规范格式,但是如果有很多东西要规范呢?那不是很麻烦吗?有没有统一修改的呢?——有!

创建WebMvcController.java文件

@Configuration
public class WebMvcController  {
    @Bean
    MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter(){
        MappingJackson2HttpMessageConverter converter=new MappingJackson2HttpMessageConverter();
        ObjectMapper om=new ObjectMapper();
        om.setDateFormat(new SimpleDateFormat(("yyyy/MM/dd")));
        converter.setObjectMapper(om);
        return  converter;
    }
}

我们来重写MappingJackson2HttpMessageConverter这个方法就可以了,在这里面还可以规定很多东西,比如编码,格式什么的。

再来看一下结果:

果然日期的格式变了,我们可以来看一下源码!JacksonHttpMessageConvertersConfiguration

@Bean
        @ConditionalOnMissingBean(
            value = {MappingJackson2HttpMessageConverter.class},
            ignoredType = {"org.springframework.hateoas.server.mvc.TypeConstrainedMappingJackson2HttpMessageConverter", "org.springframework.data.rest.webmvc.alps.AlpsJsonHttpMessageConverter"}
        )
        MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter(ObjectMapper objectMapper) {
            return new MappingJackson2HttpMessageConverter(objectMapper);
        }

大概的意思是你有MappingJackson2HttpMessageConverter就用你的默认的就自动失效,你没有就用我的。

在JacksonAutoConfiguration也是一样的道理,你有就用你的,不然就用我的。

如果你有ObjectMapper 我就失效了,反之听我的,所以我们还可以这么写:

@Configuration
public class WebMvcController  {
//    @Bean
//    MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter(){
//        MappingJackson2HttpMessageConverter converter=new MappingJackson2HttpMessageConverter();
//        ObjectMapper om=new ObjectMapper();
//        om.setDateFormat(new SimpleDateFormat(("yyyy/MM/dd")));
//        converter.setObjectMapper(om);
//        return  converter;
//    }

    @Bean
    ObjectMapper objectMapper(){
        ObjectMapper om=new ObjectMapper();
        om.setDateFormat(new SimpleDateFormat(("yyyy/MM/dd")));
        return om;
    }
}

结果还是一样的:

此图像的alt属性为空;文件名为image-24.png

如本文“对您有用”,欢迎随意打赏作者,让我们坚持创作!

0 打赏
Enamiĝu al vi
不要为明天忧虑.因为明天自有明天的忧虑.一天的难处一天当就够了。
543文章 68评论 294点赞 594447浏览

随机文章
SpringSecurity—AbstractAuthenticationProcessingFilter 源码解析
5年前
Java—Cglib的invoke和invokeSuper区别
4年前
SpringSecurity—AuthenticationManager(用户的全局和局部定义)
5年前
Java—有向无环图(DAG)
2年前
SpringSecurity—多种加密方案共存
4年前
博客统计
  • 日志总数:543 篇
  • 评论数目:68 条
  • 建站日期:2020-03-06
  • 运行天数:1927 天
  • 标签总数:23 个
  • 最后更新:2024-12-20
Copyright © 2025 网站备案号: 浙ICP备20017730号 身体没有灵魂是死的,信心没有行为也是死的。
主页
页面
  • 归档
  • 摘要
  • 杂图
  • 问题随笔
博主
Enamiĝu al vi
Enamiĝu al vi 管理员
To be, or not to be
543 文章 68 评论 594447 浏览
测试
测试
看板娘
赞赏作者

请通过微信、支付宝 APP 扫一扫

感谢您对作者的支持!

 支付宝 微信支付