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 容量的信息 这里。
广告