[python] 파이썬에서 사전에 문자열

그래서 나는 이것에 많은 시간을 보냈고 그것은 간단한 수정이 될 것 같습니다. 내 사이트에 사용자를 등록하기 위해 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그것을 de-serialize하기 위해 시도 했지만 비슷한 결과를 얻었습니다. 이견있는 사람? 대답은 간단해야한다고 생각하고 그냥 어리석은 것 같아요. 도움을 주셔서 감사합니다!



답변

이 데이터는 JSON입니다 ! Python 2.6 이상을 사용하는 경우 내장 json모듈을 사용하여 역 직렬화 할 수 있습니다 . 그렇지 않으면 우수한 타사 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


답변

ast.literal_eval 을 사용 하여 Python 리터럴을 평가합니다. 그러나 가지고있는 것은 JSON (예 : “true”)이므로 JSON deserializer를 사용하십시오.

>>> import json
>>> s = """{"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"}"""
>>> json.loads(s)
{u'first_name': u'John', u'last_name': u'Doe', u'verified': True, u'name': u'John Doe', u'locale': u'en_US', u'gender': u'male', u'email': u'jdoe@gmail.com', u'link': u'http://www.facebook.com/jdoe', u'timezone': -7, u'updated_time': u'2011-01-12T02:43:35+0000', u'id': u'123456789'}


답변