Lun*_*irl 106 python string json dictionary facebook
所以我花了很多时间在这上面,在我看来它应该是一个简单的修复.我正在尝试使用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反序列化它,但有类似的结果.有什么想法吗?我觉得答案必须简单,我只是愚蠢.谢谢你的帮助!
Cam*_*ron 203
这个数据是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
Run Code Online (Sandbox Code Playgroud)
Fre*_*urk 18
使用ast.literal_eval来评估Python文字.但是,你拥有的是JSON(例如,注意"true"),因此请使用JSON反序列化器.
>>> 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'}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
143087 次 |
| 最近记录: |