五、JSON数据解析/** * @brief 解析天气数据(JSON) * * @param analysis_buf 数据的存储空间 * @return true 解析成功 * @return false 解析失败 */static bool parse_json_data(const char *analysis_buf){cJSON*json_data = https://www.huyubaike.com/biancheng/NULL;/* 截取有效json */char *index = strchr(analysis_buf,'{');// strcpy(weather_buf, index);json_data = https://www.huyubaike.com/biancheng/cJSON_Parse(index);if( json_data == NULL ) // 判断字段是否json格式{return false;}// ESP_LOGI(TAG,"Start parsing data");cJSON* cjson_item =cJSON_GetObjectItem(json_data,"results");cJSON* cjson_results =cJSON_GetArrayItem(cjson_item,0);/* 获取天气的地址 */cJSON* cjson_location = cJSON_GetObjectItem(cjson_results,"location");cJSON* cjson_temperature_name = cJSON_GetObjectItem(cjson_location,"name");strcpy(user_weather_info.location_name,cjson_temperature_name->valuestring);/* 天气信息 */cJSON* cjson_daily = cJSON_GetObjectItem(cjson_results,"daily");/* 当天的天气信息 */cJSON* cjson_daily_1 =cJSON_GetArrayItem(cjson_daily,0);ESP_LOGI(TAG, "day_one_code is: %s", cJSON_GetObjectItem(cjson_daily_1,"code_day")->valuestring);ESP_LOGI(TAG, "day_one_temp_high is: %s", cJSON_GetObjectItem(cjson_daily_1,"high")->valuestring);ESP_LOGI(TAG, "day_three_temp_low is: %s", cJSON_GetObjectItem(cjson_daily_1,"low")->valuestring);ESP_LOGI(TAG, "day_one_humi is: %s", cJSON_GetObjectItem(cjson_daily_1,"humidity")->valuestring);ESP_LOGI(TAG, "day_one_windspeed is: %s", cJSON_GetObjectItem(cjson_daily_1,"wind_speed")->valuestring);
注意:解析JSON数据时,使用的都是 valuestring
数据类型,否则会出现无法解析的现象
参考文献ESP32学习笔记(12)——JSON接口使用:https://blog.csdn.net/qq_36347513/article/details/116481167ESP32学习笔记(14)——HTTP服务器 - 简书:https://www.jianshu.com/p/aa865ff71b05ESP32_IDF学习8【HTTP服务器】 - redlightASl - 博客园:https://www.cnblogs.com/redlightASl/p/15542579.htmlESP32 之 ESP-IDF 教学(十二)WiFi篇—— LwIP 之 TCP 通信:https://blog.csdn.net/m0_50064262/article/details/120265731>
【ESP32 IDF 获取天气信息】
经验总结扩展阅读
- 原神箭头馈赠的华丽宝箱怎么获取
- 龙之谷世界蓝钻怎么获取
- 崩坏3圣痕柳柒怎么获取
- 如何规范App广告的隐私获取,让用户拥有更多知情权?
- 原神导光四面体获取方法介绍
- jmeter中获取token和cookie
- 金铲铲之战神龙尊者小小卡莎获取方法是什么
- 幻塔艾莉丝的获取方法是什么
- 英雄联盟手游战利品钥匙怎么获取
- 英雄联盟战利品钥匙获取方法是什么