2017-01-04 22 views
0

Моя проблема: Я вызываю API-интерфейс сервера, а ответ - это файл JSON (с кодировкой base64) Я хотел бы преобразовать JSON в массив, и я бы хотел использовать этот массив для PyQt QListWidget.Python JSON to array & 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-словаре? Или есть ли более простое решение?

+1

Можете ли вы более подробно объяснить, что проблема с словарями python? – ekhumoro

ответ

1

Вы получили свой массив имен в data[resp]. Вы можете сделать это, чтобы добавить long_name S в список:

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 некоторые документы, которые могли бы помочь.

0

Вы можете просто загрузить данные прямо в список-виджетом, как это:

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

Unicode не является проблемой, так как json делает все преобразования для вас.

 Смежные вопросы

  • Нет связанных вопросов^_^