我试图用json.loads():
targetingConditions = "[{\"filters\":[{\"key\":\"domain\",\"rel\":\"neq\",\"values\":['science.howstuffworks.com', 'conduit.com', 'usatoday.com']}]}]"
我知道反斜杠可能会导致问题,正如我在类似问题和答案中看到的那样。我试过用这样的双反斜杠代替反斜杠:
^{pr2}$以及我在类似问题的答案中发现的任何其他可思考的选择或例子。在
代码是:
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)
我认为您的json字符串不好,因为我试图用JavaScript解析它,并给出了这个错误
但是如果你把绳子改成
^{pr2}$现在它可以工作了,因为JSON的字符串用双引号而不是单引号括起来。在python中,单引号是表示字符串的可能方式,但对于JSON,只有双引号的方法。在
也不需要用\\替换\因为\“表示双引号。在
您的字符串不是有效的JSON。JSON只接受双引号,因此需要替换
targetingConditions
中的单引号这允许您用单引号将所有内容括起来,这意味着您不必转义任何内容。然后可以使用
json.loads
将其作为python对象,或者直接将其写入文件。您可能会发现JSON specification在将来很有用,或者使用预构建的JSON validator相关问题 更多 >
编程相关推荐