У меня возникли трудности с преобразованием документа bson в строку json с использованием bsoncxx. Функция bsoncxx :: to_json возвращает «недопустимый»/поврежденный объект станд :: строка .. Я не могу прочитать символ в нем, и его падение, когда станд :: строка разрушается ..bsoncxx :: to_json return corrupted string
I «ве восстановить все: mongoc, libbson, mongocxx и т.д ...
Вот пример кода:
bsoncxx::builder::basic::document doc{};
doc.append(bsoncxx::builder::basic::kvp("test", 1));
auto string = bsoncxx::to_json(doc);
Я не могу извлечь данные из строки, потому что станд :: конец (строка) сбой при «нарушении прав доступа на чтение», когда я пытаюсь скопировать содержимое с помощью std :: copy ...
Я использую mongodb везде в программе и получаю доступ к документам bson, и все работает нормально. Я попытался вызвать bsoncxx :: to_json на уже существующий документ bson, возвращенный запросом mongodb, но он имел такое же поведение ...
Я пытаюсь передать массив байтов (плюс, некоторая информация, например, как декодировать массив байтов), используя boost tcp сокеты для программы nodejs, поэтому я подумал, что могу просто создать документ с «двоичным полем», преобразовать его в json и передать его по разъему tcp ...
Кто-нибудь знает, как я мог бы это сделать, либо установив bsoncxx :: to_json, либо используя что-то еще?
благодаря
Edit:
Для информации, я компиляции с Visual Studio 2015 на Windows, 10 x64
Привет, не могли бы вы предоставить [SSCCE] (http://sscce.org)? Я бы хотел попробовать в Windows и Linux и посмотреть, смогу ли я его воспроизвести. – xdg
Привет, извините за задержку. Вам нужен zip с .dll и вечно или только основной файл cpp? Потому что я сделал новый проект только с 3-мя строками в вопросе (+ включает) и имеет такое же поведение – pascx64
https://1drv.ms/f/s!AueTJubu1l2CgzPHROVvdil6yOau Вот ссылка со всем, кроме boost. Я использую boost 1.61 – pascx64