2013-05-21 19 views
8

Sto cercando di analizzare un insieme di dati JSON che sembra qualcosa di simile:Python - Analisi 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" 
    } 
    ] 
} 

lascia supporre che ci possono essere molti di questi insiemi di dati.

Mi piacerebbe scorrere tra di loro e prendere il parametro "Nome" e il parametro "ID campagna".

Finora il mio codice è qualcosa di simile:

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 

Probabilmente abbastanza semplice! Io non sono bravo con le liste/dizionari :(

+2

A che serve Python senza elenchi e dizionari? – JustinDanielson

risposta

19

dizionari di accesso con d[dict_key] o d.get(dict_key, default) (per fornire valore di default):

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

Ti suggerisco di leggere qualcosa su dictionaries.

+0

Ha funzionato! Evviva! Leggi anche tutto sui dizionari. Grazie :-) – Aivoric

0

Supponendo ogni elemento nella jsonData viene inizializzato come list

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

Ciao Justin, saresti in grado di aiutarti scrivendo come appare il codice completo? Al momento ricevo un errore "AttributeError: 'str' object non ha attributo 'get'" Suppongo che sia perché non è inizializzato come una lista. Come lo faresti? Inoltre, si prega di assumere Python 3 :) grazie! – Aivoric

+0

Dovresti riuscire a inserire il mio codice nel ciclo for fornito nella domanda. – JustinDanielson