ArduinoJSON:内存分配
arduinohardwaresoftware & coding更新于 2026/1/12 8:22:17
您可以使用 ArduinoJson 库声明两种类型的 JSON 文档:StaticJsonDocument 和 DynamicJsonDocument。两者都需要在声明时指定容量(以字节为单位)。
对于静态文档,声明语法为 −
StaticJsonDocument<capacity> doc_name;
例如 −
StaticJsonDocument<256> myDoc;
对于动态文档,声明语法为 −
DynamicJsonDocument doc_name(capacity);
例如,
DynamicJsonDocument myDoc(4096);
两者的区别在于静态文档在堆栈上分配内存。因此,它不需要调用 malloc() 和 free(),速度更快。
动态文档在堆中分配内存,因此速度稍慢,应该用于较大的 JSON,因为这些 JSON 无法放入堆栈内存中。
经验法则是,对于小于 1 kB 的 JSON 使用静态文档,对于大于 1 kB 的 JSON 使用动态文档。
您可以在此处阅读有关 StaticJsonDocument 的更多信息 此处。
以及有关 DynamicJsonDocument 的更多信息 此处。
您还可以阅读有关如何确定 JsonDocument 容量的此处。

