0

このデータを含むグラフを反復処理して、次の JSON テキストを作成しようとしています。

{
"random" : [
    {
        "attr1" : "X",
        "attr2" : "Y"
    },
    {
        "attr1" : "Z",
        "attr2" : "V"
    }
    ]
}

私はこれを試しました:

output = ""
for node in graph:
    output += json.JSONEncoder().encode({"random": [{"attr1": graph[node].attr1, "attr2":graph[node].attr2}]})

ただし、これにより、次のように、各エントリの前に「ランダム」が繰り返されます。

{"random": [{"attr1": "X", "attr2": "Y"}]}{"random": [{"attr1": "Z", "attr2": "V"}]}

「random:」が繰り返されるのを防ぐにはどうすればよいですか? アドバイスをいただければ幸いです。

4

2 に答える 2

2

構造全体を一度にダンプするのではなく、個別のノードの文字列を連結する理由はありますか?

>>> import json
>>> graph = {
... "random" : [
...     {
...         "attr1" : "X",
...         "attr2" : "Y"
...     },
...     {
...         "attr1" : "Z",
...         "attr2" : "V"
...     }
...     ]
... }
>>> json.dumps(graph)
'{"random": [{"attr2": "Y", "attr1": "X"}, {"attr2": "V", "attr1": "Z"}]}'

まず、よりシンプルで高速です。第 2 に、連結しても有効な JSON が生成されません。

于 2013-10-03T05:07:36.513 に答える
0

ループしている理由はわかりませんが、グラフ オブジェクトをエンコードするだけで済みます。

import json
graph = { "random": [ { "attr1": "X", "attr2": "Y"}, {"attr1": "Z", "attr2": "V"}]}
output = json.JSONEncoder().encode(graph)
print output
# yields '{"random": [{"attr2": "Y", "attr1": "X"}, {"attr2": "V", "attr1": "Z"}]}'
于 2013-10-03T05:12:08.630 に答える