После некоторого возни я дошел до того, что могу получить следующее тело в ответе об ошибке 404 от моего бэкэнда. Я изо всех сил пытаюсь разобрать содержимое в angular, чтобы я мог его использовать. Я знаю, что это простые вещи, поэтому извините, что задаю такой простой вопрос. _body выглядит так.
_body: "{\"httpStatus\":404,\"errorType\":\"NotFound\",\"message\":\"Device does not exist!\"}"
Это нормально:
console.info("Err = ", err);
Err = Response {_body: "
{\"httpStatus\":404,\"errorType\":\"NotFound\",\"message\":\"Device does not exist!\"}", status: 404, ok: false, statusText: "OK", headers: Headers, …}
и:
console.info("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.info("JS err body", errBody);
Error: Uncaught (in promise): SyntaxError: Unexpected token \ in JSON at position 1
Но я не могу понять, как получить отдельные поля. Я отдаю себе отчет в том, что вышеуказанные усилия наивны и ошибочны. Я уверен, что любой, у кого есть навыки JS или angular, может решить это за минуту.
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, это не определено!... Это полный абсурд. Что я делаю неправильно? Как вы, ребята, зарабатываете этим на жизнь? Это убивает меня!

Я предполагаю, что errorString это err._body? В любом случае, синтаксический анализ этой строки в JSON должен быть таким же простым, как:
let error = JSON.parse(err._body);
Я вернулся к этому недавно. И, наконец, удалось разобраться. Мне нужно было удалить некоторые нежелательные обратные косые черты в теле, прежде чем пытаться JSON Parse.
const errorStringReplaced = err._body.replace(/\/g, '');
const errBody = JSON.parse(errorStringReplaced);
this.outcomeMessage = errBody.message;
Сделав это, я смог правильно схватить внутренности. Я бы все же предпочел правильно отправить объект, но пока это нужно сделать.
Что такое
errorString? Откуда это?JSON.parse('{\"httpStatus\":404,\"errorType\":\"NotFound\",\"message\":\"Device does not exist!\"}');сработало для меня.