ArduinoJSON:内存分配
您可以使用ArduinoJson库声明两种类型的JSON文档- StaticJsonDocument和DynamicJsonDocument。两者都需要在声明时指定容量(以字节为单位)。
对于静态文档,声明语法是-
StaticJsonDocumentdoc_name;
例如-
StaticJsonDocument<256> myDoc;
对于动态文档,声明语法是-
DynamicJsonDocument doc_name(capacity);
例如,
DynamicJsonDocument myDoc(4096);
两者的区别在于静态doc在栈上分配内存。因此,它不需要调用malloc()andfree(),因此速度更快。
动态文档在堆中分配内存,因此速度稍慢,应该用于较大的JSON,它们不适合堆栈内存。
经验法则是对小于1kB的JSON使用静态文档,对大于1kB的动态文档使用。
您可以在此处阅读有关StaticJsonDocument的更多信息。
并且,更多关于DynamicJsonDocument在这里。
您还可以在此处阅读有关如何确定JsonDocument容量的信息。