Расшифруйте ответ http в Angular - проблема JSON.parse - PullRequest
0 голосов
/ 22 февраля 2019

После нескольких недоразумений я дошел до того, что могу получить следующее тело в ответе об ошибке 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, он не определен! ... Это совершенно абсурдно.Что я делаю неправильно?Как вы, ребята, зарабатываете на жизнь?Это убивает меня!

Ответы [ 2 ]

0 голосов
/ 28 мая 2019

Я вернулся к этому недавно.И, наконец, удалось выяснить это.Мне нужно было удалить некоторые нежелательные обратные слеши в теле, прежде чем пытаться анализировать JSON.

const errorStringReplaced = err._body.replace(/\\/g, '');
const errBody = JSON.parse(errorStringReplaced);
this.outcomeMessage = errBody.message;

Сделав это, я мог бы правильно схватить внутренности.Во-первых, я бы предпочел отправлять объект правильно, но сейчас это нужно сделать.

0 голосов
/ 22 февраля 2019

Я предполагаю, errorString это err._body?В любом случае, синтаксический анализ этой строки в JSON должен быть простым:

let error = JSON.parse(err._body);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...