Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Json输出为单行_C++_Json_Boost - Fatal编程技术网

C++ Json输出为单行

C++ Json输出为单行,c++,json,boost,C++,Json,Boost,问题: 使用下面的示例代码,可以创建一个json字符串并按如下方式打印,我的要求是打印到一行(也可以打印到下面),没有空格或制表符,我可以使用boost来完成,还是需要显式地从字符串中删除 #include "boost/property_tree/json_parser.hpp" #include <boost/property_tree/ptree.hpp> #include <sstream> #include <iostream>

问题:

使用下面的示例代码,可以创建一个json字符串并按如下方式打印,我的要求是打印到一行(也可以打印到下面),没有空格或制表符,我可以使用boost来完成,还是需要显式地从字符串中删除

#include "boost/property_tree/json_parser.hpp"
#include <boost/property_tree/ptree.hpp>
#include <sstream>
#include <iostream>

    int main()
    {
            boost::property_tree::ptree root;
            root.put("sessionId", "123456");
            root.put("applicationName", "Sample_Appliation");
            root.put("applicationId", "null");
            root.put("logMessage", "Sample Message");
            root.put("loggingTime", "2020-03-17T13:26:45.013");
            std::stringstream ss;
            boost::property_tree::write_json(ss, root);
            std::cout << ss.str() << std::endl;
            return 0;
    }
预期:

{"sessionId": "123456","applicationName": "Sample_Appliation","applicationId": "null","logMessage": "Sample Message","loggingTime": "2020-03-17T13:26:45.013"}

boost::property_tree::write_json
有第三个参数名为
pretty
,默认值为
true
,只需将
false
作为第三个参数传递即可禁用pretty打印。

大警告:boost PropertyTree。然而,幸运的是,Boost最近采用了新技术,它实际上起到了作用:

#include <boost/json.hpp>
#include <iostream>

int main() {
    auto json = boost::json::parse(R"(
        {
            "sessionId": "123456",
            "applicationName": "Sample_Appliation",
            "applicationId": "null",
            "logMessage": "Sample Message",
            "loggingTime": "2020-03-17T13:26:45.013"
        })");

    std::cout << json;
}

使用
boost::property_tree::write_json(ss,root,false)输出为一行。
#include <boost/json.hpp>
#include <iostream>

int main() {
    auto json = boost::json::parse(R"(
        {
            "sessionId": "123456",
            "applicationName": "Sample_Appliation",
            "applicationId": "null",
            "logMessage": "Sample Message",
            "loggingTime": "2020-03-17T13:26:45.013"
        })");

    std::cout << json;
}
{"sessionId":"123456","applicationName":"Sample_Appliation","applicationId":"null","logMessage":"Sample Message","loggingTime":"2020-03-17T13:26:45.013"}