2012-07-05 25 views
1
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); 

Serial.println(ph->valuefloat);返回0.00。我從來沒有處理過C結構,也不確定我是否正確設置了語法。我的json結構看起來相當簡單;但是,我不確定我是否訪問ph float值的正確creatObject()。我該怎麼做才能獲得ph值的正確值?arduino aJSON庫valuefloat總是返回0.00

有關aJSON庫獲得更多的信息,請訪問:http://interactive-matter.eu/blog/2010/08/14/ajson-handle-json-with-arduino/

編輯新代碼:

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); 

我最終改變了JSON結構更簡單的結構。由於arduino的ram短缺,我覺得不需要另一個子結構。縮短json結構後,我能夠成功獲得ph值的浮動。我仍然有興趣找出以前的問題供將來參考。

回答

0

我剛剛試過你的代碼,發現你已經在代碼片段的開頭聲明瞭sBoard和sensorType兩次。

我刪除它,我得到正確的響應「5.33」。這是我編輯後使用的代碼。

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); 
+0

謝謝,這就像一個魅力! – dottedquad