将Google结果对象(纯js)转换为Python对象


问题内容

因此,我尝试使用Google Map建议API请求地名建议。不幸的是我找不到这方面的文档。

这是一个示例URI:

http://maps.google.com/maps/suggest?q=lon&cp=3&ll=55.0,-3.5&spn=11.9,1.2&hl=zh-
CN&gl=uk&v=2

返回:

{suggestion:[{query:"London",...

我想在python(2.5)中使用它。现在在正确的JSON中,键周围会出现这样的引号:

{"suggestion":[{"query":"London",...

我本可以使用simplejson之类的东西,但由于它有点卡住了。

这里有两种可能的解决方案:我可以访问API代码并找到返回正确JSON的选项,或者在python中进行操作。

有什么想法请。


问题答案:

gh,那确实很烦人。这是JavaScript文字,但毫无意义的不是JSON。

从理论上讲,您应该能够json.decoder.JSONDecoder从Python
stdlib(或simplejson2.6之前的版本,相同)中导入并对其进行子类化,然后将该子类传递给以json.loads覆盖解码器行为。实际上,这实际上是不可行的,因为json.decoder充满了抵抗子类化的全局交叉引用,并且您需要更改的位是中间的slap
bang def JSONObject

因此,可能值得看看其他Python
JSON库。我发现这一个,其在“非严格”模式,将解析不带引号的对象属性的名称:

>>> import demjson
>>> demjson.decode('{suggestion:[{query:"London",interpretation: ...')
{u'suggestion': [{u'query': u'London', u'operation': 2, u'interpretation': ...