所以我尝试使用 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=en&gl=uk&v=2
返回:
{suggestion:[{query:"London",...
我想在 python (2.5) 中使用它。现在,在正确的 JSON 中,键周围会有引号,如下所示:
{"suggestion":[{"query":"London",...
我本来可以使用 simplejson 或其他东西,但事实上我有点卡住了。
这里有两种可能的解决方案;我可以访问 API 代码并找到返回正确 JSON 的选项,或者在 python 中执行此操作。
请提出任何想法。
最佳答案
呃,这确实很烦人。它是一个 JavaScript 文字,但它 —“毫无意义”— 不是 JSON。
理论上,您应该能够从 Python stdlib(或 2.6 之前的 simplejson
,这是相同的)和子类导入 json.decoder.JSONDecoder
然后将该子类传递给 json.loads 来覆盖解码器行为。实际上,这实际上并不可行,因为 json.decoder
充满了抵制子类化的全局交叉引用,而您需要更改的部分是 def JSONObject< 中间的 slap bang/
.
因此,其他 Python JSON 库可能值得查看。我发现this one在“非严格”模式下,它将解析不带引号的对象属性名称:
>>> import demjson
>>> demjson.decode('{suggestion:[{query:"London",interpretation: ...')
{u'suggestion': [{u'query': u'London', u'operation': 2, u'interpretation': ...
关于javascript - 将Google结果对象(纯js)转换为Python对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2735801/