将JSON列表转换/处理为字典(或其他结构)

时间:2016-01-23 20:30:37

标签: python json validation dictionary data-cleaning

看起来很容易,但有一个braincramp试图完成这件事。我有一个API请求,它接收以下作为响应。

[{u'text': u'test ASDF', u'ts': u'1453578721.000005', u'user': u'U0K7P5EBG', u'team': u'T0K7K1KEH', u'type': u'message', u'channel': u'D0K7P9MCJ'}]

OR

[{u'type': u'hello'}]

我想处理该响应,检查密钥,数据等。我试图从列表中创建dict(),尝试加载为json()而我似乎无法获得将数据转换为易于处理的格式。

>>> a = [{u'text': u'test ASDF', u'ts': u'1453578721.000005', u'user': u'U0K7P5EBG', u'team': u'T0K7K1KEH', u'type': u'message', u'channel': u'D0K7P9MCJ'}]
>>> dict(a)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: dictionary update sequence element #0 has length 6; 2 is required
>>> a = [{u'text': u'test ASDF', u'ts': u'1453578721.000005', u'user': u'U0K7P5EBG', u'team': u'T0K7K1KEH', u'type': u'message', u'channel': u'D0K7P9MCJ'}]
>>> type(a)
<type 'list'>
>>> a[0]
{u'text': u'test ASDF', u'ts': u'1453578721.000005', u'user': u'U0K7P5EBG', u'team': u'T0K7K1KEH', u'type': u'message', u'channel': u'D0K7P9MCJ'}

我希望数据采用d [k]之类的简单格式,我可以检查现有的密钥并获取它们的值。一本字典。如何正确格式化这些数据?

d["text"] -> would yield 'test ASDF'
etc

TIA

2 个答案:

答案 0 :(得分:4)

你拥有的JSON对象是一个字典列表(至少一个),所以你只需要抓住列表的第一个元素。

d = a[0]
d['text']

答案 1 :(得分:1)

你非常接近。这应该有效:

dict(a[0])