【问题标题】:Java JSON date as map key conversionJava JSON日期作为映射键转换
【发布时间】:2023-04-05 01:25:01
【问题描述】:

我对泽西岛有一种无法解释的行为。 当将日期序列化为 DTO 的属性时,我会得到时间戳(这对我来说很好)。 类似的东西:

Java : 
Date day = new Date();

JSon :
{
  "day" :   1422831600000
}

但我有一个如此复杂的 DTO,其映射使用 Date 作为键。

Java :
Map<Date, String> mapData = new HashMap<Date, String>();
     mapData.put(new Date(), "TEST");

JSON :
{
    mapData : {
        "2015-02-01T23:00:00.000+0000" : "TEST"
    }
}

如何在地图情况下简单地获得时间戳而不是 ISO 格式?

谢谢。

【问题讨论】:

标签: json date serialization dictionary jersey


【解决方案1】:

最后,我找到了一个好方法。 Jersey 中有一个配置对象,允许 Jackson 提供者在将日期用作地图的键时将日期写为时间戳。

@Provider
public class MyJacksonProvider implements ContextResolver<ObjectMapper>{

private ObjectMapper objectMapper;

public PolarisJacksonProvider() {
    objectMapper = new ObjectMapper();
    SimpleModule module = new SimpleModule("MyModule");
    objectMapper.registerModule(module);
    objectMapper.configure(SerializationFeature.WRITE_DATE_KEYS_AS_TIMESTAMPS, true);
}

/**
 * {@inheritDoc}
 * 
 * @see javax.ws.rs.ext.ContextResolver#getContext(java.lang.Class)
 */
@Override
public ObjectMapper getContext(Class<?> type) {
    return objectMapper;
}

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-30
    • 1970-01-01
    • 2016-02-18
    • 1970-01-01
    相关资源
    最近更新 更多