Jacksonは、文字列IDフィールドを特別な方法でシリアル化するようにカスタマイズされているようです。これはおそらくorg.bsonとの統合の一部です 図書館。
問題は、デシリアライザーがObjectIdによってパラメーター化されていることです。 Stringの代わりに入力する またはプレーンなObject 。次のように変更し、@ObjectIdも削除してみてください フィールド宣言からの注釈。次に例を示します:
public class ObjectIdSerializer extends JsonSerializer<Object> {
@Override
public void serialize(Object value, JsonGenerator jsonGen,SerializerProvider provider) throws IOException {
jsonGen.writeString(value.toString());
}
}
Jackson-Jongoプロバイダークラス の採用を検討することもできます。 すべてのクラスのオブジェクトIDのシリアル化を修正します。