После нескольких недоразумений я дошел до того, что могу получить следующее тело в ответе об ошибке 404 из моего бэкэнда.Я изо всех сил пытаюсь разобрать содержимое в угловой, чтобы я мог его использовать.Я знаю, что это простые вещи, так что извините, чтобы задать такой простой вопрос.Тело выглядит следующим образом.
_body: "{\"httpStatus\":404,\"errorType\":\"NotFound\",\"message\":\"Device does not exist!\"}"
Все в порядке:
console.log("Err = ", err);
Err = Response {_body: "
{\"httpStatus\":404,\"errorType\":\"NotFound\",\"message\":\"Device does not exist!\"}", status: 404, ok: false, statusText: "OK", headers: Headers, …}
и:
console.log("Err Body : ", err._body);
Err Body :
{\"httpStatus\":404,\"errorType\":\"NotFound\",\"message\":\"Device does not exist!\"}
Но это не работает:
let errorObject = eval(errorString);
Uncaught (in promise): SyntaxError: Invalid or unexpected token
...
var errBody = JSON.parse(errorString);
console.log("JS err body", errBody);
Error: Uncaught (in promise): SyntaxError: Unexpected token \ in JSON at position 1
Но я не могу понять, как получить отдельные поля.Я знаю, что вышеуказанные усилия наивны и ошибочны.Я уверен, что любой с JS или угловыми навыками может решить это за минуту.
PS покушайся.Я аппаратный дизайнер.Я здесь, потому что я чего-то не знаю, что всегда является лучшей причиной, чтобы задать вопрос.
Редактировать:
Спасибо за ответы.JSON.parse не работает для меня!?
SyntaxError: Unexpected token \ in JSON at position 1
Я посмотрел более внимательно на то, с чем вы добились успеха, и я согласен, что он отлично работает в консоли.Но это не работает для меня в Angular.То, что сработало, было:
let errBody = JSON.parse("\"" + err._body + "\"");
Хотя это кажется смешным.Тем более, что впоследствии результат не совсем правильный:
err body {"httpStatus":404,"errorType":"NotFound","message":"Device does not exist!"}
Если я тогда попытаюсь добраться до errBody.message, он не определен! ... Это совершенно абсурдно.Что я делаю неправильно?Как вы, ребята, зарабатываете на жизнь?Это убивает меня!