Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 节点红色SQL输出对象/数组转换_Json_Node.js_Node Red - Fatal编程技术网

Json 节点红色SQL输出对象/数组转换

Json 节点红色SQL输出对象/数组转换,json,node.js,node-red,Json,Node.js,Node Red,我正在节点Red中执行SQL查询,以输出时间/值数据负载。然后,这些数据被传递到一个网页,以便在图形中显示 之前,我使用php进行SQL查询,我正在尝试替换它。然而,php中的SQL查询是以不同的格式提供的 使用节点红色,我得到: [ { "Watts": 1018, "Time": 1453825454 }, { "Watts": 1018, "Time": 1453825448 }, { "Watts": 1010, "Ti

我正在节点Red中执行SQL查询,以输出时间/值数据负载。然后,这些数据被传递到一个网页,以便在图形中显示

之前,我使用php进行SQL查询,我正在尝试替换它。然而,php中的SQL查询是以不同的格式提供的

使用节点红色,我得到:

[
  {
    "Watts": 1018,
    "Time": 1453825454
  },
  {
    "Watts": 1018,
    "Time": 1453825448
  },
  {
    "Watts": 1010,
    "Time": 1453825442
  }]
使用PHP,我得到:

[
   [1453819620000,962],
   [1453819614000,950],
   [1453819608000,967],
   [1453819602000,947]
]

我想我从php获得了一个数组,从Node Red获得了一个JSON对象数组。如何将Node Red对象转换为与PHP相同格式的Node Red输出?(即:我想在服务器而不是客户端处理处理。)

可以使用功能节点生成相同格式的内容

var array = msg.payload;
var phpFormat = "[";

for (var i=0; i<array.length; i++) {
 phpFormat += "[" + 
   // time format differ, NodeJS is in seconds
   // php is in milliseconds
   (array[i].Time * 1000 ) + 
   "," + 
   array[i].Watts + "],";

}

//take the last "," off
phpFormat = phpFormat.substring(0,phpFormat.lenght - 1);
phpFormat += "]";

msg.payload = phpFormat;

return msg;
var数组=msg.payload;
var phpFormat=“[”;

对于(var i=0;i我从一个同事那里得到了一些帮助,下面是他提出的,我对node red进行了修改:

var outputArray = [];

for(var i in msg.payload){
    var entryData = [msg.payload[i]['Time']];
    for(var attr in msg.payload[i]) {
        if(attr!='Time') {
            entryData.push(msg.payload[i][attr])}
            };
    outputArray.push(entryData); } 

var returnMsg={"payload":outputArray};
return returnMsg;

我知道,我知道,这个问题已经有2年多的历史了……但是,对于接下来的500名寻求类似问题答案的人来说,我想强调一下
change
节点内置的新JSONata表达式功能。使用这个简单的表达式:

payload.[Time, Watts]
将JS对象转换为数组的请求输出

lambda语法计算器的神奇之处记录在上。在那里,您还可以找到根据自己的数据构建表达式的位置,并立即看到结果结构

注意:为了在变更节点中使用jsonata表达式,请确保选择输入字段旁边的
J:
下拉列表(而不是
{}
JSON选项)…两件完全不同的事情


你能澄清一下你到底在问什么吗?你想知道如何将Node RED格式转换成PHP格式吗?我忘了说-这样我就可以从Node RED获取输出,并将其直接放入flot图中。