C++ Json输出为单行
问题: 使用下面的示例代码,可以创建一个json字符串并按如下方式打印,我的要求是打印到一行(也可以打印到下面),没有空格或制表符,我可以使用boost来完成,还是需要显式地从字符串中删除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>
#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"}