从 JsonDocument 中提取值
Extract a value from a JsonDocument
菜鸟关于 arduino 中的浮点数和从 json 文档中提取值的问题。
我正在向 Ipstack 发出 HTTP 请求以使用此函数获取纬度和经度值:
void gps(){
//Declare an object of class HTTPClient
HTTPClient http;
//Specify request destination and fields
http.begin("http://api.ipstack.com/check?access_key=233bf289dff160082dd3e5d915ce3135&fields=latitude,longitude");
//Send the request
int httpCode = http.GET();
//Check the returning code
if (httpCode > 0) {
//Get the request response payload
payload = http.getString();
//Print the response payload
Serial.println(payload);
DynamicJsonDocument doc(512);
DeserializationError error = deserializeJson(doc, payload);
float latitudine = doc["latitude"];
float longitudine = doc["longitude"];
Serial.println(latitudine);
Serial.println(longitudine);
}
//Close connection
http.end();
}//end of GPS
当我串行打印有效负载时,我得到这些值:
{"latitude":45.47200012207031,"longitude":9.192000389099121}
但是当我尝试连续打印两个变量“latitudine”和“longitudine”时,我得到了这些值:
45.47
9.19
我怎样才能得到所有的小数?非常感谢
根据函数 print 的 arduino 文档,浮点值默认四舍五入为 2 位数字。但是,您可以在 print
的第二个参数中指定您想要的位数,例如作为
Serial.println(latitudine, 4);
请注意,数据类型 float
可能无法表示 json 中包含的所有数字。然后使用double
。
菜鸟关于 arduino 中的浮点数和从 json 文档中提取值的问题。 我正在向 Ipstack 发出 HTTP 请求以使用此函数获取纬度和经度值:
void gps(){
//Declare an object of class HTTPClient
HTTPClient http;
//Specify request destination and fields
http.begin("http://api.ipstack.com/check?access_key=233bf289dff160082dd3e5d915ce3135&fields=latitude,longitude");
//Send the request
int httpCode = http.GET();
//Check the returning code
if (httpCode > 0) {
//Get the request response payload
payload = http.getString();
//Print the response payload
Serial.println(payload);
DynamicJsonDocument doc(512);
DeserializationError error = deserializeJson(doc, payload);
float latitudine = doc["latitude"];
float longitudine = doc["longitude"];
Serial.println(latitudine);
Serial.println(longitudine);
}
//Close connection
http.end();
}//end of GPS
当我串行打印有效负载时,我得到这些值:
{"latitude":45.47200012207031,"longitude":9.192000389099121}
但是当我尝试连续打印两个变量“latitudine”和“longitudine”时,我得到了这些值:
45.47
9.19
我怎样才能得到所有的小数?非常感谢
根据函数 print 的 arduino 文档,浮点值默认四舍五入为 2 位数字。但是,您可以在 print
的第二个参数中指定您想要的位数,例如作为
Serial.println(latitudine, 4);
请注意,数据类型 float
可能无法表示 json 中包含的所有数字。然后使用double
。