2017-01-04 20 views
0

私の問題は次のとおりです: 私はサーバAPIを呼び出し、答えはJSONファイル(base64エンコード)です JSONを配列に変換したいと思います。 PyQt QListWidgetPython 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辞書の解析方法は? それとも単純な解決策がありますか?

+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

あなたはただまっすぐに、このようなリストウィジェットにデータをロードすることができますjsonはあなたのためのすべての変換を行いますので、

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

Unicodeは、問題ではありません。