私は、SpringBoot、Spring Data、MongoRepositoryを使用してオブジェクトを格納および取得しています。MongoRepositoryを使用したカスタムデシリアライザ
MongoRepositoryを使用する場合、カスタムjsonデシリアライザ(内部デシリアライザの代わりにいくつかの追加作業ができることが好ましいGSON)を提供する方法がありますか?
例えば、私が呼び出しています:私は(派生フィールドの値をそれらを呼び出す)カスタムのようにして設定いくつかの追加のフィールドを持っているデータをご希望の
Data data = repo.findOne(id); // where repo is a MongoRepository
。私は上記のデータオブジェクトに直接派生フィールドを設定することはできますが、取得時にデシリアライザをフックすることができれば、より洗練されたものになります。たとえば、春のデータなしで、私は以下のようにMongoDBのカーソルとフックgsonデシリアライザを使用することができます
を:
public List<Data> getData() {
Gson gson = new Gson();
List<Data> dataRecords = new ArrayList<Data>();
MongoCursor<Document> cursor = db.getCollection("DataCollection").find().iterator();
try {
while (cursor.hasNext()) {
dataRecords.add(gson.fromJson(JSON.serialize(cursor.next()), Data.class));
}
} finally {
cursor.close();
}
return dataRecords;
}