当使用带有json.loads的str加载字符串化列表时,出现ValueError。 例如
l = ['a', 'b']
l_str = str(l)
l_loaded = json.loads(l_str)
但是,这可行:
x = '["a", "b"]'
x_loaded = json.loads(x)
这是为什么?
答案 0 :(得分:4)
尝试打印出l_str
的值。您会看到
['a', 'b']
不是
["a", "b"]
与之比较的。
即使这种情况发生了,混淆这样的格式也不是一个好主意。如果有人出现并给您列表[None, object(), open("/usr/bin/python3", "r")]
怎么办? 那个字符串化后绝对不是有效的JSON。
答案 1 :(得分:3)
JSON语法不是Python语法。 JSON的字符串需要双引号。
答案 2 :(得分:3)
因为str()默认使用简单的引号,而JSON需要双引号。
有关str()的更多详细信息,请参见this