arduino aJSON库valuefloat始终返回0.00
arduino aJSON库valuefloat始终返回0.00,json,arduino,Json,Arduino,Serial.println(ph->valuefloat)返回0.00。我以前从未处理过C结构,也不确定语法设置是否正确。我的json结构似乎相当直截了当;但是,我不确定是否为ph浮点值访问了正确的creatObject()。我应该怎么做才能得到合适的ph值 有关aJSON图书馆的更多信息,请访问: 编辑新代码: aJsonObject* sBoard = aJson.createObject(); aJsonObject* sensorType = aJson.createObjec
Serial.println(ph->valuefloat)代码>返回0.00。我以前从未处理过C结构,也不确定语法设置是否正确。我的json结构似乎相当直截了当;但是,我不确定是否为ph浮点值访问了正确的creatObject()。我应该怎么做才能得到合适的ph值
有关aJSON图书馆的更多信息,请访问:
编辑新代码:
aJsonObject* sBoard = aJson.createObject();
aJsonObject* sensorType = aJson.createObject();
aJsonObject* sBoard = aJson.createObject();
aJsonObject* sensorType = aJson.createObject();
aJson.addItemToObject(sBoard, "name", aJson.createItem("SensorBoardOne"));
aJson.addItemToObject(sBoard, "Sensor", sensorType);
aJson.addNumberToObject(sensorType, "ph", 5.33);
aJson.addNumberToObject(sensorType, "ec", 880);
aJson.addNumberToObject(sensorType, "temp", 74.68);
aJsonObject* ph = aJson.getObjectItem(sensorType, "ph");
Serial.println(ph->valuefloat);
最后,我将json结构更改为更简单的结构。我觉得由于arduino的ram短缺,不需要另一个底座。在缩短json结构后,我成功地获得了ph的valuefloat。我仍然有兴趣找出之前的问题以供将来参考。我刚刚尝试了您的代码,发现您在代码段的开头两次声明了sBoard和sensorType
我删除了它,我得到了正确的回答“5.33”。这是我编辑后使用的代码
aJsonObject* sBoard = aJson.createObject();
aJson.addItemToObject(sBoard, "name", aJson.createItem("SensorBoardOne"));
aJson.addNumberToObject(sBoard, "ph", 5.33);
aJson.addNumberToObject(sBoard, "ec", 880);
aJson.addNumberToObject(sBoard, "temp", 74.68);
aJsonObject* phValue = aJson.getObjectItem(sBoard, "ph");
char* string = aJson.print(sBoard);
if (string != NULL) {
Serial.println(string); //prints out: {"name":"SensorBoardOne","ph":5.33000,"ec":880,"temp":74.68000}
}
Serial.println(phValue->valuefloat);
aJsonObject* sBoard = aJson.createObject();
aJsonObject* sensorType = aJson.createObject();
aJson.addItemToObject(sBoard, "name", aJson.createItem("SensorBoardOne"));
aJson.addItemToObject(sBoard, "Sensor", sensorType);
aJson.addNumberToObject(sensorType, "ph", 5.33);
aJson.addNumberToObject(sensorType, "ec", 880);
aJson.addNumberToObject(sensorType, "temp", 74.68);
aJsonObject* ph = aJson.getObjectItem(sensorType, "ph");
Serial.println(ph->valuefloat);