Манипулирование словарями python json

#python

#python

Вопрос:

Я пытаюсь манипулировать некоторыми JSON в python, но я действительно застрял. Я могу работать с базовыми словарями на python, но не с этим. Я пытаюсь извлечь отдельные значения переменных (они же часть значения пары ключ-значение).

 data = json.dumps({ 
"example":[
 {
     "id": "001",
     "somefield": "yes",
     "text": "This is text",
     "options":[
        {
           "firstop": "yesitis",
           "secondop":1
        }
     ],
     "length":5
  },
  ]
  

В «example» есть много других записей, но это первая. Я попытался выполнить эквивалент (и это работает, распечатывая все):

 print json.loads(data)['example']
  

Но выполнение следующего не работает:

     print json.loads(data)['example']['id']
  

Я не знаю, как обращаться к переменным по одному. Я экспериментировал с вариантами «для ключа, значения в json.loads (data) [‘example’]:» и т. Д. Но все они говорят мне, что слишком много значений для распаковки.

Ответ №1:

если вы посмотрите на формат, вы увидите, что на самом деле это список, содержащий словари.

попробуйте:

 print json.loads(data)['example'][0]['id']
  

Ответ №2:

Вы также можете попробовать jsontree

 >>> mytree = jsontree()
>>> mytree.something.there = 4
>>> mytree['something']['there'] == 5
>>> False
>>> mytree['something']['there'] == 4
>>> True
  

Ответ №3:

Поскольку «пример» представляет собой список json: если вы хотите получить доступ к id или другим ключам

 print json.loads(data)['example'][0]['id']
print json.loads(data)['example'][0]['text']  ...
  

Если вы хотите получить доступ к ключам внутри параметров :

 print json.loads(data)['example'][0]['options'][0]['firstop']