ArduinoJson
ArduinoJson
ESP32
2/5
🧩 软硬件结合
已发布
项目简介
📟 JSON library for Arduino and embedded C++. Simple and efficient.
ArduinoJson 是专为 Arduino 和物联网(IoT)设备设计的轻量级 C++ JSON 库,由开发者 Benoit Blanchon 维护,在 GitHub 上拥有超过 1.5 万颗星标,是目前嵌入式领域最受欢迎的 JSON 处理方案之一。它解决了资源受限设备上 JSON 解析与生成的核心痛点——在仅有几 KB 内存的微控制器上,高效地处理数据交换格式。
标签
项目特点
**高效**:比官方 Arduino_JSON 库小两倍、快 10%、节省约 10% 的 RAM。
**轻量级**:纯头文件库,无外部依赖,占用资源极少。
**功能全面**:支持 JSON 序列化/反序列化、MessagePack、注释、过滤、NDJSON/JSON Lines。
**高度可定制**:支持自定义分配器、自定义读写器、自定义类型转换器。
**跨平台**:兼容 Arduino、ESP8266、ESP32、Teensy、Particle、MSP430 等几乎所有主流开发板。
**线程安全**:设计上考虑了多线程环境下的安全使用。
**测试完善**:单元测试覆盖率接近 100%,持续集成测试覆盖多个编译器版本,并通过 Google OSS Fuzz 持续模糊测试。
**文档丰富**:提供教程、示例、FAQ、故障排除指南和官方书籍。
技术规格
| 语言 | C++ (C++11/14/17,C++98/03 支持见 6.20.x) |
|---|---|
| 平台 | Arduino, ESP8266, ESP32, Teensy, Particle, MSP430, Nios II 等 |
| 许可证 | MIT |
| 依赖 | 无外部依赖 |
| 文件类型 | 纯头文件 (Header-only) |
| 序列化格式 | JSON, MessagePack |
| 支持流 | Stream, std::istream/std::ostream |
| 支持字符串 | String, std::string, std::string_view, Flash strings |
| 内存分配 | 默认堆分配,支持自定义分配器 |
| 线程安全 | 是 |
| 测试覆盖率 | 接近 100% |
| 持续集成 | GitHub Actions, AppVeyor, Google OSS Fuzz |
项目资源
搜索资源
物料清单 (BOM)
| 物料名称 | 数量 | 参考价格 | 备注 |
|---|---|---|---|
| ArduinoJson 库 | 1 | — | 从 GitHub 或 Arduino 库管理器安装 |
| Arduino 兼容开发板 | 1 | — | 如 Uno, ESP32, Teensy 等 |
能力画像
⚪ 记忆与知识检索: 1/5
🔵 逻辑推演: 2/5
⚪ 表达与交流: 1/5
⚪ 感知与观察: 1/5
⚪ 数理与计算: 2/5
🔵 动手与操作: 2/5
⚪ 狂热与坚持: 1/5
⚪ 创造与创新: 2/5
项目图库
所需技能
🔧 **动手能力**:需要基本的 Arduino 开发板连接和编程上传操作。
💻 **编程能力**:需要掌握 C/C++ 基础,了解 JSON 数据结构,熟悉 Arduino 编程环境。
⚡ **电子电路**:无需复杂的电路知识,仅需了解如何连接开发板到电脑。
适用场景
从传感器或网络 API 获取 JSON 数据并在 Arduino 上解析。
将传感器数据序列化为 JSON 格式并通过串口、WiFi 或蓝牙发送。
在嵌入式设备上实现 RESTful API 的客户端或服务端。
在资源受限的 IoT 设备上进行高效的数据交换。