Python JSON 到数组 & PyQt QListWidget

Python JSON to array & PyQt QListWidget

我的问题是: 我调用服务器 API,答案是 JSON 文件(使用 base64 编码) 我想将 JSON 转换为数组,我想将此数组用于 PyQt QListWidget。

PyQt 列表示例:

Line1: TEST1-TEST NAME1
Line2: TEST2-TEST NAME2
Line3: TEST3-TEST NAME3
etc.

这是我的代码 base64 解码之后:

text_json=base64.b64decode(response)
data=json.loads(text_json)
print(data)

这是JSON(数据):

{u'resp': [{u'short_name': u'TEST1', u'long_name': u'TEST NAME1'}, 
{u'short_name': u'TEST2', u'long_name': u'TEST NAME2'}, 
{u'short_name': u'TEST3', u'long_name': u'TEST NAME3'}]}

这是我的 PyQt 代码:

self.List=QtGui.QListWidget(self)
self.List.resize(500,500)
self.List.move(0,0)
self.List.addItem()
self.List.show()

我的问题: 我想将 JSON 转换为数组,但此 JSON 文件是 unicode 格式。 我的计划:如果我有阵列,我知道阵列的数量。我可以将数组元素添加到 PyQt 列表中。 (我最大的问题是Python字典)但是如何将JSON转换成数组呢?或者如何在 Python 字典中解析? 或者有什么更简单的解决方案吗?

您在 data[resp] 中获得了您的姓名数组。您可以这样做以将 long_name 添加到您的列表中:

self.List=QtGui.QListWidget(self)
self.List.resize(500,500)
self.List.move(0,0)
for person in data["resp"]:
    item = QtGui.QListWidgetItem(person["long_name"])
    self.List.addItem(item)
self.List.show()

Here 是一些可能有用的文档。

您可以像这样直接将数据加载到列表小部件中:

for item in data['resp']:
    self.List.addItem('%(short_name)s - %(long_name)s' % item)

Unicode 不是问题,因为 json 会为您完成所有转换。