前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >json日期格式化与json日期转化为对象

json日期格式化与json日期转化为对象

作者头像
CBeann
发布2023-12-25 17:34:16
3000
发布2023-12-25 17:34:16
举报
文章被收录于专栏:CBeann的博客CBeann的博客

项目基础

SpringBoot+web+fastjson

问题1提出:返回JSON对象的日期需要格式化

测试代码
对象
代码语言:javascript
复制
@Data
@Accessors(chain = true)
public class Student {
    private Integer id;
    private String name;
    private Date date;
}
接口
代码语言:javascript
复制
@RestController
public class StudentController {

    @RequestMapping("/students")
    public List<Student> hello() {

        List<Student> students = new ArrayList<>();
        Student student = new Student();
        student.setId(1).setName("1").setDate(new Date());
        Student student2 = new Student();
        student2.setId(2).setName("2").setDate(new Date());

        students.add(student);
        students.add(student2);

        return students;
    }
}
显示结果

解决办法

添加依赖

代码语言:javascript
复制
 <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.47</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.10.0</version>
            <scope>compile</scope>
        </dependency>

在需要格式的属性上修改如下

代码语言:javascript
复制
@JSONField(format="yyyy-MM-dd HH:mm:ss")
    private Date date;

添加配置类

代码语言:javascript
复制
 @Bean
    public HttpMessageConverters fastJsonHttpMessageConverters() {
        FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
        FastJsonConfig fastJsonConfig = new FastJsonConfig();
        fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
        fastConverter.setFastJsonConfig(fastJsonConfig);
        HttpMessageConverter<?> converter = fastConverter;
        return new HttpMessageConverters(converter);
    }

运行结果如下:

参考:https://blog.csdn.net/qq_28929589/article/details/79245774

问题2提出:把带有日期格式的json字符串变为对象

对象字符串
代码语言:javascript
复制
{ "date":"2020-01-08 22:59:48", "id":1, "name":"1" }
测试代码

使用下面里面的一个工具类

json字符串和对象直接的转化_CBeann的博客-CSDN博客

代码语言:javascript
复制
@RequestMapping("/hello")
    public String str2obj() {
        //{ "date":"2020-01-08 22:59:48", "id":1, "name":"1" }
        String str = "{ \"date\":\"2020-01-08 22:41:54\", \"id\":1, \"name\":\"1\" }";
        //https://blog.csdn.net/qq_37171353/article/details/103848712
        //里的json工具类
        Student student = JsonUtils.jsonToPojo(str, Student.class);
        System.out.println(student);

        return "success";
    }
出现异常
代码语言:javascript
复制
com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `java.util.Date` from String "2020-01-08 22:41:54": not a valid representation (error: Failed to parse Date value '2020-01-08 22:41:54': Cannot parse date "2020-01-08 22:41:54": while it seems to fit format 'yyyy-MM-dd'T'HH:mm:ss.SSSZ', parsing fails (leniency? null))
 at [Source: (String)"{ "date":"2020-01-08 22:41:54", "id":1, "name":"1" }"; line: 1, column: 10] (through reference chain: com.example.json2date.entity.Student["date"])
解决办法

修改实体类如下

代码语言:javascript
复制
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
    private Date date;
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-03-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 项目基础
  • 问题1提出:返回JSON对象的日期需要格式化
    • 测试代码
      • 对象
        • 接口
          • 显示结果
          • 解决办法
          • 问题2提出:把带有日期格式的json字符串变为对象
            • 对象字符串
              • 测试代码
                • 出现异常
                  • 解决办法
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档