Node-RED:Рецепты/Как конвертировать значение сообщения в-из формата JSON

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

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


Как конвертировать значение сообщения в/из формата JSON[1]

Проблема

Вам нужно конвертировать значение, хранящееся в свойстве сообщения, из JSON-строки в объект JavaScript или наоборот.

Решение

Для этого можно воспользоваться нодой «JSON».

Пример

[{"id":"634256b7.2d6818","type":"inject","z":"64133d39.bb0394","name":"JSON String","topic":"","payload":"{\"a\":1}","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":110,"y":80,"wires":[["a2fe0fc8.095e1"]]},{"id":"a2fe0fc8.095e1","type":"json","z":"64133d39.bb0394","name":"","property":"payload","action":"","pretty":false,"x":270,"y":80,"wires":[["9a4ce2b8.47698"]]},{"id":"9a4ce2b8.47698","type":"debug","z":"64133d39.bb0394","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":430,"y":80,"wires":[]},{"id":"80032e2.7c92cd","type":"inject","z":"64133d39.bb0394","name":"Object","topic":"","payload":"{\"a\":1}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":90,"y":120,"wires":[["cd40a0f4.4f5ac"]]},{"id":"cd40a0f4.4f5ac","type":"json","z":"64133d39.bb0394","name":"","property":"payload","action":"","pretty":false,"x":270,"y":120,"wires":[["478b4106.4fd7c"]]},{"id":"478b4106.4fd7c","type":"debug","z":"64133d39.bb0394","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":430,"y":120,"wires":[]}]

Разбор

В примере выше в верхний поток «впрыскивается» JSON-строка '{"a":1}', которую нода «JSON» конвертирует в эквивалентный JavaScript-объект.

В нижнем потоке происходит обратная конвертация: в него «впрыскивается» объект { a: 1 }, который затем конвертируется в JSON-строку.

По умолчанию нода «JSON» определяет, что именно ей дается для конвертации. Также ее можно настроить таким образом, чтобы на выходе всегда был нужный тип данных. Например, в поток можно быть добавлена и JSON-строка, и JavaScript-объект, но ноду «JSON» можно настроить таким образом, чтобы на выходе – независимо от входных данных – всегда получался JavaScript-объект.

См.также

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