Google Vision API: невозможно прочитать свойство неопределенного - PullRequest
0 голосов
/ 28 ноября 2018

У меня проблема с моими свойствами из моего тела ответа json.

Ответ, полученный от звонка, получен от Google Vision API.Свойство 'description' не определено, но будет отображаться при входе в консоль, иногда это будет работать.

 this.http.post(this.apiUri, this.bodyAPI).subscribe((response : any) => 

{
  //console.log(response.responses[0].labelAnnotations[1].description);
  //console.log(this.photoTasks[this.activeTask].task_solution);
    if (response.responses[0].labelAnnotations[0].description? == "magenta"){
      console.log("great, " + response.responses[0].labelAnnotations[0].topicality * 100 + "% accuracy");
    }
    else if (response.responses[0].labelAnnotations[1].description == "magenta"){
      console.log("great, " + response.responses[0].labelAnnotations[1].topicality * 100 + "% accuracy");
    }
    else if (response.responses[0].labelAnnotations[2].description == this.photoTasks[this.activeTask].task_solution){
      console.log("great, " + response.responses[0].labelAnnotations[2].topicality * 100 + "% accuracy");
    }
    else if (response.responses[0].labelAnnotations[3].description == this.photoTasks[this.activeTask].task_solution){
      console.log("great, " + response.responses[0].labelAnnotations[3].topicality * 100 + "% accuracy");
    }
    // else if (response.responses[0].labelAnnotations[4].description == this.photoTasks[this.activeTask].task_solution){
    //   console.log("great, " + response.responses[0].labelAnnotations[4].topicality * 100 + "% accuracy");
    // }
    else{
      console.log("you should try again...");
    }

}  
  //console.log(response.responses[0].labelAnnotations);
) ;
}

Это ошибка:

core.js:1673 ERROR TypeError: Cannot read property 'description' of undefined
at SafeSubscriber._next (cameraintent.component.ts:94)

1 Ответ

0 голосов
/ 28 ноября 2018

Вы уверены, что ваш ответ не нулевой?

Может также случиться, что ответ содержит данные, но не массив labelAnnotations, или он содержит меньший массив, чем тот, который вы ищете (например, индекс 4 может не существовать).Попробуйте добавить опционально?на различные элементы, которые могут быть нулевыми, например:

response?.responses[0].labelAnnotations[0].description
response.responses[0]?.labelAnnotations[0].description
response.responses[0].labelAnnotations[0]?.description

Для того, чтобы лучше понять, что происходит коротко и не всегда присутствует.После того, как вы узнаете, что не всегда присутствует, вы можете подготовить свой код для работы с этими случаями.Например, добавление условия if только для входа в консоль, если это конкретное поле не равно нулю.

...