Джанго json вложенный список .get () - PullRequest
0 голосов
/ 03 мая 2018

Я застрял с глупой проблемой.

У меня есть данные json, и я пытаюсь сохранить их в моей модели.

Вот код.

response = response.json() #this gives json data
response = json.loads(response) #loads string to json           
json_string = response #ready to get data from list
modelfielda = json_string.get("abc") # this works fine
modelfieldb = json_string.get('["c"]["d"]["e"]') #this does not give data though data is present.

Мои данные json выглядят так:

{  
   "abc":"AP003",
   "c":[  
      {  
         "d":{  
            "e":"some data",
            "f":"some data"
         }
      }
   ]
}

Так что мой вопрос: как получить данные внутри c.

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

Попробуйте это для e:
bnm = json_string.get('c').get('d').get('e')
или со списком:
bnm = json_string.get('c')[0].get('d').get('e')

0 голосов
/ 03 мая 2018

Используя несколько .get с :

bnm = json_string.get('c')[0].get('d').get('e')  # bnm = 'some data'

Или, может быть, лучше (поскольку в случае, если ключ не существует, произойдет ошибка):

bnm = json_string['c'][0]['d']['e']  # bnm = 'some data'

Поскольку вы преобразовали его в словарь Python, вы в основном работаете со словарем, и вы можете получить значение, соответствующее ключу, используя some_dict[some_key]. Поскольку у нас здесь есть каскад словарей, мы, таким образом, получаем субдискретарий, для которого мы снова получаем соответствующее значение. Значение, соответствующее c, является списком, и мы можем получить первый элемент, написав [0].

...