Проверьте, существует ли ключ в многомерном ответе json [Flutter] [Dart]

#json #flutter #dart #multidimensional-array

#json #трепетание #dart #многомерный массив

Вопрос:

Я считываю некоторые данные json с конечной точки http и продолжаю работать с результатом следующим образом:

 var decodedResponse = json.decode(response.body);
if(decodedResponse['ingredients']['additives'] != null) {
  getAdditiveList = await getAdditiveNames(decodedResponse['ingredients']['additives']);
  decodedResponse['ingredients']['additives'] = getAdditiveList;
}
 

Поскольку иногда ключ «добавки» или даже «ингредиенты» не является частью ответа json, я получаю следующую ошибку:

 [VERBOSE-2:ui_dart_state.cc(177)] Unhandled Exception: NoSuchMethodError: The method '[]' was called on null.
Receiver: null
Tried calling: []("additives")
 

Я думаю, что следующее технически сработало бы как проверка, но это не выглядит хорошей идеей:

 if(decodedResponse.containsKey("ingredients")){
    if(decodedResponse['ingredients'].containsKey("additives")){
    }
}
 

Любая помощь будет признательна! Спасибо!

Ответ №1:

Похоже, что иногда ваше значение decodedResponse равно null. Вы должны проверить это следующим образом:

 if(decodedResponse != null amp;amp; decodedResponse['ingredients'] != null amp;amp; decodedResponse['ingredients']['additives'] != null){}
 

Таким образом, вы всегда будете проверять, имеет ли он значение, потому что он выглядит так, как будто ваш ответ от API иногда дает вам null.