ジャージクライアントでオプションのクラスを取得しようとしています。リモートサーバーがOptional.empty()
を返すと、このエラーが発生します。ジャージクライアントでオプションクラスを取得する
Caused by: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "present" (class java.util.Optional), not marked as ignorable
私のコード
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new Jdk8Module());
Client client = ClientBuilder.newClient().register(new JacksonJsonProvider(mapper));
Optional<MyType> myType = client.target(TARGET_URL)
.path(PATH)
.request()
.get(Optional.class);
私の関連する依存関係がある
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.9.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jdk8</artifactId>
<version>2.9.1</version>
</dependency>
EDIT
リモートサーバー上で実行すると、春のブートアプリですアプリケーションとして。私はアプリにjackson-datatype-jdk8依存関係を追加しました。その後、認識されないフィールド例外が解決されましたが、戻りオブジェクトはnullです。この前に、郵便配達は、あなたがこのような提出に注釈を付ける@JsonInclude(Include.NON_EMPTY)
を利用することができ、以下の結果
{
"present": false
}
しかし、今
null
これは? https://github.com/FasterXML/jackson-modules-java8 – Eugene
@Eugene残念ながら、それは動作しませんでした – Rhododendron