Определение размера документа ArduinoJSON на основе размера файла
Я пытаюсь эффективно распределить размер документа на основе размера файла, сохраненного во флэш-памяти ESP8266. Есть ли способ?
Например: file.size()
X 1,5
@Guy . D, 👍0
Обсуждение1 ответ
Лучший ответ:
К сожалению, невозможно предсказать размер JsonDocument
из файла. только размер.
В качестве обходного пути я предлагаю вам выделить очень большой пул памяти и уменьшить его после десериализации; вот так:
DynamicJsonDocument doc(ESP.getMaxAllocHeap());
deserializeJson(doc, file);
doc.shrinkToFit();
Действительно, эта программа потребляет больше памяти, чем требуется, но только на долю секунды.
См. также:
- Как определить емкость JsonDocument?
- BasicJsonDocument::shrinkToFit()
Только для DynamicJsonDocument?, @Guy . D
@guyd shrinkToFit
также доступен в BasicJsonDocument. Но не в JsonDocument или StaticJsonDocument. См. [документы] (https://arduinojson.org/v6/api/jsondocument/), чтобы определить, какой из них использовать в вашем случае., @orithena
В зависимости от того, что на самом деле делается, также может быть полезна функция [фильтрации](https://arduinojson.org/v6/example/filter/)., @timemage
@guyd, вы спросили, как определить размер документа *во время выполнения*, поэтому StaticJsonDocument
не вариант., @Benoit Blanchon
- NodeMCU (Arduino IDE) «DynamicJsonBuffer» не был объявлен в этой области
- Чтение файла из SPIFFS в nodemcu с использованием ArduinoJson
- Последовательная связь от Arduino до ESP8266 NodeMCU работает, но от NodeMCU до Arduino не работает
- Проанализировать большой ответ json с помощью ESP8266
- Публиковать данные json в mqtt
- Какой максимальный размер статического документа Json в Arduino JSON?
- Чтение файла json из SPIFFS и отображение содержащейся в нем информации на встроенной веб-странице
- ESP8266 Arduino Json object array десериализация в структуру
Я думаю, что это очень сильно зависит от содержания. Если у вас много строковых данных, они могут хорошо коррелировать. Если у вас много числовых данных, то я бы предположил, что внутреннее представление может быть намного меньше, чем представление тех же данных в текстовом файле., @Majenko
@Majenko Поскольку некоторые файлы параметров хранятся на флэш-памяти (которые также могут быть изменены в будущем), один размер может быть 256, а другой - 1250. Моя цель - не выделять максимальное количество всех, @Guy . D