2013-09-07 24 views
7

Mam pewne problemy z generowaniem konkretnego obiektu JSON w pythonie.JSON - Generowanie jsona w pętli w pytonie

Muszę go mieć w tym formacie:

[ 
    {"id":0 , "attributeName_1":"value" , "attributeName_2":"value" , .... }, 
    {"id":1 , "attributeName_2":"value" , "attributeName_3":"value" , .... }, 
    . 
    . 
    . 
] 

W Pythonie im coraz IDS attributeNames i wartości z 2 obiektów. Im próbuje wygenerować json tak:

data=[] 
    for feature in features_selected: 
     data.append({"id":feature.pk}) 
     for attribute in attributes_selected: 
      if attribute.feature == feature: 
       data.append({attribute.attribute.name : attribute.value}) 
     jsonData=json.dumps(data) 

ale mam ten wynik, który nie jest dokładnie to, czego potrzebuję:

[ 
    {"id":0} , {"attributeName_1":"value"} , {"attributeName_2":"value"} , 
    {"id":1} , {"attributeName_2":"value"} , {"attributeName_3":"value"} , .... }, 
    . 
    . 
    . 
] 

Odpowiedz

14

Problemem jest to, że są dołączanie do data wiele razy w pętli : najpierw {"id":feature.pk}, następnie {attribute.attribute.name : attribute.value} w wewnętrznej pętli.

Zamiast tego trzeba określić słownika wewnątrz pętli, napełnić go id pozycji i atrybutów, a dopiero potem dołączyć:

data=[] 
for feature in features_selected: 
    item = {"id": feature.pk} 
    for attribute in attributes_selected: 
     if attribute.feature == feature: 
      item[attribute.attribute.name] = attribute.value 
    data.append(item) 

jsonData=json.dumps(data)