最近在做项目的时候,需要在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"
}
]
}