Konwersja do payload: object

Witam forumowiczów.

Jak zamienić taką postać: {“payload”:false,“topic”:“NoPower”,“_msgid”:“xxxxxxxxxx”}

na postać :
{“_msgid”:“xxxxxxxxxx”,“payload”:{“NoPower”:false},“topic”:“”}

Nazwa zmiennej NoPower jest dynamiczna jak i jej wartość.

Łatwo to zmienić node funkcją i poleceniem IF przy założeniu że zmienna jest stała. ja to robię tak:

if (msg.payload == false) 
msg.payload = {"NoPower":false}

if (msg.payload == true) 
msg.payload = {"NoPower":true}
return msg;

.
Natomiast u mnie te dane są dynamiczne - jak to z automatyzować ?

Pozdrawiam,
Paweł

Kod, elementy które chcesz wyróżnić osadź w

``` twój kod ............... ```

Wiadomość będzie bardziej czytelna dla innych

W jakim zakresie te dane są dynamiczne?
Wrzuć kilka przykładów z danych na wejściu i tego co chcesz otrzymać na wyjściu.

Na wejściu node funkcji dostaję postać:

{“payload”:wartosc_zmiennej,
“topic”:“nazwa_zmiennej”,
“_msgid”:“xxxxxxxxxx”}

Potrzebuję to doprowadzić do postaci:
Obiektu payload, który składa się z dwóch elementów, nazwa_zmiennej i wartosc zmiennej.

{“_msgid”:“xxxxxxxxxx”,
“payload”:{“nazwa_zmiennej”:wartosc_zmiennej},
“topic”:“”}

Dane pochodzą z node, który podczas jednej wiadomości przekazuje dane o kilkunastu zmiennych - stąd mowa o dynamicznych danych.

Cześć,
Chodzi o coś takiego?

Trzeba pamiętać, że na razie nie jest to w żaden sposób zabezpieczone i jeżeli dany klucz/wartość się nie pojawi w przesłanym obiekcie na wejściu noda funkcyjnego, to przepływ się ‘wysypie’.

flows.json (975 bajtów)

Na wyjściu musi to mieć taką postać

image

, u Ciebie wygląda to całkiem inaczej.

Ok teraz chyba wiem o co chodzi


flows.json (828 bajtów)

W dalszym ciągu nie wiem tylko, w jakim zakresie te dane będą dynamiczne - co jeszcze może się tam pojawić i czy jeżeli się pojawi, to będzie w czymś przeszkadzało.

1 polubienie

@fronteri , działa dokładnie tak jak chciałem.
Przelatują wszystkie typy zmiennych jakie chcę obsługiwać.
Dziękuję za pomoc.
Muszę przeanalizować twój kod.