我正在使用JSONcpp库并面临问题来创建包含/运算符的json(如date:02/12/2015)。以下是我的代码:
JSONNODE *n = json_new(JSON_NODE);
json_push_back(n, json_new_a("String Node", "02/05/2015"));
json_char *jc = json_write_formatted(n);
printf("%s\n", jc);
json_free(jc);
json_delete(n);
输出
{
"String Node":"02\/05\/2015"
}
在此处查看“\/
”日期,我们只希望日期为“/
”,因此我的预期输出应如下所示:
预期输出:
{
"String Node":"02/05/2015"
}
如何摆脱它?我们使用内置的库函数,我们无法修改库。
答案 0 :(得分:0)
json_new_a 方法将在您转到时转义您的字符串值 写下最后的字符串。
您在输出中面临的其他反斜杠是添加转义字符的结果。这实际上是一件好事,因为它可以防止意外和故意的错误。
我认为你的easies选项是用单\/
替换输出字符串中的所有/
次出现。我写了一个简单的程序:
#include <iostream>
#include <string>
#include <boost/algorithm/string/replace.hpp>
using namespace std;
int main()
{
//Here's the "json_char *jc" from your code
const char* jc = "02\\/05\\/2015";
//Replacing code
string str(jc);
boost::replace_all(str, "\\/", "/");
//Show result
cout << "Old output: " << jc << endl;
cout << "New output: " << str << endl;
}
BTW: libJSON实际上不是一个C ++库 - 它更多的C风格涉及许多低级操作,并且比更多的C ++ ish库更复杂和模糊。如果你想尝试,有一个很好的C ++ JSON库列表here。