12

Python で特定の JSON オブジェクトを生成するのに問題があります。

次の形式にする必要があります。

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

Python では、2 つのオブジェクトから ID、属性名、および値を取得しています。次のようなjsonを生成しようとしています:

    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)

しかし、私はこの結果を得ましたが、これはまさに私が必要としているものではありません:

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

1 に答える 1

27

問題はdata、ループ内で複数回追加することです。最初{"id":feature.pk}に、次に{attribute.attribute.name : attribute.value}内側のループに追加します。

代わりに、ループ内で辞書を定義し、id項目と属性を入力してから追加する必要があります。

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)
于 2013-09-07T13:48:09.353 に答える