2013-05-21 21 views
8

Próbuję analizować zestaw danych JSON, który wygląda mniej więcej tak:Python - Przetwarzanie danych JSON Set

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

pozwala zakładać, że może istnieć wiele z tych zbiorów danych.

Chciałbym przetestować każdy z nich i pobrać parametr "Nazwa" i "Identyfikator kampanii".

tej pory mój kod wygląda mniej więcej tak:

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 

prawdopodobnie dość prosto do przodu! Nie jestem dobry z listami/słownikach :(

+2

Co to jest python bez list i słowników? – JustinDanielson

Odpowiedz

19

słowników dostępu z d[dict_key] lub d.get(dict_key, default) (aby zapewnić wartość domyślna):

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

Proponuję przeczytać coś o dictionaries.

+0

To zadziałało! Brawo! Przeczytaj także o słownikach. Dziękuję Ci :-) – Aivoric

0

założeniu, że każdy element w jsonData jest inicjowany jako list

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

Witaj Justin, czy byłbyś w stanie pomóc, pisząc jak wygląda pełny kod? W tej chwili dostaję błąd "AttributeError: 'obiekt' str 'nie ma atrybutu" get "" Zgaduję, że to dlatego, że nie został zainicjowany jako lista. Jak byś to zrobił? Przyjmij też Python 3 :) dziękuję! – Aivoric

+0

Powinieneś być w stanie po prostu zrzucić mój kod przez pętlę for, którą podasz w pytaniu. – JustinDanielson

Powiązane problemy