ArduinoJSON:内存分配


您可以使用 **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 容量的信息 这里

更新于: 2021年7月26日

1K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告