我使用 Spring 框架从 GET 请求中接收 JSON。一切都很好,直到在数据库中输入了错误的值并且发生了这种情况:
02-25 14:46:04.035:E/AndroidRuntime(12271):org.springframework.http.converter.HttpMessageNotReadableException:无法读取 JSON:无法从字符串值“-3600”构造 java.util.Date 的实例:不是有效的表示(错误:无法解析日期值'-3600':无法解析日期“-3600”:与任何标准形式不兼容(“yyyy-MM-dd'T'HH:mm:ss.SSSZ” , "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", "EEE, dd MMM yyyy HH:mm:ss zzz", "yyyy-MM-dd"))
我如何设置杰克逊忽略不可读/可解析的值?我宁愿有 null 左右,也不愿我的完整 json 解析失败......
这是我尝试解析的对象,如您所见,我试图在代码中忽略带有 jsonignoreproperties 的属性。
收据:
public class Receipt {
public String categories;
@JsonProperty("expiration_date")
public Date expirationDate;
public String image1;
public String image2;
(.. more properties, getters and setters ..)
以及我如何尝试解析:
RestTemplate restTemplate = new RestTemplate();
// instellen dat de converter ongedefineerde parameters negeert
HttpMessageConverter customconver = new MappingJackson2HttpMessageConverter();
((MappingJackson2HttpMessageConverter) customconver).getObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); //here the ignore unknown
restTemplate.getMessageConverters().add(customconver);
restTemplate.getMessageConverters().add(new StringHttpMessageConverter());
try {
// GET Request
ResponseEntity<ReceiptMessage> response = restTemplate.exchange(urlPath, HttpMethod.GET,requestEntity,ReceiptMessage.class);
请记住,在 -3600 值之前,我的解析器工作正常,所以没有问题。
有没有办法忽略这些错误?