2013-05-21 32 views
8

我試圖解析JSON數據集,看起來是這樣的:Python的 - 解析JSON數據集

{"data":[ 
    { 
    "Rest":0, 
    "Status":"The campaign is moved to the archive", 
    "IsActive":"No", 
    "StatusArchive":"Yes", 
    "Login":"some_login", 
    "ContextStrategyName":"Default", 
    "CampaignID":1111111, 
    "StatusShow":"No", 
    "StartDate":"2013-01-20", 
    "Sum":0, 
    "StatusModerate":"Yes", 
    "Clicks":0, 
    "Shows":0, 
    "ManagerName":"XYZ", 
    "StatusActivating":"Yes", 
    "StrategyName":"HighestPosition", 
    "SumAvailableForTransfer":0, 
    "AgencyName":null, 
    "Name":"Campaign_01" 
    }, 
    { 
    "Rest":82.6200000000008, 
    "Status":"Impressions will begin tomorrow at 10:00", 
    "IsActive":"Yes", 
    "StatusArchive":"No", 
    "Login":"some_login", 
    "ContextStrategyName":"Default", 
    "CampaignID":2222222, 
    "StatusShow":"Yes", 
    "StartDate":"2013-01-28", 
    "Sum":15998,"StatusModerate":"Yes", 
    "Clicks":7571, 
    "Shows":5535646, 
    "ManagerName":"XYZ", 
    "StatusActivating":"Yes", 
    "StrategyName":"HighestPosition", 
    "SumAvailableForTransfer":0, 
    "AgencyName":null, 
    "Name":"Campaign_02" 
    } 
    ] 
} 

讓我們假設可以有許多這樣的數據集。

我想遍歷其中的每一個,並抓住「名稱」和「廣告系列ID」參數。

到目前爲止我的代碼看起來是這樣的:

decoded_response = response.read().decode("UTF-8") 
data = json.loads(decoded.response) 

    for item in data[0]: 
     for x in data[0][item] ... 
      -> need a get name procedure 
      -> need a get campaign_id procedure 

可能相當簡單!我不是用列表/字典:(

+2

沒有列表和字典的python有什麼好處? – JustinDanielson

回答

19

訪問詞典(提供默認值):

jsonResponse=json.loads(decoded_response) 
jsonData = jsonResponse["data"] 
for item in jsonData: 
    name = item.get("Name") 
    campaignID = item.get("CampaignID") 

我建議你閱讀一下dictionaries

+0

它的工作!萬歲!同時閱讀所有關於字典。謝謝 :-) – Aivoric

0

假設在jsonData每個項目良好的初始化與d[dict_key]d.get(dict_key, default)一個list

for jsonData in data[0]: 
    for item in jsonData: 
     print item.get("Name", "Null") 
     print item.get("CampaignID", "Null") 
+1

嗨賈斯汀,你能通過編寫完整代碼的樣子來提供幫助嗎?目前我收到一個錯誤「AttributeError:'str'對象沒有屬性'get'」我猜這是因爲它沒有初始化爲一個列表。你會怎麼做?另外,請假設Python 3 :)謝謝! – Aivoric

+0

您應該能夠將我的代碼放在您在問題中提供的for循環中。 – JustinDanielson