python:除了内置的json之外,还有更强大的json版本吗?

时间:2010-09-15 18:07:27

标签: python json

我使用内置的json用于python 2.6。解析像这样的jsons我遇到了很多麻烦:

{
 name: 'some name'
 value: 'some value'
}

我发现了两个原因 -

  1. '不起作用。您需要"
  2. 字典的键需要是字符串。 I.e "name" / "value"
  3. 我错过了什么吗?有没有办法使用json包解析这种字典?有没有其他python包可以解析这个?

    由于

3 个答案:

答案 0 :(得分:4)

我认为你想要的不是一个“更强大”的解析器,而是一个解析破碎代码的破解者。见the standard

具体地,

  • 对象的键被定义为字符串

  • 字符串被定义为“”或“字符”,其中字符具有非常明显的含义

在互联网上有一些地方可以看到道格拉斯·克罗克福德(Douglass Crockford)就这种情况做出半诙谐的评论。它与非JavaScript语言的兼容性有关。具体来说,你不能拥有

{name :'some name', value: 'some value'} 

作为python中的dict,除非namesome value存在预先存在的可扩展变量;

破解者一般都很糟糕。只要看看浏览器中破解的HTML解析器所造成的混乱,任何白痴都可以创建一个网站。编写所有这些RFC的那个家伙错了:最好严格遵守你所发布的你所接受的内容。

答案 1 :(得分:2)

问题不在于Python模块,问题在于你的字符串,它可能是你说的,但不是JSON,所以它不能被JSON解析器解析。

如果它是JSON,它看起来像:

{"name":"some name", "value":"some value"}

因此,它不是Python模块的问题。这就像要求“更强大的python编译器”,因为C-Python无法解析:

using json
json.loads(my_string)

显然第一行只是而不是Python ,所以我们不能要求Python解释它。

现在,如果你想解析那个字符串,我建议你:使它成为一个JSON字符串或使用Pyparsing来编写一个快速而肮脏的解析器(我保证它会比不到50更好地工作)线)。

干杯,

涓。

答案 2 :(得分:0)

有:

  • simplejson,“是Python 2.6和Python 3.0附带的json库的外部维护开发版本,但保持与Python 2.5的向后兼容性。”
  • cjson

(不确定他们是否会解析损坏的JSON。)