c++ - Boost JSON 序列化格式(boost 1.76.0)

标签 c++ json boost

boost json库中如何控制序列化格式。我正在尝试序列化这个对象,浮点数以科学计数法输出。如何以固定符号输出,如 12000000 而不是 1.2E7?和 0 而不是 0E0。
IE。

{"id":"de69041b-141b-4e01-b349-458f26f08259","price":3.343403E12,"qty":1.2E7}
{"id":"de69041b-141b-4e01-b349-458f26f08259","price":0E0,"qty":0E0}
这是一个以指数格式输出浮点数的最小程序(ubuntu 20.04,g++ 9.3.0,boost 1.76.0)
#include <iostream>
#include <boost/json/src.hpp>

using namespace std;
namespace bj = boost::json;

int main(void)
{
    bj::object obj1 = {
        {"id", 1},
        {"price", 3343403000000.00},
        {"qty", 13546000000000.00}
    };

    bj::object obj2 = {
        {"id", 2},
        {"price", 0.0},
        {"qty", 0.0}
    };
    cout << "obj1:" << bj::serialize(obj1) << endl;
    cout << "obj2:" << bj::serialize(obj2) << endl;

    return 0;
}
输出:
obj1:{"id":1,"price":3.343403E12,"qty":1.3546E13}
obj2:{"id":2,"price":0E0,"qty":0E0}

最佳答案

据我所知,这不是一个功能。在接受之前对图书馆进行审查时,在 boost 邮件列表上有很多讨论,因此,如果您愿意,可以查看文件以了解理由。
我的内存是该库专注于 boost 机器到机器传输的狭窄功能集(99% 的 JSON,例如在 Restful API 中)。这意味着专注于

  • 使其正确
  • 让它变得更快

  • 大约一天前出现了同样的事情:Is there a way to switch boost::json::serializer to beautified output? (我从文档介绍部分引用)

    关于c++ - Boost JSON 序列化格式(boost 1.76.0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68105736/

    相关文章:

    php - jQuery 显示隐藏基于序列化哈希的选择菜单

    C++让房间为老虎机程序工作

    c++ - 添加 2 个递归函数是如何工作的

    c++ - 用 Boost.Python 包装 Eigen 的 operator()() 时的重载分辨率

    c++ - 错误: 'unordered_set' is not a member of 'std'

    json - Go - 即时构建 struct/json

    json - Azure ARM 模板可变条件

    c++ - Boost::string_ref 查找算法

    c++ - 如何使用 Boost hana 递归创建 constexpr 列表?

    c++ - 大量 sp_counted_impl_p 对象