Конвертировать объект результатов Google (чистый JS) в объект Python - PullRequest
2 голосов
/ 29 апреля 2010

Поэтому я пытаюсь использовать API подсказок Google Map для запроса подсказок названий мест. К сожалению, я не могу найти документы для этого бита.

Вот пример 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.

Любые идеи, пожалуйста.

Ответы [ 3 ]

2 голосов
/ 29 апреля 2010

Тьфу, это действительно довольно раздражает. Это буквальный JavaScript, но это - бессмысленно - не JSON.

Теоретически предполагается, что вы сможете импортировать json.decoder.JSONDecoder из stdlib Python (или simplejson pre-2.6, что то же самое) и создать его подкласс, а затем передать этот подкласс в json.loads для переопределения поведения декодера , В действительности это неосуществимо, поскольку json.decoder полон глобальных перекрестных ссылок, которые сопротивляются подклассам, и бит, который вам нужно изменить, - это удар по лицу в середине def JSONObject.

Так что, вероятно, стоит взглянуть на другие библиотеки Python JSON. Я нашел этот , который в «нестрогом» режиме будет анализировать имена свойств объекта без кавычек:

>>> import demjson
>>> demjson.decode('{suggestion:[{query:"London",interpretation: ...')
{u'suggestion': [{u'query': u'London', u'operation': 2, u'interpretation': ...
2 голосов
/ 29 апреля 2010

Я бы попытался покопаться, чтобы получить JSON, но, если бы не было этого маленького чудовища, о котором кто-то неизбежно закричит:

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

notjson = '{...}'

data = eval(notjson, {}, Iden())
0 голосов
/ 24 августа 2014
import demjson
demjson.decode(google.js)

Я обнаружил это при попытке проанализировать данные опции JSON в Google Finance, которые, как отмечают многие, не соответствуют JSON.

demjson спас меня от написания отвратительной строки регулярного выражения; это просто работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...