簡體   English   中英

將Google結果對象(純js)轉換為Python對象

[英]Convert Google results object (pure js) to Python object

因此,我正在嘗試使用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中進行操作。

有什么想法。

我會嘗試四處尋找以獲取JSON,但是如果沒有這種怪異,有人會不可避免地對我大喊:

class Iden(object):
  def __getitem__(name, index):
    return index

notjson = '{...}'

data = eval(notjson, {}, Iden())

gh,那確實很煩人。 這是JavaScript文字,但毫無意義的不是JSON。

從理論上講,您應該能夠從Python stdlib(或simplejson 2.6之前的版本,相同)導入json.decoder.JSONDecoder並將其子類化,然后將該子類傳遞給json.loads以覆蓋解碼器行為。 實際上,這實際上並不可行,因為json.decoder充滿了抵抗子類化的全局交叉引用,而您需要更改的位是def JSONObject中間的slap bang。

因此,可能值得看看其他Python JSON庫。 我發現這一個 ,其在“非嚴格”模式,將解析不帶引號的對象屬性的名稱:

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

我在嘗試分析Google財經選項“ JSON”數據時發現了這一點,很多人注意到,這些數據不符合JSON。

demjson使我免於編寫令人討厭的regex字符串; 它只是工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM