在其余的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;
// 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>
答案 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);
还有反序列化的配置。