RestTemplate - 缺少超过毫秒的每个数字

时间:2014-12-26 23:36:06

标签: java spring rest jackson resttemplate

在其余的Web服务(例如@Controller)中,我可以看到超过毫秒的时间,但在客户端通过RestTemplate使用其余的Web服务时,错过了第三个数字之外的每个字符。例如,我可以看到2014-12-22 09:52:35.371444和2014-12-22 09:52:34.00934当我查看其余Web服务的返回(返回testReturn)但我会看到1419263555371和1419263554009我看一下客户端(_l)。我不是在询问格式(2014-12-22 09:52:35.371444与1419263555371)。我问的是第一个例子中丢失444而第二个例子中丢失34个。如果有人用“objectMapper.enable(DeserializationFeature.etc)”指出一些解决方案,请告诉我如何将其设置为影响RestTemplate。我需要使用“return testReturn”的完整时间戳填充返回“LogDisplay _l = restTemplate.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;
       }
}

//休息网络服务

   @Autowired
   private LogDisplay testReturn;

   @RequestMapping(value="display/last", method=RequestMethod.POST)
   @ResponseBody
   @ResponseStatus(HttpStatus.OK)
   public LogDisplay getLast(@RequestBody Mas60010 mas60010) {

          try {
                 testReturn = lo_Mas60010.getLastDisplayValues(
              return testReturn;

RestTemplate.postForObject executed before ObjectMapper.Configure takes effect

// MVC-调度-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>

1 个答案:

答案 0 :(得分:0)

来自jackson文档:

  

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

objectMapper.configure(SerializationFeature.WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS,true);

这应该有用。

编辑:

  

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

objectMapper.configure(DeserializationFeature.READ_DATE_TIMESTAMPS_AS_NANOSECONDS,true);

还有反序列化的配置。