擅长:python、mysql、java
<p><a href="https://tools.ietf.org/html/rfc7159" rel="nofollow">JSON standard</a>定义了一组特定的<a href="https://tools.ietf.org/html/rfc7159#section-7" rel="nofollow">valid 2-character escape sequences</a>:<code>\\</code>,<code>\/</code>,<code>\"</code>,<code>\b</code>,<code>\r</code>,<code>\n</code>,<code>\f</code>和{<cd8>},以及一个4个字符的转义序列来定义任何Unicode代码点,<code>\uhhhh</code>(<code>\u</code>加4个十六进制数字)。反斜杠和其他字符的任何其他序列都是无效的JSON</em>。在</p>
<p>如果您有一个JSON源代码,否则您无法修复,唯一的办法就是删除无效序列,就像您对<code>str.replace()</code>所做的那样,即使它有点脆弱(当引号前面有一个偶数的反斜杠序列时,它将<em>中断</em>)。在</p>
<p>您也可以使用正则表达式,删除有效序列中未使用的任何反斜杠:</p>
<pre><code>fixed = re.sub(r'(?<!\\)\\(?!["\\/bfnrt]|u[0-9a-fA-F]{4})', r'', inputstring)
</code></pre>
<p>这不会捕获奇数反斜杠序列,如<code>\\\</code>,但会捕获其他任何内容:</p>
^{pr2}$