Я использую Java Driver 3.0 с MongoDB для отправки JSON через веб-сервис.Bson - Как превратить JSON в список <Document> и перечислить <Document> в JSON?
Когда я хочу конвертировать объект Document (org.bson.Document) в JSON, я использую obj.toJson()
, и когда я хочу конвертировать JSON в объект Document, я использую Document.parse(json)
.
Однако, когда я имею дело со списками документов (представленных в JSON: [{"field1":1, ...}, {"field1":2, ...}]
), я не могу понять, как это сделать.
До сих пор, я придумал эти «хаки»:
Из списка в формате JSON: добавить список документов в качестве значения поля под названием «список» в большом документе , Я конвертирую этот большой документ в JSON и удаляю то, что мне не нужно из полученной строки.
public String toJson(List<Document> docs){ Document doc = new Document("list", docs); String json = doc.toJson(); return json.substring(json.indexOf(":")+2, json.length()-1); }
От JSON к списку: Я наоборот, добавив это поле «список» в формате JSON, превращая его в документ и получить только значение этого поля из документа.
public static List<Document> toListOfDocuments(String json){ Document doc = Document.parse("{ \"list\":"+json+"}"); Object list = doc.get("list"); if(list instanceof List<?>) { return (List<Document>) doc.get("list"); } return null ; }
Я также пытался использовать другой сериализатор JSON (я взял Google, один), но это не дает тот же результат, встроенный в toJson()
методе из объекта Document, в частности, для " _id "или временные метки.
Есть ли какой-либо чистый способ сделать это?
Спасибо за ответ, но мне было интересно, есть ли решение, которое предназначено для водителя 3.0. Но так или иначе, я не знал, что могу использовать BasicDBList с документами вместо DBObject, поэтому спасибо. Думаю, я могу сделать обратное преобразование из JSON в список? –
Thematrixme
@Thematrixme вы прочитали заявление «не устарело»? Это означает, что он работает с текущим драйвером. Существуют и другие способы использования внешних библиотек. Но нет. Нет обновленного пакета «util» для работы с BSON 'Document'. Просто введите типы. –
Я знаю, что такое устаревшее средство, я просто опасаюсь, что это будет удалено в следующих выпусках, как вы упомянули, «все еще не устарели», и мне бы понравилось решение, предназначенное для драйвера 3.0.Однако, поскольку такой вещи еще нет, ваш ответ кажется правильным. Благодаря! – Thematrixme