当我们发送字符串时,往往需要发送“ 引号这样的字符。
但是这是对于发送引号的情况。这相当于剥离一层。那么我们只需要在“号前面加一个反斜杠\。
但是在一些问题中,如在单片机向esp8266发送AT指令,发送json数据时,会出现剥离两次的情况。
单片机向esp发送,剥离一层。
esp向网络发送,又剥离一层。
现在的情况即是。我们本是一个字符串。
而我们这个字符串的内容是一个字符串。
而这个字符串中又有引号引起来的东西,而为了防止匹配错误,他做了转义。
即是内容中,的字符串,存在转义。
举个例子
"{\"id\":\"123\"\,\"params\":{\"temp\":{\"value\":16\}}}"
我们要发送的字符串的内容长这个样子。
此时,我们需要用引号将他们包括起来。
对于外层的引号,我们可以用一次转义来解决。
但是对于内层的引号,因为他本身需要一个转义,我们需要再来一次转义。
如果你是这样的想的,那么久掉入了陷阱当中。
对于这个东西,我们应该将之当成一个个字符。
发送应该想办法发送的是一个\“
对于这样一个东西,我们应该分别看待,
先发送一个\ ,所以 发的是\\,这样进行转义。
然后再发送一个" , 所以发的是\'
所以合起来是 \\\"
这样的思想,是,我们只将它们当成字符串,只关心下一层的内容,而不关心再多一层的数据转义问题。
利用这样的思想,无论是字符串嵌套转发多少次,我们都可以一层一层推及上来。