gpt4 book ai didi

java - 使用@JsonCreator 和@JsonProperty 未按预期生成 Json 响应

转载 作者:行者123 更新时间:2023-11-29 07:00:11 24 4
gpt4 key购买 nike

我正在使用 JDK 1.6、Jackson 2.0.5、Spring 3.0.3 并使用 jackson 注释来序列化和反序列化 json 响应。

public class MyDate extends java.sql.Date{

private static SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM/dd/yyyy");
private String dateString;

@JsonCreator
public MyDate(@JsonProperty("dateString") String date){
super(simpleDateFormat.parse(date).getTime());
dateString = date;
}

public String getDateString(){
return dateString;
}
private final setDateString(String date){
// .....
}
}

我收到类似 1417977000000 的 json 响应消息,但它应该类似于 12/08/2014。我还需要写其他东西吗?

我试着关注 Jackson wiki page文章。

编辑:

在与@Sotirios Delimanolis 的讨论的基础上,我在 getter 方法上尝试了 JsonValue 注释,它成功了。

  @JsonValue
public String getDateString(){
return dateString;
}

最佳答案

您的类型是 java.sql.Date,这是一个 java.util.Date,被认为是 Jackson 的特殊类型。默认情况下,它会将日期(java.util.Date 类型的实例)写入它们的时间戳。你可以禁用它

objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);

或您的 Jackson 版本的相应配置。

然而,这会给你类似的东西

"2014-12-08T08:00:00.000+0000"

它不会使用您的SimpleDateFormat。你可以像这样用 ObjectMapper 注册一个 DateFormat

objectMapper.setDateFormat(new SimpleDateFormat("MM/dd/yyyy"));

最好的解决方案是使用组合而不是继承。不要直接或间接扩展 java.util.Date

关于java - 使用@JsonCreator 和@JsonProperty 未按预期生成 Json 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27386883/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com