Я создал этот пользовательский конвертер:
@Component
@WritingConverter
public class MetadataWriterConverter implements Converter<Metadata, DBObject> {
@Override
public DBObject convert(Metadata metadata) {
DBObject dbObject = new BasicDBObject();
dbObject.put("name", metadata.getName());
dbObject.put("metadata", (BasicDBObject) BasicDBObject.parse(reference.getMetadata()));
dbObject.removeField("_class");
return dbObject;
}
}
Я получаю это исключение:
Причина: org.bson.BsonInvalidOperationException: readStartDocument может вызываться толькокогда CurrentBSONType имеет значение DOCUMENT, а не когда CurrentBSONType имеет значение ARRAY.
Проблема в:
(BasicDBObject) BasicDBObject.parse(metadata.getMetadata())
содержимое metadata.getMetadata
: "[{'departament': 'JUST'}]"
.
Metadata
класс:
public class Metadata {
private String id;
private String user;
private String metadata;
}
Содержимое поля metadata
представляет собой строку json, я пытаюсь преобразовать в BasicDbObject
, но проблема возникает, когда эта строка является jsonмассив: [{},{}]
.
Угадайте:
Metadata met = new Metadata();
met.setId("Mdt1");
met.setUser("user");
met.setMetadata("[{'departament': 'JUST'}]");
Что я хочу получить:
{
"id": Mdt1,
"user": "user",
"metadata": [{"departament": "JUST"}]
}
Есть идеи о том, как провести рефакторинг моего конвертера?*