C++ 我不知道';我不想让JSON在C++;。如何解决这个问题?
我在JSON(libjson 6)方面遇到了一些问题。在我制作的聊天messenger中,服务器(由其他人制作)和桌面客户端之间存在冲突。我的客户机的JSON字符串总是转义撇号,即使我总是使用引号来分隔字符串。另一方面,服务器不希望撇号被转义,这会导致客户端发送C++ 我不知道';我不想让JSON在C++;。如何解决这个问题?,c++,json,escaping,C++,Json,Escaping,我在JSON(libjson 6)方面遇到了一些问题。在我制作的聊天messenger中,服务器(由其他人制作)和桌面客户端之间存在冲突。我的客户机的JSON字符串总是转义撇号,即使我总是使用引号来分隔字符串。另一方面,服务器不希望撇号被转义,这会导致客户端发送\'的情况,这显然会给服务器的解析器带来问题 解决这个问题的唯一方法是让我的程序停止在JSON消息中转义撇号。然而,在谷歌和文档中搜索之后,我没有找到任何东西。有人能告诉我怎么做吗?你可以在撇号之前去掉转义符 如果您从未在撇号之前进行过转
\'
的情况,这显然会给服务器的解析器带来问题
解决这个问题的唯一方法是让我的程序停止在JSON消息中转义撇号。然而,在谷歌和文档中搜索之后,我没有找到任何东西。有人能告诉我怎么做吗?你可以在撇号之前去掉转义符 如果您从未在撇号之前进行过转义(例如,
\\'
意思是“转义转义和未转义撇号”),或者您的库总是转义它们,只需将所有\'
替换为'
。有多种字符串替换函数,但这是一种简单的情况:
bool is_broken_escaped_apos(std::string const &data, std::string::size_type n) {
return n + 2 <= data.size()
and data[n] == '\\'
and data[n+1] == '\'';
}
void fix_broken_escaped_apos(std::string &data) {
for (std::string::size_type n = 0; n != data.size(); ++n) {
if (is_broken_escaped_apos(data, n)) {
data.replace(n, 2, 1, '\'');
}
}
}
bool已断开\u转义\u apos(std::string const&data,std::string::size\u type n){
根据返回n+2,不允许使用转义撇号。您是否已将此错误报告给libjson?