将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(或simplejson
2.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': ...