題:
在Arduino上解析JSON
Richard
2014-07-27 02:10:43 UTC
view on stackexchange narkive permalink

我正在使用 ArduinoJson庫。有一個絕佳示例,用於解析源代碼中的單個JSON對象。我正在嘗試遍歷JSON對像數組:

  #include <JsonParser.h>使用命名空間ArduinoJson :: Parser; void setup(){Serial.begin(9600); char json [] =“ [{\” sensor \“:\” gps \“,\” time \“:1351824120,\” data \“:[48.756080,2.302038]},\ {\” sensor \“:\ “ gps \”,\“時間\”:1351824140,\“數據\”:[50.756080,21.302038]}]“ ;; JsonParser<32>解析器; JsonArray root = parser.parse(json);如果(!root.success()){Serial.println(“ JsonParser.parse()失敗”);返回; } for(JsonArrayIterator item = root.begin(); item!= root.end(); ++ item){//不確定在這裡做什麼。 Serial.println((** item)[“ data”]); //結果為:// ParseJsonArray:21:錯誤:重載的調用//'println(ArduinoJson :: Parser :: JsonValue)'是模棱兩可的JsonObject something = JsonObject(* item); Serial.println(something [“ sensor”]); //結果為:// ParseJsonArray:26:錯誤:重載調用//'println(ArduinoJson :: Parser :: JsonValue)'不明確}} void loop(){}  

項目的類型為JsonValue。我想將其視為JsonObject並從中提取一些數據。

從上面的對象解析的數據是否針對兩種傳感器如何解析jasonLIKE每個對象的值?時間“:” 1351824120“}]
二 答案:
Benoit Blanchon
2014-08-03 18:32:12 UTC
view on stackexchange narkive permalink

這就是我編寫此循環的方式:

  for(JsonArrayIterator it = root.begin(); it!= root.end(); ++ it){JsonObject row = *它; char * sensor = row [“ sensor”];很長時間= row [“ time”];雙重緯度= row [“ data”] [0];雙經度= row [“ data”] [1]; Serial.println(sensor); Serial.println(時間); Serial.println(latitude,6); Serial.println(longitude,6);}  

並且,如果C ++ 11可用(Arduino IDE 1.0.5則不是這種情況):

  for(自動行:根){char * sensor = row [“ sensor”];很長時間= row [“ time”];雙重緯度= row [“ data”] [0];雙經度= row [“ data”] [1]; Serial.println(sensor); Serial.println(時間); Serial.println(latitude,6); Serial.println(longitude,6);}  
+1是`for`循環的一個很好的用例。
Richard
2014-07-27 22:05:59 UTC
view on stackexchange narkive permalink

知道了!最初,在打印之前從JsonObject強制檢索項目即可。

  JsonObject something = JsonObject(* item); Serial.println((char *)something [“ sensor”]) ;  

不過,我認為這樣看起來更好。

  char * sensor =(* item)[“ sensor”]; Serial.println(sensor) ;  


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...