Работа с JsonArray
- Войдите на сайт для отправки комментариев
Втр, 09/03/2021 - 12:57
Народ, помогите. Есть такая функция.
void addToBD(String fileName, char *instring) { int rec_to_delete; String fileData = readFile(fileName); char dataJson[fileData.length() + 1]; strcpy(dataJson, fileData.c_str()); DynamicJsonBuffer jsonBuffer; JsonArray& root = jsonBuffer.parseArray(dataJson); //Serial.println(instring); //JsonObject obj = jsonBuffer.createObject(); JsonObject& obj = jsonBuffer.parseObject(instring); root.add(obj); if (fileName.indexOf("data_d.json") == 0) { rec_to_delete = root.size() - 1440; } else { rec_to_delete = root.size() - 2920; } if (rec_to_delete > 0) { for (int i=0; i<rec_to_delete; i++){ root.remove(0); } } String out; root.printTo(out); out.replace("\n",""); Serial.println(out); writeFile(fileName, out); }
Она считывает JSON файл, парсит его. Потом работаем с JsonArray. Если число элементов массива больше определенного, надо убрать все начальные строки, чтобы число элементов стало равно требуемому. А потом добавляем новый объект. Вид Json объекта такой:
[{"d":[9,3,21,11,29,25.1,25.6,15.0,743.9]}, {"d":[9,3,21,11,39,25.3,25.7,16.2,744.0]}, {"d":[9,3,21,11,49,25.4,25.8,14.5,744.0]}, {"d":[9,3,21,11,50,25.5,25.8,16.1,744.0]}, {"d":[9,3,21,11,51,25.5,25.9,15.6,743.9]}, {"d":[9,3,21,11,52,25.5,25.9,15.2,744.0]}, {"d":[9,3,21,11,36,25.2,25.6,15.0,743.9]}, {"d":[9,3,21,11,56,25.6,26.1,16.1,744.1]}]
Блин, нельзя почему-то редактировать. Не дописал я.
Так вот не хочет удалять нулевой элемент. Пишет
main:100:12: error: 'class ArduinoJson::JsonArray' has no member named 'remove'
root.remove(0);
Хотя ведь точно есть remove(i) у JsonArray.
Да, если этот Remove закомментировать, все работает.
дайте ссылку на библиотеку
Так стандартная библиотека, которая с Arduino ide идет.
Так стандартная библиотека, которая с Arduino ide идет.
вы год на форуме - и все еще не поняли, что такие ответы приведут к тому. что никто вам отвечать вообще не будет?
Для "стандартной библиотеки" - стандартные примеры. изучайте
Не понял, а что не так то? Я и изучаю. Вот такой сайт для изучения годится?https://arduinojson.org/v5/api/jsonarray/remove/
Вот путь к библиотеке C:\Users\dimon\Documents\Arduino\libraries\ArduinoJson
На всякий случай как я ее устанавливал:
1. Sketch--Include library--manage libraries
2. Нашел библиотеку ArduinoJson
3. Выбрал версию и нажал Install.
А то прям получается "Ты как челобитную царю подаешь?!"
Вот путь к библиотеке C:\Users\dimon\Documents\Arduino\libraries\ArduinoJson
вы правда такой дебил или прикидываетесь?
Вы говорите:
дайте ссылку на библиотеку
Я говорю: библиотека встроена в Arduino IDE. Имеется ввиду (для особо одаренных поясняю), что я ее ниоткуда не качал и никаких ссылок не знаю.
Вы говорите, что мне никто не ответит. Я понимаю, что ситуация дурацкая и кто-то явно тупит (ну уж явно не я, потому, что я не знаю откуда берут библиотеки для вкладывания в дистрибутив Arduino IDE.
Далее вы скатываетесь до оскорблений. Ну что вы хотите услышать? Да вы дебил, т.к. не можете сформулировать что вам надо. Вуаля!
Я понимаю вы сейчас надуетесь как индюк и начнете либо оскорблять снова, либо замолчите, мол решай сам. Ну чтож, выходит не договорились!
Вот для статистики первый пост вы вставили в 12:01, последний в 14:01. Ровно 2 часа для скатывания к оскорблениям и никакого решения. Меня на работе бы уже уволили! Я конечно всего год как на форуме, но и я знаю одну истину: не знаешь, не лезь! А то так потрепаться зашли.
библиотека встроена в Arduino IDE. Имеется ввиду (для особо одаренных поясняю), что я ее ниоткуда не качал и никаких ссылок не знаю.
Врешь. Вот перечень встроенных в последнюю IDE библиотек.
Клянусь! Да, сначала версию 6 скачал. Но это было уже очень давно. Попытался тогда с ней, но все почти примеры по 5 версию были и я плюнул. Удалил библиотеку.
После этого прошло с пол года. Далее я действовал как писал выше. Выбрал версию 5.8.3 и нажал Install. Т.е. 5 версию я точно ниоткуда не качал.
Благо есть возможность, взял чистый ноут, установил на него Arduino IDE. Как и писал выше зашел в Скетч--Подключить билиотеку--Управление библиотеками. Вписал ArduinoJson в поиске выбрал версию 5.8.3 и нажал Установить (все по русски, ноут с русской ОС). Библиотека встала и появилась по тому же пути, что я указал ранее.
З.Ы. Уж даже я хот и неопытный пользователь, знаю, что не все библиотеки, что есть изначально установлены.
я знаю одну истину: не знаешь, не лезь!
не лезу
не лезу
Ну это и доказывать не надо было. Я так и написал. Обиделся и в домик спрятался вместо того, чтобы объяснить чего хотел то. Ну ничего не ты один, инет большой.
Для чистоты эксперимента, чтобы меня не обвиняли во лжи, быстренько на VMware развернул новую винду на 10. Прям сразу скачал Arduino IDE 1.8.9, установил ее полностью. Затем опять в Скетч--Подключить билиотеку--Управление библиотеками. Вписал ArduinoJson в поиске выбрал версию 5.8.3 и нажал Установить. Так что если еще есть мужество на продолжение диалога, поясните вопрос про ссылку на библиотеку.
З.Ы. Гражданин-товаришч-барин rkit так же поаккуратнее в выражениях!
Мне кажется или вот это:
Я говорю: библиотека встроена в Arduino IDE.
с вот этим
Прям сразу скачал Arduino IDE 1.8.9, установил ее полностью. Затем опять в Скетч--Подключить билиотеку--Управление библиотеками. Вписал ArduinoJson в поиске выбрал версию 5.8.3 и нажал Установить.
мягко говоря не стыкуется.... ?
По факту вы установили библиотеку, в последнем случае версии 5.8.3. через менеджер библиотек. Этого от Вас товарищ b707 и добивался услышать. Сокращенный ответ должен был звучать так: "Устанавливал через менеджер бибилиотек, название в поиске: ArduinoJson, версия 5.8.3."
Вроде ничего не напутал?...
Для чистоты эксперимента, чтобы меня не обвиняли во лжи, быстренько на VMware развернул новую винду на 10. Прям сразу скачал Arduino IDE 1.8.9, установил ее полностью. Затем опять в Скетч--Подключить билиотеку--Управление библиотеками. Вписал ArduinoJson в поиске выбрал версию 5.8.3 и нажал Установить. Так что если еще есть мужество на продолжение диалога, поясните вопрос про ссылку на библиотеку.
Вы не лжете, Вы тёплое с мягким не различаете и упорствуете в своей ошибке.
"Встроенными" называют библиотеки, не требующие действий по их установке, идущие в поставке сразу вместе с Arduino IDE. Они располагаются не в документах пользователя, а в той папке, куда установлена Arduino IDE в подпапке libraries. Для этих библиотек с некоторой натяжкой можно также применить термин "стандартные".
Всё остальное, устанавливаемое руками или через менеджер библиотек, - это библиотеки сторонние. Они сегодня есть - завтра нет, сегодня называются так - завтра эдак. И если Вы обсуждаете какую-то библиотеку, то нужно указывать более точную информацию, чем одно имя файла, например ссылку на неё, автора, версию.
Мне кажется или вот это:
Я говорю: библиотека встроена в Arduino IDE.
с вот этим
Прям сразу скачал Arduino IDE 1.8.9, установил ее полностью. Затем опять в Скетч--Подключить билиотеку--Управление библиотеками. Вписал ArduinoJson в поиске выбрал версию 5.8.3 и нажал Установить.
мягко говоря не стыкуется.... ?
По факту вы установили библиотеку, в последнем случае версии 5.8.3. через менеджер библиотек. Этого от Вас товарищ b707 и добивался услышать. Сокращенный ответ должен был звучать так: "Устанавливал через менеджер бибилиотек, название в поиске: ArduinoJson, версия 5.8.3."
Вроде ничего не напутал?...
Извиняюсь, а я в ответе на его пост от
#4
что написал???? Я там прям по шагам расписал как я из менеджера библиотек ее устанавливал.
Для чистоты эксперимента, чтобы меня не обвиняли во лжи, быстренько на VMware развернул новую винду на 10. Прям сразу скачал Arduino IDE 1.8.9, установил ее полностью. Затем опять в Скетч--Подключить билиотеку--Управление библиотеками. Вписал ArduinoJson в поиске выбрал версию 5.8.3 и нажал Установить. Так что если еще есть мужество на продолжение диалога, поясните вопрос про ссылку на библиотеку.
Вы не лжете, Вы тёплое с мягким не различаете и упорствуете в своей ошибке.
"Встроенными" называют библиотеки, не требующие действий по их установке, идущие в поставке сразу вместе с Arduino IDE. Они располагаются не в документах пользователя, а в той папке, куда установлена Arduino IDE в подпапке libraries. Для этих библиотек с некоторой натяжкой можно также применить термин "стандартные".
Всё остальное, устанавливаемое руками или через менеджер библиотек, - это библиотеки сторонние. Они сегодня есть - завтра нет, сегодня называются так - завтра эдак. И если Вы обсуждаете какую-то библиотеку, то нужно указывать более точную информацию, чем одно имя файла, например ссылку на неё, автора, версию.
Ну теплое с мягким хрен с ними. Меня спрашивают ссылку на библиотеку, я говорю, что не качал ее, а ставил со стандартного набора. Ну ведь правда ведь я не могу дать ссылку на библиотеку! Я так и написал.
Народ, вы скажите, если библиотека версии 5.8.3 ArduinoJson бывает разная в наборах к Arduino IDE, то как это различить и какую из библиотек версии 5.8.3 надо поставить? Или напишите, что в 5.8.3 не поддерживается Remove! Ну просто обсуждаем уже пол дня что теплое, а что мягкое, а ни на грамм не продвинулись. Я могу дать ссылку откуда скачал Arduino IDE на новую виртуалку. https://amperka.ru/page/arduino-ide. Я к тому что там лежит библиотека, которой я пользуюсь.
Я могу дать ссылку откуда скачал Arduino IDE на новую виртуалку. https://amperka.ru/page/arduino-ide. Я к тому что там лежит библиотека, которой я пользуюсь.
блиин.... ну я просто не выдержал уже. Ну нахера мне ссылка на Амперку7
Полено умнее вас, ну вот по другому и не сказать... Вам уже два человека, кроме меня. сказали - что ЭТА БИБЛИОТЕКА НЕ ЛЕЖИТ в дистрибутиве АРДУИНО ИДЕ! Нет ее там, блин!
По вашим же словам - Вы сначала ставите ИДЕ, а потом ручками подтягиваете туда библиотеку, через менеджер библиотек. И что вы туда подтягиваете - один черт знает. Как мне это узнать без ссылки? предлагаете тоже поставить с нуля ИДЕ и выбрать библиотеку в менеджере?? - а "ключ от квартиры где деньги лежат" не желаете?
А вы продолжаете твердить, что библиотека у вас стандартная и лежит в ИДЕ.
Хомус, вы не петрите в элементарных вещах. Сходили бы, что ли, почитали описание для чайников на сайте у гайвера того же, что такое библиотеки и как их ставить.
Хорошо. И я думаю, что те библиотеки уже есть в дистрибутиве. Ну как скажем вы винду поставили, но ставится стандартный набор компонентов. А вам нужен скажем telnet client. Вы идете в компоненты и доставляете его оттуда. Я думал, что и с библиотеками то же самое происходит. Если я не прав, то вот все что там есть в менеджере библиотек. Вот ссылка, которая там значится more info.
https://arduinojson.org/?utm_source=meta&utm_medium=library.properties
Если это то что надо, то надо было так и сказать. Еще раз скажу, что я думал, да и пока думаю, что все эти библиотеки лежат в дистрибутиве свернутые и не установленные.
Ну если уж и это не то что надо, тогда не знаю где еще взять ссылку? Как понять откуда менеджер библиотек берет саму библиотеку.
Xomyc, если не секрет, что за проект такой? Немного сталкивался с этой библиотекой, ну так, немного совсем.