我正在尝试通过我的Web服务器和Nodemcu控制某些开关。我正在设法连接到我的数据库并读取数据。我想将数据发送回服务器,但我不是如何从数组构造JSON。
这是我的代码:
if(currentMillis - previousMillis >= interval) {
if ((WiFiMulti.run() == WL_CONNECTED)) {
outputsState = httpGETRequest(serverName);
Serial.println("OutputState ( {ID Key:[Switch ID, State, Mode, AlarmON, AlarmOFF,JustChanged]}");
Serial.println(outputsState);
Serial.println(" ");
JSONVar myObject = JSON.parse(outputsState);
if (JSON.typeof(myObject) == "undefined") {
Serial.println("Parsing input failed!");
return;
}
JSONVar keys = myObject.keys();
for (int i = 0; i < keys.length(); i++) {
JSONVar value = myObject[keys[i]];
Switch_ID[i] = atoi(value[0]);
Switch_Mode[i] = atoi(value[1]);
Switch_State[i] = atoi(value[2]);
Switch_AlarmOn[i] = atoi(value[3]);
Switch_AlarmOFF[i] = atoi(value[4]);
Switch_JustChanged[i] = atoi(value[5]);
if (Switch_Mode[i] == 0 && Switch_State[i] == 0 && Switch_JustChanged[i] == 0) {
mySwitch315.send(Switch_ID[i], 24);
New_State[i] = 1;
New_JustChanged[i] = 1;
}
if (Switch_Mode[i] == 0 && Switch_State[i] == 1 && Switch_JustChanged[i] == 1) {
mySwitch315.send(Switch_ID[i], 24);
New_State[i] = 0;
New_JustChanged[i] = 0;
}
if (Switch_Mode[i] == 1 && Switch_AlarmOn[i] == 1 && Switch_State[i] == 0 && Switch_JustChanged[i] == 0) {
mySwitch315.send(Switch_ID[i], 24);
New_State[i] = 1;
New_JustChanged[i] = 1;
}
if (Switch_Mode[i] == 1 && Switch_AlarmOFF[i] == 1 && Switch_State[i] == 1 && Switch_JustChanged[i] == 1) {
mySwitch315.send(Switch_ID[i], 24);
New_State[i] = 0;
New_JustChanged[i] = 0;
}
}
Serial.println(Switch_ID[0]);
Serial.println(Switch_Mode[0]);
Serial.println(Switch_State[0]);
Serial.println(Switch_AlarmOn[0]);
Serial.println(Switch_AlarmOFF[0]);
Serial.println(Switch_JustChanged[0]);
Serial.println(New_JustChanged[0]);
Serial.println(New_State[0]);
previousMillis = currentMillis;
//How to send back ? ....
//Post_Response_Data(Switch_ID[], Switch_AlarmON[], Switch_AlarmOFF[], New_JustChanged[], New_State[]);
这是我在监视器中的“ outputState”:
OutputState ( {ID Key:[Switch ID, State, Mode, AlarmON, AlarmOFF,JustChanged]}
{"3038947":["3038947","0","0","0","0","0"],"3038948":["3038948","0","0","0","0","0"]}
如何从数组中构造JSON:Switch_ID [],...以便将其发送回服务器。谢谢。
您可以使用Object.keys()
遍历键并转换object
中的数组。
let sample = {"3038947":["3038947","0","0","0","0","0"],"3038948":["3038948","0","0","0","0","0"]};
let output = {};
Object.keys(sample).forEach(key => {
if(!output[key]) output[key] = {};
let arr = sample[key];
output[key] = {
switchId: arr[0],
state: arr[1],
mode: arr[2],
alarmOn: arr[3],
alarmOff: arr[4],
justChanged: arr[5]
};
});
console.log(output); //