2013-10-03 5 views
0

Я пытаюсь создать следующий текст JSON перебирая графа, который содержит эти данные:график кодирования Python для 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"}]} 

Как предотвратить случайность: для повторения ованные? Любые советы приветствуются, спасибо.

+0

Вы должны быть более конкретным относительно того, какой график равен, потому что, поскольку он стоит, ваш код не имеет никакого смысла. 'Для узла в графе:' будет цикл один раз и даст node = "random". В чем смысл сплошного цикла? Почему вы жестко кодируете имена атрибутов 'attr1' и' attr2'? – Drew

ответ

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"}]}' 

Во-первых, это проще и быстрее. Во-вторых, ваша конкатенация даже не создает действительный JSON.

+0

спасибо, извините, я очень новичок в python. Кроме того, график не в этом формате, но я немного изменил ваш код, чтобы перебрать мой график и добавить информацию в список, а затем json.dump этот список. – SKLAK

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"}]}' 
Смежные вопросы