ObjectMapper readValue始终从JSON日期字符串

时间:2017-12-08 15:30:04

标签: java json junit xmlgregoriancalendar

我正在编写一个junit测试用例,我需要提供以下数据文件(请求):

  data_file:

  {
    "birthDate" : "2017-12-08"
   }

junit测试文件使用:

     fasterxml.jackson.databind.ObjectMapper.readValue(data_file) 

读取此请求数据文件并将日期转换为XMLGregorianCalendar。但是,转换后的值最后有一个“Z”,我认为这是默认时区:

     2017-12-08T00:00:00.000Z

我无法更改包含用于读取Json值的代码的java类,因为我们不拥有代码。那么我应该在我的测试数据文件中给出什么日期字符串,以便“Z”不会出现在转换后的XMLGregorianCalendar值的末尾?

     2017-12-08T00:00:00.000

非常感谢。

1 个答案:

答案 0 :(得分:0)

我不知道你的JSON映射器如何获得它的结果。我试过了:

    System.out.println(
            DatatypeFactory.newInstance().newXMLGregorianCalendar("2017-12-08"));

打印

2017-12-08

没有与UTC的偏移,也没有一天的时间,只是我输入XMLGregorianCalendar的字符串。

但是,如果您有一个XMLGregorianCalendar,比如xgc,则可以通过将其设置为undefined来删除偏移:

    xgc.setTimezone(DatatypeConstants.FIELD_UNDEFINED);

现在toString方法最终会生成一个不带Z的字符串。