MongoDB bsoncxx崩溃,解析具有int64_t值的json文档

问题描述

我正在使用Bson库函数ToJson()在C#中生成一个json文档。该文档开始于:

{“ Key”:NumberLong(“ 2053249000001086”),...

我正在使用bsoncxx驱动程序在C ++ DLL中解析此文档。 此行引发异常: '''bsoncxx :: from_json(TheJsonDocument).view()'''

with What =“在” u“处解析错误,位置11:” SPECIAL_EXPECTED“:无法解析JSON文档”

换句话说:不支持NumberLong()标记。 我目前使用的解决方法是导出一个字符串,并使用DLL中的atoll()读取它。

有更好的主意吗?

解决方法

您生成的扩展json无效。正确的拼写是

{"$numberLong": <64-bit signed integer as a string>}

请参见https://github.com/mongodb/specifications/blob/master/source/extended-json.rst#conversion-table

您需要修复生产方才能产生正确的扩展json。