Node-RED:Рецепты/Как вернуть JSON-ответ в виде JavaScript-объекта

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Как вернуть JSON-ответ в виде JavaScript-объекта[1]

Проблема

Вам нужно вернуть JSON-ответ на HTTP-запрос в виде JavaScript-объекта.

Решение

По умолчанию нода «HTTP request» сохраняет тело JSON-ответа в свойство «msg.payload» в виде строки. Поменяйте значение в опции «Return» этой ноды на «a parsed JSON object». В результате JSON-ответ будет преобразован в JavaScript-объект и сохранен в свойство «msg.payload», после чего к нему смогут получить доступ ноды, идущие дальше в потоке.

Пример

[{"id":"14c60a10.794df6","type":"http request","z":"c9a81b70.8abed8","name":"","method":"GET","ret":"obj","url":"https://jsonplaceholder.typicode.com/posts/{{post}}","tls":"","x":390,"y":500,"wires":[["b4ea8dd4.61a05"]]},{"id":"b4ea8dd4.61a05","type":"debug","z":"c9a81b70.8abed8","name":"","active":true,"console":"false","complete":"payload.title","x":570,"y":500,"wires":[]},{"id":"3479192a.04f016","type":"inject","z":"c9a81b70.8abed8","name":"post id","topic":"","payload":"2","payloadType":"str","repeat":"","crontab":"","once":false,"x":90,"y":500,"wires":[["e69250cf.368fd"]]},{"id":"e69250cf.368fd","type":"change","z":"c9a81b70.8abed8","name":"","rules":[{"t":"set","p":"post","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":230,"y":500,"wires":[["14c60a10.794df6"]]}]

Пример выше – это пример из статьи «Как задать URL запроса», но с измененными настройками в ноде «HTTP request». Кроме того, была отредактирована нода «Debug» – теперь она показывает только свойство «title» разобранного JSON-ответа:

"qui est esse"

Разбор

Если ваш HTTP-запрос возвращает XML, вы можете воспользоваться нодой «XML», чтобы преобразовать XML-документ в JavaScript-объект.

См.также

Внешние ссылки