私は書いていないが、修正しようとしている既存のSpringベースのRESTクライアントを持っています。私たちのリモートRESTサービスの1つが私たちにフィールドを追加し、JSON解析が失敗しました。私は未知のフィールドが一般的に無視されるようにコンバータを設定しようとしています。バージョン2.1.0から、私たちはcom.fasterxml.jackson.core
、ジャクソン・コア、ジャクソン・データバインド、およびジャクソン・アノテーションを使用しているMappingJakcson2HttpMessageConverterで認識されないフィールドを無視しようとしています
public void setRestTemplate(RestTemplate restTemplate) {
restTemplate.getMessageConverters().add(new FormHttpMessageConverter());
// configure the JSON converter to ignore unknown properties
MappingJackson2HttpMessageConverter jsonConverter = new MappingJackson2HttpMessageConverter();
ObjectMapper objectMapper = jsonConverter.getObjectMapper(); // new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
restTemplate.getMessageConverters().add(jsonConverter);
this.restTemplate = restTemplate;
}
:私は、セットアップ時に実行する次のコードを持っています。
上記のコードを使用すると、InvocationTargetException、「JSONを読み取れませんでした:認識されないフィールド」でREST呼び出しが失敗します。フィールドを置くと、オブジェクトに非整列化が記述されますが、エラーは消えます。
MappingJackson2HttpMessageConverterの代わりにMappingJacksonHttpMessageConverterを使用した他のコードから上記のコードを適用しました。問題ありますか?これで、フィールドは無視されませんが、注釈を使用して未知のプロパティを無視すると、フィールドは無視されます。私はむしろこれをマッパー・レベルに置いて、単一の構成ですべてのオブジェクトに適用するようにします。
誰も私が上記の設定に間違っていたのを見ますか?