擅长:python、mysql、java
<p>您的文件无效:JSON中没有<code>\y</code>这样的转义序列,并且必须对空的反斜杠本身进行转义:<code>\\</code>。在</p>
<p>如果可以,最简单的解决方案是通过转义反斜杠来修复文件,使其成为有效的JSON。在</p>
<p>如果由于某些原因您无法执行此操作,则可以为<code>json.loads()</code>编写一个包装器来捕获此特定错误并修补源文本:</p>
<pre><code>import json
from json.decoder import JSONDecodeError
def permissive_json_loads(text):
while True:
try:
data = json.loads(text)
except JSONDecodeError as exc:
if exc.msg == 'Invalid \\escape':
text = text[:exc.pos] + '\\' + text[exc.pos:]
else:
raise
else:
return data
</code></pre>
<p>为了简单起见,上面的函数使用字符串而不是文件。在</p>
<p>这也是一种“大锤敲碎螺母”的方法,反复尝试加载整个JSON文档,并在发现任何未被转义的反斜杠时修复它们,这对于很少有问题的小型JSON文档来说是合理的,如果你处理这些大的反斜杠的文档不太合适的话。在</p>
<p>这就是它的作用:</p>
^{pr2}$
<p>在您的例子中,您可以将文件读入一个字符串,然后调用该函数:</p>
<pre><code> dbconn = "C:\abc.json"
with open(dbconn) as conn_file:
conn_doc = conn_file.read()
conn = permissive_json_loads(conn_doc)
</code></pre>