有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java ObjectMapper readValue始终在JSON日期字符串的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) 个答案

  1. # 1 楼答案

    我不知道你的JSON映射器是如何得到结果的。我试过:

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

    这张照片

    2017-12-08
    

    没有UTC的偏移量,也没有一天中的时间,就像我输入的XMLGregorianCalendar一样

    但是,一旦获得了XMLGregorianCalendar,比如xgc,就可以通过将其设置为未定义来删除偏移量:

        xgc.setTimezone(DatatypeConstants.FIELD_UNDEFINED);
    

    现在toString方法将生成一个最后没有Z的字符串