ArduinoJson

C/C++ 2025-08-05



ArduinoJson是Arduino和IoT(物联网)的C ++ JSON库。

特征

  • JSON避难所化
    • 可选地将UTF-16逃逸序列解码为UTF-8
    • 可选地支持输入中的评论
    • 可选地过滤输入以保留所需的值
    • 支持单语引号作为字符串定界符
    • 与NDJSON和JSON系列兼容
  • JSON序列化
    • 可以写入缓冲区或流
    • 可选地缩进文档(Prettified JSON)
  • MessagePack序列化
  • 消息包供应
  • 高效的
    • 是“官方” Arduino_json库的两倍
    • 比“官方” arduino_json图书馆快几乎10%
    • 与“官方” Arduino_json库的消耗大约少10%
    • 删除字符串
  • 多才多艺的
    • 支持自定义分配器(例如,使用外部RAM芯片)
    • 支持String,STD :: String和STD :: String_view
    • 支持流和STD :: istream/std :: Ostream
    • 支持闪存字符串
    • 支持自定义读者和自定义作家
    • 支持自定义转换器
  • 便携的
    • 可在任何C ++项目(不限于Arduino)上使用
    • 与C ++ 11,C ++ 14和C ++兼容17
    • 支持C ++ 98/C ++ 03 ArduinoJson 6.20.x上可用
    • 用-wall -wextra -petsantic和 /w4的零警告
    • 仅标题库
    • 几乎与任何董事会合作
      • Arduino董事会:Uno,Due,Micro,Nano,Mega,Yun,Leonardo ...
      • Espressif芯片:ESP8266,ESP32
      • LOLIN(WEMOS)董事会:D1 Mini,D1 Mini Pro ...
      • 青少年董事会:4.0、3.2、2.0
      • 粒子板:氩气,硼,电子,光子...
      • 德州仪器委员会:MSP430 ...
      • 软核:Nios II ...
    • 在所有主要开发环境中进行测试
      • Arduino IDE
      • Atmel Studio
      • 原子truestudio
      • 能量
      • IAR嵌入式工作台
      • Keil Uvision
      • mplab x IDE
      • 粒子
      • Platformio
      • Eclipse的Sloeber插件
      • 视觉微观
      • 视觉工作室
    • 甚至与wandbox.org这样的在线编译器合作
    • Cmake友好
  • 设计精良
    • 优雅的API
    • 线程安全
    • 独立的(无外部依赖)
    • 句子友好
    • 友好
    • TMP友好
    • 处理整数溢出
  • 经过良好的测试
    • 单位测试覆盖范围接近100%
    • 连续测试
      • Visual Studio 2017,2019,2022
      • GCC 4.8、5、6、7、8、9、10、11、12
      • 7至19
    • 不断与Google Oss Fuzz融为一体
    • 通过clang-tidy的所有默认检查
  • 据记录
    • 教程
    • 例子
    • How-Tos
    • 常问问题
    • 故障排除
    • ChangElog
  • 充满活力的用户社区
    • Github上所有Arduino库中最受欢迎
    • 用于数百个项目
    • 响应迅速的支持

Quickstart

避免

这是一个与ArduinoJson一起解析JSON文档的程序。

 const char * json = " { " sensor " : " gps " , " time " :1351824120, " data " :[48.756080,2.302038]} " ;

JsonDocument doc;
deserializeJson (doc, json);

const char * sensor = doc[ " sensor " ];
long time          = doc[ " time " ];
double latitude    = doc[ " data " ][ 0 ];
double longitude   = doc[ " data " ][ 1 ];

请参阅有关ArduinoJson .org的教程

序列化

这是一个与ArduinoJson生成JSON文档的程序:

JsonDocument doc;

doc[ " sensor " ] = " gps " ;
doc[ " time " ]   = 1351824120 ;
doc[ " data " ][ 0 ] = 48.756080 ;
doc[ " data " ][ 1 ] = 2.302038 ;

serializeJson (doc, Serial);
// This prints:
// {"sensor":"gps","time":1351824120,"data":[48.756080,2.302038]}

请参阅有关ArduinoJson .org的教程

赞助商

ArduinoJson感谢其赞助商。请给他们参观;他们应得的!

如果您运行一个嵌入ArduinoJson商业项目,请考虑赞助图书馆的开发:它可以确保您的产品依赖的代码积极维护。它还可以使您的项目有所了解。

如果您是个人用户,并且想支持开发(或给出赞赏的迹象),请考虑购买掌握ArduinoJson书,或者简单地抛出一颗星星。

下载源码

通过命令行克隆项目:

git clone https://github.com/bblanchon/ArduinoJson.git