Spring フレームワークを使用して、GET リクエストから JSON を受け取ります。間違った値がDBに入れられ、これが起こるまで、すべてがうまくいきました:
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"))
読み取れない/解析できない値を無視するようにジャクソンを設定するにはどうすればよいですか? 完全なjson解析が失敗するよりもむしろnullかそうです...
これが解析しようとするオブジェクトです。コードで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 値の前に私のパーサーは正常に動作していたので、問題はありません。
この種のエラーを無視する方法はありますか?