python 3.6无法将字符串转换为json

python 3.6无法将字符串转换为json,python,json,Python,Json,我正在尝试使用json.loads()将以下字符串转换为json: 我知道反斜杠可能会导致问题,正如我在类似的问题和答案中看到的那样。我尝试用双反斜杠替换反斜杠,如下所示: targetingConditions.replace('\\', '\\\\') 以及我在类似问题的答案中发现的任何其他可思考的选项或示例 代码是: json.loads(targetingConditions) 我得到的输出: Traceback (most recent call last): File "C:

我正在尝试使用json.loads()将以下字符串转换为json:

我知道反斜杠可能会导致问题,正如我在类似的问题和答案中看到的那样。我尝试用双反斜杠替换反斜杠,如下所示:

targetingConditions.replace('\\', '\\\\')
以及我在类似问题的答案中发现的任何其他可思考的选项或示例

代码是:

json.loads(targetingConditions)
我得到的输出:

Traceback (most recent call last):
  File "C:/Users/uesr/Google Drive/SHARED/Automation project/Automations/streamrail/tests.py", line 36, in <module>
tag_filters = json.loads(tag_filters)
  File "C:\Users\uesr\AppData\Local\Programs\Python\Python36-32\lib\json\__init__.py", line 354, in loads
return _default_decoder.decode(s)
  File "C:\Users\uesr\AppData\Local\Programs\Python\Python36-32\lib\json\decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\Users\uesr\AppData\Local\Programs\Python\Python36-32\lib\json\decoder.py", line 357, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 52 (char 51)
回溯(最近一次呼叫最后一次):
文件“C:/Users/uesr/Google Drive/SHARED/Automation project/Automations/streamrail/tests.py”,第36行,在
tag_filters=json.load(tag_filters)
文件“C:\Users\uesr\AppData\Local\Programs\Python\Python36-32\lib\json\\ u_init\u_.py”,第354行,加载
返回\u默认\u解码器。解码
文件“C:\Users\uesr\AppData\Local\Programs\Python\Python36-32\lib\json\decoder.py”,第339行,在decode中
obj,end=self.raw\u decode(s,idx=\u w(s,0.end())
文件“C:\Users\uesr\AppData\Local\Programs\Python\Python36-32\lib\json\decoder.py”,第357行,原始解码
从None引发JSONDecodeError(“预期值”,s,err.value)
json.decoder.JSONDecodeError:期望值:第1行第52列(字符51)

您的字符串不是有效的JSON。JSON只接受双引号,因此需要替换
targetingConditions

targetingConditions = '[{"filters":[{"key":"domain","rel":"neq","values":["science.howstuffworks.com", "conduit.com", "usatoday.com"]}]}]'

这允许您将所有内容都用单引号括起来,这意味着您不必转义任何内容。然后,您可以使用
json.loads将其作为python对象,或者直接将其写入文件。将来您可能会发现它很有用,或者使用预构建的

我认为您的json字符串不好,因为我试图用JavaScript解析它,并给了我这个错误

Uncaught SyntaxError: Unexpected token ' in JSON at position 51
at JSON.parse (<anonymous>)
at <anonymous>:1:6
它现在可以工作了,因为JSON的字符串用双引号而不是单引号括起来。单引号是python中表示字符串的可能方式,但对于JSON,只有双引号是唯一的方法


此外,您不需要将\替换为\\,因为\”表示双引号。

字符串是(几乎)JSON;您希望将其解码为Python数据结构。问题是单引号,它不是有效的JSON。字符串不是有效的JSON。JSON字符串不能单引号。字符串是如何生成的?如果它是像示例中那样硬编码的,为什么不直接硬编码列表本身?非常感谢非常感谢
Uncaught SyntaxError: Unexpected token ' in JSON at position 51
at JSON.parse (<anonymous>)
at <anonymous>:1:6
"[{\"filters\":[{\"key\":\"domain\",\"rel\":\"neq\",\"values\":[\"science.howstuffworks.com\", \"conduit.com\", \"usatoday.com\"]}]}]"