mongo-cxx-driver加倍到json

时间:2016-12-04 14:54:13

标签: mongodb c++11 bson mongo-cxx-driver

在尝试使用MongoDB的C ++ 11驱动程序(版本3.1.0-rc0)时,下面一段代码的输出让我很困惑。

#include <iostream>

#include <bsoncxx/builder/stream/document.hpp>
#include <bsoncxx/json.hpp>

int main() {
  bsoncxx::builder::stream::document s;
  s << "x" << 1.0;

  std::cout << bsoncxx::to_json(s) << std::endl;

  return 0;
}

输出:

{ "x" : 1 }
  1. 这是预期的行为吗?
  2. 如何确保BSON双打在JSON中表示为浮点数?
  3. 配置: CentOS 7,gcc 6.2.0,mongo-c-driver 1.5.0,mongo-cxx-driver 3.1.0-rc0

1 个答案:

答案 0 :(得分:2)

看起来这种行为是libbson所固有的,它提供了JSON序列化。它在技术上是正确的,因为Javascript没有区分数字类型,但我理解你喜欢它如何保留小数部分,即使是0。

所以目前,您的问题的答案是

  1. 不期望,但并不奇怪。
  2. 目前,您无法通过mongocxx实现这一目标。您可以迭代BSON结构并使用另一个JSON库构建JSON文档。
  3. 我也会讨论libbson维护者的问题。 (更新:提交的票证CDRIVER-1945)。