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

Ser*_*ski 35 python google-app-engine json

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

{value: "82363549923gnyh49c9djl239pjm01223", id: 17893}
Run Code Online (Sandbox Code Playgroud)

这是错误格式的JSON字符串("id"和"value"必须在引号中),但无论如何我需要解析它.我尝试过simplejson和json-py,似乎无法设置它们来解析这些字符串.

我在Google App引擎上运行Python 2.5,因此任何基于C的解决方案(如python-cjson)都不适用.

输入格式可以更改为XML或YAML,与上面列出的JSON相对应,但我在项目中使用JSON并且在特定位置更改格式不会很好.

现在我已经切换到XML并成功解析数据,但期待任何允许我切换回JSON的解决方案.

myk*_*hal 46

因为YAML(> = 1.2)是JSON的超集,你可以这样做:

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

  • 还有一个问题:YAML在结肠后显然需要一个空间.然而,在大多数情况下,这就像一个魅力. (5认同)

nul*_*ull 21

你可以使用demjson.

>>> import demjson
>>> demjson.decode('{foo:3}')
{u'foo': 3}
Run Code Online (Sandbox Code Playgroud)