JSON 以自定义格式序列化日期(无法从字符串值构造 java.util.Date 实例)

2023-12-20

could not read JSON: Can not construct instance of java.util.Date from String 
value '2012-07-21 12:11:12': not a valid representation("yyyy-MM-dd'T'HH:mm:ss.SSSZ", "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", "EEE, dd MMM yyyy HH:mm:ss zzz", "yyyy-MM-dd"))

将 json 请求传递给 POJO 类中的 REST 控制器方法。用户只能以下面的日期时间格式输入,否则它应该抛出消息。为什么 DateSerializer 没有调用?

add(@Valid @RequestBody User user)
{
}

格式:

{
   "name":"ssss",
   "created_date": "2012-07-21 12:11:12"
}

pojo类变量

@JsonSerialize(using=DateSerializer.class)
@Column
@NotNull(message="Please enter a date")      
@Temporal(value=TemporalType.TIMESTAMP)
private Date created_date;

public void serialize(Date value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException {
    logger.info("serialize:"+value);
    DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    logger.info("DateSerializer formatter:"+formatter.format(value));
    jgen.writeString(formatter.format(value));
}

注释你的created_date场与JsonFormat注释来指定输出格式。

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = TimeZone.getDefault(), locale = Locale.getDefault())

请注意,如果不同的区域设置和时区基于服务器使用的其他内容,则您可能需要传入不同的区域设置和时区。

您可以在以下位置找到更多信息the docs http://fasterxml.github.io/jackson-annotations/javadoc/2.0.0/com/fasterxml/jackson/annotation/JsonFormat.html.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JSON 以自定义格式序列化日期(无法从字符串值构造 java.util.Date 实例) 的相关文章

随机推荐