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

标签 javascript python json

所以我尝试使用 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/

相关文章:

javascript - Jquery 在保持滚动位置的同时更改现有元素的顺序

javascript - 重新加载页面后立即填写字段

javascript - 你能加密1(m)、加密2(E1(m)、解密1(E2(E1(m))) 和解密2(E2(m)) 吗?

python - 如何从 ip link show 命令中拆分行?

python - 如何将列表的一部分传递给不同的变量?

python - 为什么要使用虚拟插槽?

javascript - Jquery 可拖放事件委托(delegate) : stop & drop

json - 尝试通过提取读取json文件时出现错误

php - MySQL/PHP : How to get columns and associated data

javascript - Ajax 结果不是对象