当前位置: 首页 > news >正文

Arduino ESP 8266 ESPAsyncWebServer AsyncCallbackJsonWebHandler

Arduino-ESP 8266 踩坑(一) ESPAsyncWebServer AsyncCallbackJsonWebHandler

在使用 ESPAsyncWebServer 时 由于我想用 asyncWebServer 通过 application/json POST 请求拿数据, 就翻看了 ESPAsyncWebServer 的 git 文档, 他是这样说的 :

//JSON body handling with ArduinoJson
//Endpoints which consume JSON can use a special handler to get ready to use JSON data in the request callback:
#include "AsyncJson.h"
#include "ArduinoJson.h"AsyncCallbackJsonWebHandler* handler = new AsyncCallbackJsonWebHandler("/rest/endpoint", [](AsyncWebServerRequest *request, JsonVariant &json) {JsonObject& jsonObj = json.as<JsonObject>();// ...
});
server.addHandler(handler);

编译报错:

error: cannot bind non-const lvalue reference of type ‘ArduinoJson::V6213PB2::JsonObject&’ to an rvalue of type ‘ArduinoJson::V6213PB2::detail::enable_if<true, ArduinoJson::V6213PB2::JsonObject>::type’ {aka ‘ArduinoJson::V6213PB2::JsonObject’}
44 | JsonObject &jsonObj = json.as();

我承认我很菜,但是对于一个仅初步学习过 C/C++ 的初学者来说, 我很难找到问题.
于是乎我又跑去翻看 ArduinoJson 的文档:
官网 Example

StaticJsonDocument<256> doc;
JsonObject object = doc.to<JsonObject>();
object["hello"] = "world";
const char* world = object["hello"];

我才发现 AsyncCallbackJsonWebHandler 文档上面的代码有一点小问题, 就是这句话:

JsonObject& jsonObj = json.as<JsonObject>();

所以 请去掉 & 符号, 这个问题困扰了我一天, 该文长点记性
所以正确的写法应该是:

AsyncCallbackJsonWebHandler *handler =new AsyncCallbackJsonWebHandler("/updateSetObj",[](AsyncWebServerRequest *request, JsonVariant &json){JsonObject jsonObj = json.as<JsonObject>();const char* lpwm = jsonObj["lPwm"];Serial.println("------------------");Serial.println(lpwm);request->send(200, "application/json", "{\"code\": 1}");});server.addHandler(handler);

结果
在这里插入图片描述

http://www.lryc.cn/news/111195.html

相关文章:

  • Source Insight_突出显示对选定字符的引用
  • 高等数学上册 第五章 定积分 知识点总结
  • 【无标题】uniapp引入萤石云 真机无法运行 踩坑集合
  • python函数
  • 【Linux】进程间通信——system V共享内存
  • 【数据结构】快速排序
  • 人机融合智能中的事实与价值
  • JVM | 从类加载到JVM内存结构
  • Golang之路---04 并发编程——WaitGroup
  • React(4)
  • STM32 CubeMX USB_(HID 鼠标和键盘)
  • [PM]敏捷开发之Scrum总结
  • 大数据Flink(五十七):Yarn集群环境(生产推荐)
  • web集群学习:源码安装nginx配置启动服务脚本
  • LNMP
  • Python网络爬虫在信息采集中的应用及教程
  • 云主机测试Flink磁盘满问题解决
  • iOS开发-NSOperationQueue实现上传图片队列
  • 通过 CCIP 构建跨链应用(5 个案例)
  • 基于 yolov8 的人体姿态评估
  • 计算机视觉(六)图像分类
  • 解决:vue通过params传参刷新页面参数丢失问题以及实现vue路由可选参数的解决办法
  • 将postman接口导出的json转换为markdown
  • 教您一招解决找素材困难好的方法
  • python_PyQt5开发验证K线视觉想法工具V1.2_批量验证
  • 应急响应-web后门(中间件)的排查思路
  • XML 学习笔记 7:XSD
  • neo4j图数据库基础操作命令(CQL语法)
  • vscode无法连接远程服务器的可能原因:远程服务器磁盘爆了
  • SSL 证书过期巡检脚本 (Python 版)