2015-09-16 2 views
2

мне нужно сделать вывод JSON, который выглядит следующим образомКак сделать Уплотненный JSON объект с Python

{ "items": [ 
    "number": { 
     "value": 23 
     "label": test 
    } 
] 
} 

я сделал что-то похожее на код ниже, но я не могу понять, как мне нужно число гнезд под элементами.

#!/usr/bin/python 

import json 

myjson = {'items':[]} 
d = {} 
d['value'] = 23 
d['label'] = "test" 
myjson.get('items').append(d) 
output = json.dumps(myjson) 
print output 

Это дает мне

{ 
"items": [{ 
    "value": 23, 
    "label": "test"} 
]} 
+4

То, что вы опубликовали, недействительно JSON. Вы не можете иметь что-то вроде '[" x ": blah]'. Двоеточие может встречаться только внутри '{}', а не непосредственно внутри '[]'. – BrenBarn

ответ

3

Ваш вход JSON не является правильным, это должно быть что-то вроде:

{ "items": 
    [ 
     { 
     "number": 
      { 
      "value": 23, 
      "label": "test" 
      } 
     } 
    ] 
} 

Кроме того, он может запутаться, но доступ к результирующей Dict интуитивно понятен.

jdict = json.loads(yourjson) 
jdict['items'] => [{"number":{...}}] 
jdict['items'][0] => {"number":{...}} 
jdict['items'][0]['number']['value'] => 23 

Edit:

Думаю, вы на самом деле просто хотел это:

myjson.get('items').append({'number': d}) 

Вы должны добавить словарь, а не записи из словаря к пунктам.

+0

Не могли бы вы более подробно рассказать о своем примере кода, чтобы помочь мне? Я думаю, я понимаю, куда вы идете, но я мог бы использовать конкретный пример. – Ryan

+0

@Ryan см. Сейчас редактировать –

+0

Это именно то, что мне нужно, спасибо! – Ryan

Смежные вопросы