NodeRed通过字符串生成JSON数据

NodeRed节点间通过JSON传递数据是比较方便的。通常我们需要把传感器采集到数据放入到JSON中,由于刚接触nodejs,我参照网上例程编写了一个NodeRed上可行的程序,与大家分享,如果大家有更好的方法,请指教!

先上流图:

 主要程序在函数节点中,如下:

var time=Date.now();
// var JSONString="{\"id\":\"10000010\", \"name\":\"bar\", \"age\":22, \"isMale\":false}";//字符串示例
var t= "\"time\":"+time;
var t1="\"cnt\":" +(time-100);
var JSONString="{" +t+','+ t1 +"}";
var jsonObj = JSON.parse(JSONString);
msg.payload=jsonObj;
return msg;

time是准备放入JSON中的变量,我就用时间戳代替。一般字符串转换成JSON数据,需要如下的格式:

var JSONString="{\"id\":\"10000010\", \"name\":\"bar\", \"age\":22, \"isMale\":false}";//字符串示例

输出结果:

完整程序:

[
    {
        "id": "a4224af272f9a52e",
        "type": "tab",
        "label": "流程 3",
        "disabled": false,
        "info": "",
        "env": []
    },
    {
        "id": "e0d491608a37f5c0",
        "type": "inject",
        "z": "a4224af272f9a52e",
        "name": "",
        "props": [
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "x": 310,
        "y": 280,
        "wires": [
            [
                "4e5b04691f83335b"
            ]
        ]
    },
    {
        "id": "4e5b04691f83335b",
        "type": "function",
        "z": "a4224af272f9a52e",
        "name": "字符串拼接构成JSON数据",
        "func": "var time=Date.now();\n// var JSONString=\"{\\\"id\\\":\\\"10000010\\\", \\\"name\\\":\\\"bar\\\", \\\"age\\\":22, \\\"isMale\\\":false}\";//字符串示例\nvar t= \"\\\"time\\\":\"+time;\nvar t1=\"\\\"cnt\\\":\" +(time-100);\nvar JSONString=\"{\" +t+','+ t1 +\"}\";\nvar jsonObj = JSON.parse(JSONString);\nmsg.payload=jsonObj;\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 510,
        "y": 280,
        "wires": [
            [
                "c43134b63a48812f"
            ]
        ]
    },
    {
        "id": "c43134b63a48812f",
        "type": "debug",
        "z": "a4224af272f9a52e",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "statusVal": "",
        "statusType": "auto",
        "x": 730,
        "y": 280,
        "wires": []
    }
]

 修正的代码:

// var time = Date.now();  
// var t = "\"time\":" + time;  
// var t1 = "\"cnt\":" + (time - 100);  
// var dev = "\"devname\":" + '"发电机"'; // 确保中文字符用双引号包裹  
// var JSONString = "{" + t + ',' + t1 + ',' + dev + "}";  
// var jsonObj = JSON.parse(JSONString);  
// msg.payload = jsonObj;  
// return msg;
var time = Date.now();
var t = "\"time\":" + time;
var t1 = "\"cnt\":" + (time - 100);
var dev = "\"devname\":" + '"发电机"'; // 确保中文字符用双引号包裹  

// 构建 JSON 字符串  
var JSONString = "{" + t + ',' + t1 + ',' + dev + "}";

// 不再使用 JSON.parse(),直接将 JSON 字符串传递给 msg.payload  
msg.payload = JSONString;

// 返回 msg  
return msg;

 Lua tcp发送json数据

ubunutu安装必要库

luarocks install lua-cjson
luarocks install luasocket

 lua源码

-- 引入必要的库  
local socket = require("socket")  
local cjson = require("cjson")  

-- 创建 TCP socket  
local tcp = socket.tcp()  

-- 连接到 TCP 服务器  
local host = "127.0.0.1" -- 服务器地址  
local port = 12345 -- 服务器端口  
tcp:connect(host, port)  

-- 构造含有中文的 JSON 数据  
local data = {  
    time = os.time(),  
    cnt = os.time() - 100,  
    devname = "发电机"  
}  

-- 将 Lua 表转换为 JSON 字符串  
local jsonString = cjson.encode(data)  

-- 发送 JSON 字符串到 TCP 服务器  
tcp:send(jsonString .. "\n") -- 发送数据并加上换行符  

-- 关闭 socket  
tcp:close()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

armcsdn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值