遍历django中的JSON字段

时间:2012-05-21 14:13:16

标签: python django json django-socialauth

使用django-social-auth,您可以捕获某些详细信息,因此Dropbox用户extra_data如下所示

{"access_token": "oauth_token_secret=XXXXXXXXXXXX&oauth_token=YYYYYYYYYYY", "7200": null, "id": null}

models.py设置如下。

class UserSocialAuth(models.Model):
    """Social Auth association model"""
    user = models.ForeignKey(User, related_name='social_auth')
    provider = models.CharField(max_length=32)
    uid = models.CharField(max_length=255)
    extra_data = JSONField(blank=True)

如何单独访问oauth_token和oauth_token_secret?

2 个答案:

答案 0 :(得分:1)

使用simplejson模块解析JSON数据:

from django.utils.simplejson import loads

data = {"access_token": "oauth_token_secret=XXXXXXXXXXXX&oauth_token=YYYYYYYYYYY", "7200": null, "id": null} tokens = parse_qs(loads(data)['access_token'])

json_dict = loads(data)
access_token = json_dict['access_token']

然后使用Jan建议您解析存储在access_token中的查询字符串:

from urlparse import parse_qs

tokens = parse_qs(access_token)

print tokens['oauth_token_secret']
print tokens['oauth_token']

答案 1 :(得分:0)

要解析access_token,您可以使用http://docs.python.org/library/urlparse.html#urlparse.parse_qs

  

解析作为字符串参数给出的查询字符串(类型为application / x-www-form-urlencoded的数据)。数据作为字典返回。字典键是唯一的查询变量名称,值是每个名称的值列表。