Строка в словарь в Python - PullRequest
       18

Строка в словарь в Python

99 голосов
/ 07 февраля 2011

Так что я потратил много времени на это, и мне кажется, что это должно быть простое исправление.Я пытаюсь использовать аутентификацию Facebook для регистрации пользователей на моем сайте, и я пытаюсь сделать это на стороне сервера.Я достиг точки, где я получаю свой токен доступа, и когда я захожу на:

https://graph.facebook.com/me?access_token=MY_ACCESS_TOKEN

, я получаю информацию, которую ищу, в виде строки, которая выглядит следующим образом:

{"id":"123456789","name":"John Doe","first_name":"John","last_name":"Doe","link":"http:\/\/www.facebook.com\/jdoe","gender":"male","email":"jdoe\u0040gmail.com","timezone":-7,"locale":"en_US","verified":true,"updated_time":"2011-01-12T02:43:35+0000"}

Похоже, я должен просто иметь возможность использовать dict(string), но я получаю эту ошибку:

ValueError: dictionary update sequence element #0 has length 1; 2 is required

Итак, я попытался использовать Pickle, но получил эту ошибку:

KeyError: '{'

Я пыталсяиспользуя django.serializers для десериализации, но результаты были схожими.Какие-нибудь мысли?Я чувствую, что ответ должен быть простым, и я просто глупый.Спасибо за любую помощь!

Ответы [ 2 ]

189 голосов
/ 07 февраля 2011

Эти данные JSON !Вы можете десериализовать его, используя встроенный json модуль , если вы используете Python 2.6+, в противном случае вы можете использовать отличный сторонний simplejson модуль .

import json    # or `import simplejson as json` if on Python < 2.6

json_string = u'{ "id":"123456789", ... }'
obj = json.loads(json_string)    # obj now contains a dict of the data
15 голосов
/ 07 февраля 2011

Используйте ast.literal_eval для оценки литералов Python.Однако у вас есть JSON (например, обратите внимание на «true»), поэтому используйте десериализатор JSON.

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