Вставить JSON в Mongocxx

#c #json #mongodb #bson #mongo-cxx-driver

#c #json #mongodb #bson #mongo-cxx-драйвер

Вопрос:

В настоящее время я пытаюсь вставить файл JSON в мой MongoDB. Я уже видел, что это было решено с помощью mongo::BSONObj в прошлом… Но, похоже, это не вариант, поскольку они выпустили новый драйвер mongocxx для c 11. Это то, что я нашел в файлах src bsoncxx:

 BSONCXX_API document::value BSONCXX_CALL from_json(stdx::string_view json);
/// Constructs a new document::value from the provided JSON text
///
/// @param 'json'
///  A string_view into a JSON document
///
/// @returns A document::value if conversion worked.
///
/// @throws bsoncxx::exception with error details if the conversion failed.
///
  

Как мне перенести мой файл JSON в stdx::string_view ?

Спасибо!

Ответ №1:

bsoncxx::stdx::string_view Может быть сконструирован из std::string . Просто загрузите содержимое вашего файла (при условии, что он содержит один объект JSON) в std::string (возможно, через std::ifstream ) и передайте это std::string в bsoncxx::from_json . Объект, возвращаемый из bsoncxx::from_json , является bsoncxx::document::value типом, владеющим ресурсами, который содержит документ BSON.

Комментарии:

1. Спасибо за ваш ответ, сработал хорошо! есть ли способ загружать не только один объект (например, массивы и прочее) одновременно?

2. Заключающий объект должен быть объектом, но он, безусловно, может содержать вложенные массивы и другой объект и т.д. Если вы хотите загрузить несколько документов JSON, хранящихся последовательно в текстовом файле, во что-то вроде std::vector of bsoncxx::document::value , то нет, у нас нет чего-то подобного, но это было бы просто реализовать самостоятельно.

3. Сделать bsoncxx::document::value bsonObj = bsoncxx::from_json(your_json_string);