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);

两者的区别在于静态文档在堆栈上分配内存。因此,它不需要调用 ma​​lloc() 和 free(),速度更快。

动态文档在堆中分配内存,因此速度稍慢,应该用于较大的 JSON,因为这些 JSON 无法放入堆栈内存中。

经验法则是,对于小于 1 kB 的 JSON 使用静态文档,对于大于 1 kB 的 JSON 使用动态文档。

您可以在此处阅读有关 StaticJsonDocument 的更多信息 此处。

以及有关 DynamicJsonDocument 的更多信息 此处。

您还可以阅读有关如何确定 JsonDocument 容量的此处。


相关文章