ジャクソンを使用してJSONをJava POJOにデシリアライズしています。私はオブジェクトマッパーでMrBeanモジュールを登録しています。したがって、私がしなければならないことは、たくさんのインターフェースを定義することだけです。POJOはこれらのインターフェースに基づいて自動的に生成されます。ジャーナル(とMrBean)の逆シリアル化時の多態性の使用
私は、Credentialsインターフェースを持ち、それを拡張するさまざまなタイプの資格情報を持っていたいと思います。 UsernamePasswordCredentialsとCertificateFileCredentialsです。私もfollowed the instructions at another StackOverflow postきた
org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "username" (Class org.codehaus.jackson.generated.SCRUBBED.Credentials), not marked as ignorable
at [Source: [email protected]; line: 32, column: 29] (through reference chain: HostConfiguration["hostDefinitions"]->HostDefinition["credentials"]->Credentials["username"])
、と私は同じエラーを取得しています:
それが仕事にしようとするために、任意の注釈や他の呪文なしでこれを行うと、私のユニットテストで私に次のエラーを与えます。
エラーは意味があります。 JacksonはJSONファイルの内容を空のインターフェイスにマップしようとしています。しかし、私は(おそらく、おそらく)ジャクソンがベースのクレデンシャルインターフェースを拡張し、それらのインターフェースのフィールドをJSONオブジェクトで見つかったフィールドにマッチさせるためのインターフェースを探すことを期待していました。
JSONオブジェクトのメタ情報を利用するいくつかの例をJackson wikiで見てきました。オブジェクトを"@class":"foo.bar.CertificateFileCredentials"
でデコレートしていますが、JSON入力が他のサービスによって自動的に生成され、他のサービスが自分のサービスの内部について何も知っていてはいけないので、これを避けることをお勧めします。
ありがとうございます!