fastJSON字符串类型数据中的日期转换为Java bean的日期对象

教程分享 > WEB技术 > JavaScript (5943) 2024-08-07 11:21:12
fastJSON字符串类型数据中的日期转换为Java bean的日期对象



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

public class Person implements Serializable {
    private String name;
    private Date birthday;
    private Date createDate;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Date getBirthday() {
        return birthday;
    }

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

    public Date getCreateDate() {
        return createDate;
    }

    public void setCreateDate(Date createDate) {
        this.createDate = createDate;
    }
}



Test.java
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;

import java.text.SimpleDateFormat;

public class Test {
    public static void main(String[] args) {
        String personJSONStr="{\"name\":\"exampleName\",\"birthday\":\"2012-04-02\",\"createDate\":\"2018.09.22\"}";
        JSONObject jsonObject= JSON.parseObject(personJSONStr);
        Person person=jsonObject.toJavaObject(new TypeReference<Person>(){});
        System.out.println(new SimpleDateFormat("yyyMMdd").format(person.getCreateDate()));
    }
}


输出:
Connected to the target VM, address: '127.0.0.1:64532', transport: 'socket'
Disconnected from the target VM, address: '127.0.0.1:64532', transport: 'socket'
Exception in thread "main" com.alibaba.fastjson.JSONException: For input string: "2018.09.22"
	at com.alibaba.fastjson.util.TypeUtils.castToJavaBean(TypeUtils.java:1048)
	at com.alibaba.fastjson.util.TypeUtils.cast(TypeUtils.java:692)
	at com.alibaba.fastjson.util.TypeUtils.cast(TypeUtils.java:858)
	at com.alibaba.fastjson.JSON.toJavaObject(JSON.java:1019)
	at Test.main(Test.java:11)
Caused by: java.lang.NumberFormatException: For input string: "2018.09.22"
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
	at java.lang.Long.parseLong(Long.java:589)
	at java.lang.Long.parseLong(Long.java:631)
	at com.alibaba.fastjson.util.TypeUtils.castToDate(TypeUtils.java:336)
	at com.alibaba.fastjson.util.TypeUtils.castToDate(TypeUtils.java:275)
	at com.alibaba.fastjson.util.TypeUtils.cast(TypeUtils.java:747)
	at com.alibaba.fastjson.util.TypeUtils.cast(TypeUtils.java:858)
	at com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer.createInstance(JavaBeanDeserializer.java:1180)
	at com.alibaba.fastjson.util.TypeUtils.castToJavaBean(TypeUtils.java:1046)
	... 4 more

Process finished with exit code 1

解决办法:
修改person类:
import com.alibaba.fastjson.annotation.JSONField;

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

public class Person implements Serializable {
    private String name;

    @JSONField(format = "yyyy-MM-dd")
    private Date birthday;

    @JSONField(format = "yyyy.MM.dd")
    private Date createDate;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Date getBirthday() {
        return birthday;
    }

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

    public Date getCreateDate() {
        return createDate;
    }

    public void setCreateDate(Date createDate) {
        this.createDate = createDate;
    }
}
https://www.leftso.com/article/474.html

相关文章
fastJSON字符串类型数据中的日期转换为Java bean的日期对象
在国内项目中,阿里的fastjson包因其使用简单功能强大很多人喜欢在项目中使用,我也是其中一员
java json字符串转对象_json转换为java对象_ json字符串转对象数组
Java EE 8 JSON Pointer讲解,Java EE 8包含JSON处理API的更新,并为最新的JSON标准提供最新的IEFT标准。
java编程中使用nodejs的apidoc工具生成Java api美观的HTML文档,apidoc可以根据代码注释生成web api文档,支持大部分主流语言
环境说明1.MySQL5.7(注意,json格式最低需要改版本支持);2.存json数据的数据库字段类型必须是json,不能是varchar;
使用Jackson写巨大的JSON文件
MySQL,从大概5.7版本开始支持json数据类型,但是5.7的json查询不支持创建索引,在MySQL 8.0.17 后支持了索引,但是创建和查询使用索引与常规索引不同
handlerexceptionresolver 返回json
前言值得一提的是JSON只有数组数据类型
说明:json除了键值对的形式以外,还包括Array数列形式,这在mysql5.7及以上也是支持的,对Array中元素的操作相当于直接对键值对中的值操作,少了“键”的定位这一步,这里不单独展示,...
Java编程之Spring Boot中使用jsp视图模板
httpclient4.5使用详解 httpclient 4.5 post传递json参数
Log4j 2 简介       Apache Log4j 2是对Log4j 1.x的升级,相对于其先前版本进行了重大改进,例如性能改进,自动重新加载已修改的配置文件,java 8 lambda...
简介Spring Cloud Gateway中的全局异常处理不能直接用@ControllerAdvice来处理,通过跟踪异常信息的抛出,找到对应的源码,自定义一些处理逻辑来符合业务的需求