【问题标题】:Date serialization in spring MVCSpring MVC中的日期序列化
【发布时间】:2018-01-08 09:25:20
【问题描述】:

在我的 json 输出中,日期被渲染为对象,因此使用 Postman 进行测试会引发错误:预期为 'u' 而不是 'e'

{
    "ao_id":6,
    "code":"AOO N°199-2017 C/T",
    "objet":"Marché Cadre - Travaux de réfection de voiries",
    "date_saisie":new Date(1514851200000)
    }

我用以下方式注释了我的实体类:

 @Column(name = "date_saisie")
    @JsonFormat(pattern="yyyy-MM-dd")
    private Date date_saisie

如何正确序列化我的日期对象.. 谢谢,

【问题讨论】:

  • 试试@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd)
  • 我也试过了:@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy hh:mm:ss") private Date date_saisie;它没有工作

标签: java json spring date serialization


【解决方案1】:

理想的方法是使用以下 Jackson 配置进行配置 -

objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);

这将确保所有日期都以一致的格式序列化。

下面是完整的配置供大家参考-

public class JacksonMapper extends ObjectMapper
{
    private static final Logger logger = LogManager.getLogger(JacksonMapper.class);

    public JacksonMapper()
    {
        this.setSerializationInclusion(JsonInclude.Include.NON_NULL);

        this.disable(SerializationFeature.INDENT_OUTPUT);
        this.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);

        this.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);

        this.registerModules(new Jdk8Module()); // Enables support for JDK 8 data types e.g. Optional
        this.registerModule(new JavaTimeModule()); // Enables serialization of Java 8 timestamps
    }
}

使用以下 XML 配置创建 objectmapper 的 bean -

<bean id="objectMapper" class="config.JacksonMapper" />

【讨论】:

  • 我正在使用一个休息控制器,把你的代码放在哪里:@RequestMapping(value="getAppelOffre", method=RequestMethod.GET,produces = "application/json;charset=UTF-8" ) public ResponseEntity getAOById(@RequestParam("id") int id) { System.out.println("fetching ao with id: "+id); AppelOffre ao = service.getAppelOffreById(id); System.out.println("日期为:"+ao.getDate_saisie());返回新的 ResponseEntity(ao, HttpStatus.OK); }
  • 你应该把这段代码放在你负责spring配置的Java文件中。我假设您使用的是基于 Java 的 spring 配置。
  • 我正在使用基于 xml 的 spring 配置来代替
  • 在这种情况下,我已经通过基于 XML 的配置的答案进行了更新
猜你喜欢
  • 2011-12-02
  • 2019-04-03
  • 1970-01-01
  • 2017-10-01
  • 2019-04-06
  • 1970-01-01
  • 1970-01-01
  • 2017-03-23
  • 2012-01-03
相关资源
最近更新 更多