Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我不知道';我不想让JSON在C++;。如何解决这个问题?_C++_Json_Escaping - Fatal编程技术网

C++ 我不知道';我不想让JSON在C++;。如何解决这个问题?

C++ 我不知道';我不想让JSON在C++;。如何解决这个问题?,c++,json,escaping,C++,Json,Escaping,我在JSON(libjson 6)方面遇到了一些问题。在我制作的聊天messenger中,服务器(由其他人制作)和桌面客户端之间存在冲突。我的客户机的JSON字符串总是转义撇号,即使我总是使用引号来分隔字符串。另一方面,服务器不希望撇号被转义,这会导致客户端发送\'的情况,这显然会给服务器的解析器带来问题 解决这个问题的唯一方法是让我的程序停止在JSON消息中转义撇号。然而,在谷歌和文档中搜索之后,我没有找到任何东西。有人能告诉我怎么做吗?你可以在撇号之前去掉转义符 如果您从未在撇号之前进行过转

我在JSON(libjson 6)方面遇到了一些问题。在我制作的聊天messenger中,服务器(由其他人制作)和桌面客户端之间存在冲突。我的客户机的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?