0
a1='[{"v1":"value"}, {"v1":"value"}, ]' 
b1=json.loads(a1) 

创建异常,但是。

a2='[{"v1":"value"}, {"v1":"value"}]' 
b2=json.loads(a2) 

不创建任何异常/错误。有人能帮我理解为什么第一个例子中的最后一个逗号是一个大问题吗?

我如何在不修改数据的情况下仍然转换第一个示例?

4

2 回答 2

1

这是因为您的 a1 JSON 无法使用:

来自 JSONLint:

Parse error on line 7:
..."value"    },    ]
--------------------^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '['

a2 JSON 是有效的,因此也不例外。

编辑:

Bogdan 在评论中的 'quick n dirty' 解决方案将允许您在保留相同代码的同时静音异常

于 2013-09-17T04:57:06.427 回答
1

JSON 语法不允许使用终端逗号,因此解析器正确地拒绝了它。

附带说明一下,此语法也不是有效的 Javascript。一些浏览器会接受它,但他们这样做的行为超出了标准。

于 2013-09-17T04:57:34.570 回答