Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java RestTemplate-毫秒以外的每个数字都缺失_Java_Spring_Rest_Jackson_Resttemplate - Fatal编程技术网

Java RestTemplate-毫秒以外的每个数字都缺失

Java RestTemplate-毫秒以外的每个数字都缺失,java,spring,rest,jackson,resttemplate,Java,Spring,Rest,Jackson,Resttemplate,在rest web服务(例如@Controller)中,我可以看到超过毫秒的时间,但在通过RestTemplate使用rest web服务的客户端中,第三个数字以外的每个字符都会丢失。例如,当我查看rest web服务的返回(return testReturn)时,我可以看到2014-12-22 09:52:35.371444和2014-12-22 09:52:34.00934,但当我查看客户端时,我将看到1419263555371和1419263554009。我不是在问格式(2014-12-2

在rest web服务(例如@Controller)中,我可以看到超过毫秒的时间,但在通过RestTemplate使用rest web服务的客户端中,第三个数字以外的每个字符都会丢失。例如,当我查看rest web服务的返回(return testReturn)时,我可以看到2014-12-22 09:52:35.371444和2014-12-22 09:52:34.00934,但当我查看客户端时,我将看到1419263555371和1419263554009。我不是在问格式(2014-12-22 09:52:35.371444对1419263555371)。我问的是第一个例子损失444英镑,第二个例子损失34英镑。如果有人用“objectMapper.enable(DeserializationFeature.etc)”指出某个解决方案,请告诉我如何设置它以影响RestTemplate。我需要用“return testReturn”中的完整时间戳填充“LogDisplay\u l=restemplate.postForObject”的返回

//客户端

LogDisplay _l = restTemplate.postForObject(myServiceUrl,myPojoParameters, LogDisplay.class);
//pojo与这个问题有关

import java.sql.Timestamp;

public class Lo_DisplayRecord { 
 String isParsable;
 private Timestamp dateTime;
       public Lo_DisplayRecord(String parseSw, Timestamp timeStamp){
              super();
              isParsable    = parseSw;
              dateTime      = timeStamp; //the question is related to this variable
       }
//包含其他Pojo的Pojo

@Component
public class LogDisplay {
       public LogDisplay(){}
       private ArrayList<Lo_DisplayRecord> displayValues; //pojo with the datetime variable
       private int reportRowsLimit = 0;
       private int reportRowsCount = 0;
       public int getReportRowsLimit() {
              return reportRowsLimit;
       }
       public ArrayList<Lo_DisplayRecord> getDisplayValues() {
              return displayValues;
       }
       public void setDisplayValues(ArrayList displayValues) {
              this.displayValues = displayValues;
       }
}

//mvc-dispatcher-servlet.xml

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
        <property name="messageConverters">
            <list>
                <ref bean="jsonMessageConverter"/>
            </list>
        </property>
    </bean>


    <bean id="jsonMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
    </bean>

来自jackson文档:

将时间戳写入纳秒(默认值:false)(自Jackson 2.2以来) 控制是否使用纳秒时间戳(启用)写入数字时间戳值的功能;如果禁用,则假定为标准毫秒时间戳

这应该行得通

编辑:

读取时间戳为纳秒(默认值:false)——自Jackson 2.2以来 控制是否使用纳秒时间戳(启用)写入数字时间戳值的功能;如果禁用,则假定为标准毫秒时间戳


还有反序列化的配置。

否,它将不起作用。在我通过“restemplate.postForObject(myServiceUrl、myPojoParameters、LogDisplay.class)”调用RESTWeb服务之后,我丢失了纳秒时间戳。我需要某种方法在RestTemplate中启用“将日期时间戳写入为纳秒”的功能。正如我在问题中所说,“如果有人用“objectMapper.enable(DeserializationFeature.etc)”指出某个解决方案,请告诉我如何将其设置为影响RestTemplate”。我添加了一张图片,向您展示您的建议在我的情况下不起作用。请看第131行,我在那里调用rest web服务。如果我给你看里面的结果,你会发现纳秒消失了。如何在RestTemplate.postForObject中设置ObjectMapper.configure干扰?有没有办法在mvc-dispatcher-servlet.xml中设置“反序列化功能。读取时间戳为纳秒,true”,可能在MappingJackson2HttpMessageConverter下?我似乎可以对messageConverter(restTemplate.setMessageConverters(messageConverters))进行更改,但我还没有弄清楚如何更改它。
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
        <property name="messageConverters">
            <list>
                <ref bean="jsonMessageConverter"/>
            </list>
        </property>
    </bean>


    <bean id="jsonMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
    </bean>
objectMapper.configure(SerializationFeature.WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS,true);
objectMapper.configure(DeserializationFeature.READ_DATE_TIMESTAMPS_AS_NANOSECONDS,true);