JSON格式化输出(C++版)

最近在做项目的时候,需要在C++里面将接收到的json数据进行格式化输出,所以就写了一个json格式化输出的函数。

正常情况下返回的json数据格式如下:
{"name":"C++","members":[{"id":1,"name":"Tom","mail":"Tom@qq.com"},{"id":2,"name":"Jerry","mail":"Jerry@qq.com"}]}

这里正常是输出一行的。
如何将在C++里将json格式化输出,这里可以编写一个专门用于json格式化的函数:

string formatJson(string json)
{
	string result = "";
	int level = 0;
	for (string::size_type index = 0; index < json.size(); index++)
	{
		char c = json[index];

		if (level > 0 && '\n' == json[json.size() - 1])
		{
			result += getLevelStr(level);
		}

		switch (c)
		{
		case '{':
		case '[':
			result = result + c + "\n";
			level++;
			result += getLevelStr(level);
			break;
		case ',':
			result = result + c + "\n";
			result += getLevelStr(level);
			break;
		case '}':
		case ']':
			result += "\n";
			level--;
			result += getLevelStr(level);
			result += c;
			break;
		default:
			result += c;
			break;
		}

	}
	return result;
}

string getLevelStr(int level)
{
	string levelStr = "";
	for (int i = 0; i < level; i++)
	{
		levelStr += "\t"; //这里可以\t换成你所需要缩进的空格数
	}
	return levelStr;

}
上述的数据经过函数处理后的效果:
{
        "name":"C++",
        "members":[
                {
                        "id":1,
                        "name":"Tom",
                        "mail":"Tom@qq.com"
                },
                {
                        "id":2,
                        "name":"Jerry",
                        "mail":"Jerry@qq.com"
                }
        ]
}
  • 7
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
要输出格式漂亮的文本,你可以使用C++json库来处理和格式化JSON数据。对于现代C++,我推荐使用RapidJSON库。以下是一个示例代码,演示如何使用RapidJSONJSON数据格式化为漂亮的文本: ```cpp #include <iostream> #include <string> #include <sstream> #include "rapidjson/document.h" #include "rapidjson/prettywriter.h" std::string formatJson(const std::string& jsonString) { rapidjson::Document document; document.Parse(jsonString.c_str()); rapidjson::StringBuffer buffer; rapidjson::PrettyWriter<rapidjson::StringBuffer> writer(buffer); document.Accept(writer); return buffer.GetString(); } int main() { std::string jsonString = "{\"name\":\"John\",\"age\":30,\"city\":\"New York\"}"; std::string formattedJson = formatJson(jsonString); std::cout << formattedJson << std::endl; return 0; } ``` 在上面的示例中,我们定义了一个`formatJson`函数,它接受一个JSON字符串作为输入,并返回格式化后的JSON字符串。我们使用RapidJSON的`Document`来解析JSON,并使用`PrettyWriter`来将解析后的JSON重新格式化为漂亮的文本。 你可以将你的JSON字符串传递给`formatJson`函数,并将格式化后的结果打印出来。这样,你就可以得到一个格式漂亮的文本。 请注意,在使用此示例代码之前,你需要先安装RapidJSON库,并将其包含在你的项目中。你可以从RapidJSON的官方网站(https://rapidjson.org/)下载并阅读相关文档以获取更多信息。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值