Java 如何转换FindTable<;MyPojo>;使用与序列化Mongo文档实体完全相同的语法创建JSON
Q1-如何将POJO转换为等效的基于Mongo文档的JSON(保留Id和日期) POJO 实现了对POJO的迭代,并使用GSON将其序列化Java 如何转换FindTable<;MyPojo>;使用与序列化Mongo文档实体完全相同的语法创建JSON,java,json,mongodb,Java,Json,Mongodb,Q1-如何将POJO转换为等效的基于Mongo文档的JSON(保留Id和日期) POJO 实现了对POJO的迭代,并使用GSON将其序列化 List<Question> questionsAsPojo = QuestionService.getQuestions(companyId, groupId, userId); BasicDBList list = new BasicDBList(); Gson gson = new Gson();
List<Question> questionsAsPojo = QuestionService.getQuestions(companyId, groupId, userId);
BasicDBList list = new BasicDBList();
Gson gson = new Gson();
for (Question question : questionsAsPojo) {
final String asJson = gson.toJson(question);
final BasicDBObject asBasicDBObject = BasicDBObject.parse(asJson);
list.add(asBasicDBObject);
}
data.append("questionsPojoToBasicDBListWithBasicDBObject", list);
问题2-有没有办法将FindIterable
或FindIterable
序列化为Mongo内置的JSON字符串?目前,我正在对它们进行迭代,以根据需要返回Pojo或文档的列表,当实体的数量预计很小时,这是很好的
问题2-在完全转换为使用较新的文档类型之前,我通常需要将POJO
转换为BasicDBObject
/BasicDBList
。有没有一种方法可以有效地将文档转换为BasicDBObject?到目前为止,我看到的最接近的方法是序列化为JSON字符串,然后根据需要将该字符串转换为文档或DBObject
public static Document toDocument(DBObject dbObject) {
return Document.parse(dbObject.toString());
}
public static DBObject toDBObject(Document document) {
return BasicDBObject.parse(document.toJson());
}
本质上,我想从BasicDBList和BasicDBObject转换到POJO,但在通过线路序列化响应时,我想将POJO序列化到文档,但在转换代码之前,我还想将文档转换为BasicDBObject
{
"status": "success",
"data": {
"questionsAsDoc": [
{
"_id": {
"$oid": "605b3d62958763a2e18be480"
},
"companyId": {
"$oid": "554a0123c2e625bd02259318"
},
"groupId": null,
"title": "Test Title 1",
"desc": "Description 1",
"style": "range",
"minRange": 1,
"maxRange": 10,
"comments": false,
"startDate": {
"$date": "2021-03-01T00:00:00Z"
},
"endDate": {
"$date": "2021-03-31T23:59:00Z"
},
"deleted": true,
"frequencyMins": 1
},
..
],
}
}
public static Document toDocument(DBObject dbObject) {
return Document.parse(dbObject.toString());
}
public static DBObject toDBObject(Document document) {
return BasicDBObject.parse(document.toJson());
}