6

WRT到以下问题:

Jersey + Jackson JSON 日期格式序列化 - 如何更改格式或使用自定义 JacksonJsonProvider

我想知道

  • Jackson 是否指定 json 日期格式应标准化为 unix 时间整数?

后续问题...

  • 最近的任何时候,它的立场是否发生了变化?
  • 不应该将日期格式标准化为 jaxb xml 输出提供的相同格式吗?
  • 为什么/为什么不?
  • 为解决这个问题付出了多少努力?
  • RestEasy 是否提供了一个 json 提供程序缓解措施,以通常可识别的日期格式输出 json 日期?
4

2 回答 2

12

对不起人们大声喊叫 - 我在这里找到了答案

http://wiki.fasterxml.com/JacksonFAQDateHandling ,

这里

http://wiki.fasterxml.com/JacksonFAQ#Serializing_Dates

这里

http://wiki.fasterxml.com/JacksonHowToCustomSerializers

这里

http://jackson.codehaus.org/1.1.2/javadoc/org/codehaus/jackson/map/util/StdDateFormat.html

使用 @JsonSerialize(using= ... ) 方式:

public class JsonStdDateSerializer
extends JsonSerializer<Date> {
  private static final DateFormat iso8601Format =
    StdDateFormat.getBlueprintISO8601Format();

  @Override
  public void serialize(
    Date date, JsonGenerator jgen, SerializerProvider provider)
  throws IOException, JsonProcessingException {

    // clone because DateFormat is not thread-safe
    DateFormat myformat = (DateFormat) iso8601Format.clone();
    String formattedDate = myformat.format(date);
    jgen.writeString(formattedDate);
  }
}
于 2012-06-27T19:28:42.617 回答
2

这也由 ObjectMapper 上的一个功能控制(至少在 1.9.11 中,可能更早):

ObjectMapper om = new ObjectMapper();
om.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false);
om.writer().writeValue(System.out, objectWithDateProperty);

我看不到如何以声明方式对对象定义本身进行等效操作。

于 2013-05-01T18:45:19.777 回答