2017-01-04 3 views
0

Mein Problem ist: Ich rufe die Server-API und die Antwort ist eine JSON-Datei (mit Base64 encode) Ich möchte JSON in Array konvertieren und ich möchte dieses Array zu verwenden das PyQt QListWidget.Python JSON zu Array & PyQt QListWidget

PyQt Liste Beispiel:

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

Dies ist mein Code Base64 dekodieren nach:

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

Dies ist die JSON (Daten):

{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'}]} 

Das ist mein PyQt Code :

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

Mein Problem: Ich möchte JSON in Array konvertieren, aber diese JSON-Datei ist im Unicode-Format. Mein Plan: Wenn ich das Array habe, kenne ich die Anzahl der Arrays. Ich kann die Array-Elemente zur PyQt-Liste hinzufügen. (Mein größtes Problem ist Python-Wörterbuch) Aber wie konvertiert man JSON zu Array? Oder wie in Python-Wörterbuch zu analysieren? Oder gibt es eine einfachere Lösung?

+1

Können Sie das Problem mit Python-Wörterbüchern klarer erklären? – ekhumoro

Antwort

1

Sie haben Ihr Array von Namen in data[resp]. Sie können dies tun long_name s zu Ihrer Liste hinzuzufügen:

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 ist einige Dokumentation, die helfen könnten.

0

Sie können nur die Daten direkt in die Liste-Widget wie folgt laden:

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

Unicode kein Problem ist, weil json macht die ganze Konvertierung für Sie.