如何用Python解析稍有错误的JSON?

56 投票
5 回答
24150 浏览
提问于 2025-04-15 17:11

我有一个来自外部输入源的JSON字符串:

{value: "82363549923gnyh49c9djl239pjm01223", id: 17893}

这个JSON字符串格式不正确(“id”和“value”必须用引号包起来),但我还是需要解析它。我试过simplejson和json-py,发现它们无法处理这样的字符串。

我在Google App Engine上使用的是Python 2.5,所以像python-cjson这样的基于C的解决方案不适用。

输入格式可以改成XML或YAML,除了上面提到的JSON,但我在项目中使用的是JSON,特定地方改格式并不好。

现在我已经切换到XML,并成功解析了数据,但我还是希望能找到一个解决方案,让我可以重新使用JSON。

5 个回答

2

你可以先用一个字符串解析器来解决这个问题,正则表达式可以做到这一点,只要这个问题和JSON的复杂程度差不多就行。

26

你可以使用 demjson 这个工具。

>>> import demjson
>>> demjson.decode('{foo:3}')
{u'foo': 3}
65

因为YAML(版本1.2及以上)是JSON的超集,所以你可以这样做:

>>> import yaml
>>> s = '{value: "82363549923gnyh49c9djl239pjm01223", id: 17893}'
>>> yaml.load(s)
{'id': 17893, 'value': '82363549923gnyh49c9djl239pjm01223'}

撰写回答