2013-09-01 15 views
0

我使用的格式返回這樣一個JSON字符串的API:我如何在Python中處理這個問題?

{u'inboxMessages': [{u'fromAddress': 
u'BM-2DBYkhiBZCyrBa8J7gFRGrFRSGqtHgPtMvwQ', u'toAddress': 
u'BM-2DC7SCTj2gzgrGgMvUCARdrfrsgLyz3iMyN3', u'read': 0, u'msgid': 
u'36659a4453e12a085d8fbfeefc58da8fb23f38bfb0984c2983e0ddc31c776038', 
u'receivedTime': u'1377986524', u'message': 
u'dGVzdGluZyAxIDIgMw0KDQotLQ0KSm9obiBQZXJyeQ0KDQo=\n', u'encodingType': 
2, u'subject': u'bWVzc2FnZSAx\n'}, {u'fromAddress': 
u'BM-2DBYkhiBZCyrBa8J7gNBrngtgttHgPtMvwQ', u'toAddress': 
u'BM-2DC7SCTj2gzgrGgMvUCARdCrfthyz3iMyN3', u'read': 0, u'msgid': 
u'2ebe10c788ed47c6c122e3b43ae6642cb15077536c7056ed5088ab2d339c4630', 
u'receivedTime': u'1377986557', u'message': 
u'VGhpcyBpcyB0aGUgbmV4dCB0ZXN0DQoNCi0tDQpKb2huIFBlcnJ5DQoNCg==\n', 
u'encodingType': 2, u'subject': u'dGVzdGluZyAzIDQgNQ==\n'}, 
{u'fromAddress': u'BM-2DBYkhithgyhyrBa8J7gNBrnSGqtHgPtMvwQ', 
u'toAddress': u'BM-2DC7SCTj2gzgrtgtgMvUCARdCogLyz3iMyN3', u'read': 0, 
u'msgid': 
u'91dffd421c898aab0ffc43a363869a580abec6fa851aa6cf7cefe98263f96c81', 
u'receivedTime': u'1377986599', u'message': 
u'VGhpcyBpcyB0aGUgM3JkIHRlc3QNCg0hjj0NCkpvaG4gUGVycnkNCg0K\n', 
u'encodingType': 2, u'subject': u'dGhpcyBpcyB0aGUgM3Jk\n'}]} 

我試圖通過每一個這些環,並列出了「FROMADDRESS領域。到目前爲止,我可以列出如下第一個條目:

data = json.loads(api.getAllInboxMessages()) # The API call 
print data['inboxMessages'][1]['fromAddress'] 

上述代碼將從第一條消息中檢索fromAddress。但是我怎樣才能找回其他人呢?我知道答案是「只是循環到索引的頂部」,但我怎麼知道索引的頂部是什麼?

我應該如何處理這個來處理這個字符串中的所有消息?

謝謝! 安東尼

回答

6

格式的字典很好,你會很容易地看到它的結構:

{ 
    u'inboxMessages': [{ 
     u'fromAddress': u'BM-2DBYkhiBZCyrBa8J7gFRGrFRSGqtHgPtMvwQ', 
     u'toAddress': u'BM-2DC7SCTj2gzgrGgMvUCARdrfrsgLyz3iMyN3', 
     u'read': 0, 
     u'msgid': u'36659a4453e12a085d8fbfeefc58da8fb23f38bfb0984c2983e0ddc31c776038', 
     u'receivedTime': u'1377986524', 
     u'message': u'dGVzdGluZyAxIDIgMw0KDQotLQ0KSm9obiBQZXJyeQ0KDQo=\n', 
     u'encodingType': 2, 
     u'subject': u'bWVzc2FnZSAx\n' 
    }, { 
     u'fromAddress': u'BM-2DBYkhiBZCyrBa8J7gNBrngtgttHgPtMvwQ', 
     u'toAddress': u'BM-2DC7SCTj2gzgrGgMvUCARdCrfthyz3iMyN3', 
     u'read': 0, 
     u'msgid': u'2ebe10c788ed47c6c122e3b43ae6642cb15077536c7056ed5088ab2d339c4630', 
     u'receivedTime': u'1377986557', 
     u'message': u'VGhpcyBpcyB0aGUgbmV4dCB0ZXN0DQoNCi0tDQpKb2huIFBlcnJ5DQoNCg==\n', 
     u'encodingType': 2, 
     u'subject': u'dGVzdGluZyAzIDQgNQ==\n' 
    }, { 
     u'fromAddress': u'BM-2DBYkhithgyhyrBa8J7gNBrnSGqtHgPtMvwQ', 
     u'toAddress': u'BM-2DC7SCTj2gzgrtgtgMvUCARdCogLyz3iMyN3', 
     u'read': 0, 
     u'msgid': u'91dffd421c898aab0ffc43a363869a580abec6fa851aa6cf7cefe98263f96c81', 
     u'receivedTime': u'1377986599', 
     u'message': u'VGhpcyBpcyB0aGUgM3JkIHRlc3QNCg0hjj0NCkpvaG4gUGVycnkNCg0K\n', 
     u'encodingType': 2, 
     u'subject': u'dGhpcyBpcyB0aGUgM3Jk\n' 
    }] 
} 

在這裏,你只是遍歷列表:

data = json.loads(api.getAllInboxMessages()) 

for message in data['inboxMessages']: 
    print message['fromAddress'] 
+0

哇。是啊,哇,哇。格式正確確實有幫助,不是嗎?謝謝,這就是答案! – CajunTechie

+0

您是否使用某種工具進行格式化? –

+1

@MikeVella:我只是將它粘貼到IPython中。它自動格式化長詞典。 – Blender