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

739
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控制器方法。用户应仅以以下datetime格式输入,否则应抛出message。为什么DateSerializer未调用?

add(@Valid @RequestBody User user)
{
}

json:

{
   "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));
}
lbdfcgyjjr

我有同样的问题,所以我写了一个自定义日期反序列化 @JsonDeserialize(using=CustomerDateAndTimeDeserialize.class)

public class CustomerDateAndTimeDeserialize extends JsonDeserializer<Date> {

    private SimpleDateFormat dateFormat = new SimpleDateFormat(
            "yyyy-MM-dd HH:mm:ss");

    @Override
    public Date deserialize(JsonParser paramJsonParser,
            DeserializationContext paramDeserializationContext)
            throws IOException, JsonProcessingException {
        String str = paramJsonParser.getText().trim();
        try {
            return dateFormat.parse(str);
        } catch (ParseException e) {
            // Handle exception here
        }
        return paramDeserializationContext.parseDate(str);
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Jackson:InvalidFormatException:无法从字符串值构造java.util.Date的实例

可以输入不反序列化值`java.util.Date`从字符串

改装GSON将json字符串中的Date序列化为java.util.date

Java将字符串转换为具有自定义格式的java.util.Date对象

为什么Jackson Jackson ObjectMapper给我这个将JSON字段转换为Date对象的错误?无法从字符串反序列化类型为java.util.Date的值

无法反序列化java.util.ArrayList的实例

无法从字符串值('{');实例化java.util.LinkedHashMap类型的值;没有单字符串构造函数/工厂方法

序列化java.util.Date

从对象转换为AWS Kinesis-> Java无法从VALUE_NUMBER_FLOAT令牌中反序列化java.util.Date的实例

无法读取 JSON:无法构造`java.util.LinkedHashMap` 的实例

如何将java.util.Date实例的时间设置为00:00:00?

无法从START_ARRAY令牌中反序列化java.util.HashMap的实例

无法从START_ARRAY令牌中反序列化java.util.LinkedHashMap的实例

无法反序列化VALUE_STRING中的java.util.ArrayList实例

无法从START_OBJECT令牌中反序列化java.util.ArrayList的实例

Jackson 无法从 VALUE_STRING 令牌中反序列化 java.util.ArrayList 的实例

JsonMappingException:无法从START_OBJECT令牌中反序列化java.util.List的实例

Jakson无法从START_OBJECT令牌中反序列化java.util.ArrayList的实例

onRetrofitFailure()无法从START_OBJECT令牌中反序列化java.util.ArrayList的实例

JSON解析错误:无法从START_OBJECT令牌中反序列化java.util.ArrayList实例

Firestore无法反序列化对象。无法将类型java.util.HashMap的值转换为Date

无法反序列化对象。无法将类型java.util.Date的值转换为String

JSON反序列化引发异常-无法从START_OBJECT令牌中反序列化java.util.ArrayList的实例

java.util.Date的行为

JAX-RS json(java.util.Date)序列化上的不同行为

将字符串解析为 java.util.Date

将字符串转换为java.util.date

将字符串转换为java.util.date

java.util.Comparator实例的命名约定