2013-05-21 5 views
8

Ich versuche, ein JSON-Datensatz zu analysieren, die etwa wie folgt aussieht:Python - Parsing JSON Data 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" 
    } 
    ] 
} 

Nehmen wir an, dass es viele dieser Datensätze sein kann.

Ich würde gerne jeden einzelnen von ihnen durchlaufen und den "Name" und den "Campaign ID" -Parameter greifen.

Bisher sieht mein Code so etwas wie dieses:

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 

Wahrscheinlich ganz gerade nach vorne! Ich bin nicht gut mit Listen/Wörterbücher :(

+2

Was gut ist Python ohne Listen und Wörterbücher? – JustinDanielson

Antwort

19

Zugang Wörterbücher list initialisiert mit d[dict_key] oder d.get(dict_key, default) (Standardwert zur Verfügung zu stellen):

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

Ich schlage vor, Sie lesen etwas über dictionaries

+0

Es hat funktioniert! Hurra! Lesen Sie auch alles über Wörterbücher. Vielen Dank :-) – Aivoric

0

jedes Element in der jsonData Angenommen wird als

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

Hallo Justin, könntest du helfen, indem du schreibst, wie der vollständige Code aussieht? Im Moment bekomme ich einen Fehler "AttributeError: 'str' Objekt hat kein Attribut 'get'" Ich vermute, das liegt daran, dass es nicht als Liste initialisiert ist. Wie würdest du das machen? Nimm auch bitte Python 3 an :) Danke! – Aivoric

+0

Sie sollten in der Lage sein, meinen Code einfach über Ihre for-Schleife, die Sie in der Frage angeben, zu legen. – JustinDanielson