【问题标题】:How to output boost property tree as JSON encoded string?如何将 boost 属性树输出为 JSON 编码字符串?
【发布时间】:2016-04-26 14:44:34
【问题描述】:

有时创建 JSON 编码的字符串来表示和交换数据非常有用。 将 Boost 属性树编码为 JSON 字符串的最佳方法是什么?

【问题讨论】:

    标签: json boost boost-propertytree


    【解决方案1】:

    这是执行该任务的示例代码:

    #include <boost/property_tree/ptree.hpp>
    #include <boost/property_tree/json_parser.hpp>
    #include <boost/optional.hpp>
    #include <iostream>
    #include <sstream>
    #include <cstdlib>
    
    int main()
    {
        boost::property_tree::ptree pt;
        pt.put("Test", "string");
        pt.put("Test2.inner0", "string2");
        pt.put("Test2.inner1", "string3");
        pt.put("Test2.inner2", 1234);
    
        std::stringstream ss;
        boost::property_tree::json_parser::write_json(ss, pt);
    
        std::cout << ss.str() << std::endl;
    
        return 0;
    }
    

    使用 GCC 编译此代码:

    g++ main.cpp -lboost_system -o SamplePT_JSON
    

    这是预期的输出:

    {
        "Test": "string",
        "Test2":
        {
            "inner0": "string2",
            "inner1": "string3",
            "inner2": "1234"
        }
    }
    

    【讨论】:

    • 当您将 int 转换为带引号的字符串时,一些 REST API 会变得非常糟糕。有没有办法用属性树的 write_json 取消引用 1234?
    猜你喜欢
    • 2012-07-09
    • 1970-01-01
    • 1970-01-01
    • 2016-04-05
    • 2011-10-26
    • 1970-01-01
    • 2012-07-15
    • 2015-09-17
    相关资源
    最近更新 更多