【发布时间】:2023-04-11 05:11:01
【问题描述】:
使用 django-social-auth 从 facebook 获取用户数据,它返回 unicode 字符串中的字典列表。例如,一个用户的 response.get('education') 正在返回:
u"[{u'school': {u'id': u'12345', u'name': u'Joe Thiesman High'}, u'type': u'High School'}, {u'school': {u'id': u'23456', u'name': u'Joe 蒙大拿大学'}, u'type': u'College'}]"
我想将其从字符串转换为可以提取数据的列表,但我很挣扎。建议使用类似问题 (String to Dictionary in Python) 的答案:
foo=json.loads(字符串)
但这失败了,因为它是一个包含嵌套字典的列表,每个学校 1 个,而不仅仅是字典,而且它似乎变得混乱。我得到的错误是:
ValueError:额外数据:第 1 行第 73 列 - 第 1 行第 144 列
最初,我得到一个 ValueError: Expecting Property Name: line 1, column 2,直到我使用 string.replace() 将“与”交换,反之亦然。这确实消除了那个错误,但是如果这不是正确的解决方案,我会提到。
【问题讨论】:
-
u'type'前面好像少了一个逗号:u'College'
-
最大的问题是那不是有效的 JSON。除了缺少逗号之外,包含的字符串需要有双引号,而不是单引号。 @另见stackoverflow.com/questions/4162642/…
-
@adamnfish 我在这里手动输入但错过了。修复了@cwallenpoole 奇怪,这就是它从 facebook 返回的方式,不知道为什么它不是有效的 JSON。