JSON в программе FLProg.
- rw6cm
- Полковник
- Сообщения: 2372
- Зарегистрирован: 06 сен 2015, 20:25
- Имя: Владимир
- Поблагодарили: 41 раз
JSON в программе FLProg.
==== "JSON" ====
JSON с помощью FLProg.
Блок для создания документа формата json.
Строка "JSON" блоком без библиотек.
Распарсить "JSON".
[spoiler title=Библиотеки]
Библиотека ArduinoJson ver 6.x.x используется из дистрибутива FLProg
Находится в директории: диск:\FLProg_x.x.x\ideVx\portable\sketchbook\libraries\ArduinoJson
Блоки проверены в работе с ArduinoJson ver 6.17.3
[/spoiler]
В теме рассматриваются аспекты связанные с программой FLProg.
JSON с помощью FLProg.
Блок для создания документа формата json.
Строка "JSON" блоком без библиотек.
Распарсить "JSON".
[spoiler title=Библиотеки]
Библиотека ArduinoJson ver 6.x.x используется из дистрибутива FLProg
Находится в директории: диск:\FLProg_x.x.x\ideVx\portable\sketchbook\libraries\ArduinoJson
Блоки проверены в работе с ArduinoJson ver 6.17.3
[/spoiler]
В теме рассматриваются аспекты связанные с программой FLProg.
Win10-64, FLProg (portable)
- rw6cm
- Полковник
- Сообщения: 2372
- Зарегистрирован: 06 сен 2015, 20:25
- Имя: Владимир
- Поблагодарили: 41 раз
JSON в программе FLProg.
JSON в программе FLProg.
JSON это формат обмена данными. Удобен в визуальном восприятии, есть необходимый инструментарий,
поддерживают почти все языки, и есть библиотеки для ардуино.
Если надо передавать много структурированных данных - это для JSON.
[spoiler title=Описание]
Представим, что нам надо передать данные в виде объектов json.
Объект, это форма записи в строке, в виде {“имя_объекта” : его данные}
имена в пределах одной директории должны быть разные {“имя1”:данные, “имя2”:данные, “имя3”:данные}
все имена заключены в двойные кавычки.
Разделение между именем и данными знак ” : “
разделение между объектами знак “,”
начало и конец json - фигурные скобки { }.
Данные могут быть цифровыми (сюда относится любой цифровой тип С++), булевы (0,1, true, false), и строчные.
Рассмотрим пример, как собрать строку json в флп.
Из того что есть в флп подходит только блок сложения строк. Придется собирать строку по кусочкам.
Но здесь сразу сталкиваемся с первой неприятностью. В строчном формате С++ не допустимы подряд сдвоенные кавычки.
С++ метит строки своими двойными кавычками, вместе с нашими получаются по две подряд.
Чтобы это обойти, межу ними ставим экранировку, знак “\” (он не будет отображаться в строке после конвертации)
Вторая неприятность, что все данные будут только строчные т.к. блоки только для строк. Это не обойти.
Выглядит так: Как это будет выглядеть в веб проекте - пример в соседней ветке
Этот вариант подойдет для передачи не больших объемов данных в веб браузер .
Плюс здесь в том, что мы, не используя ардуино json библиотеку (экономим ресурсы), передаем данные в json формате,
которые будут разобраны json инструментами, но уже на стороне браузера.
Если нужно передавать структурированные данные, где много объектов массивов да еще вложенных друг в друга, собрать таким методом строку и не запутаться в кавычках скобках и тд будет сложно. А если что то надо добавить или передвинуть – это по сути все заново.
[/spoiler] flp7.3.3
JSON это формат обмена данными. Удобен в визуальном восприятии, есть необходимый инструментарий,
поддерживают почти все языки, и есть библиотеки для ардуино.
Если надо передавать много структурированных данных - это для JSON.
[spoiler title=Описание]
Представим, что нам надо передать данные в виде объектов json.
Объект, это форма записи в строке, в виде {“имя_объекта” : его данные}
имена в пределах одной директории должны быть разные {“имя1”:данные, “имя2”:данные, “имя3”:данные}
все имена заключены в двойные кавычки.
Разделение между именем и данными знак ” : “
разделение между объектами знак “,”
начало и конец json - фигурные скобки { }.
Данные могут быть цифровыми (сюда относится любой цифровой тип С++), булевы (0,1, true, false), и строчные.
Рассмотрим пример, как собрать строку json в флп.
Из того что есть в флп подходит только блок сложения строк. Придется собирать строку по кусочкам.
Но здесь сразу сталкиваемся с первой неприятностью. В строчном формате С++ не допустимы подряд сдвоенные кавычки.
С++ метит строки своими двойными кавычками, вместе с нашими получаются по две подряд.
Чтобы это обойти, межу ними ставим экранировку, знак “\” (он не будет отображаться в строке после конвертации)
Вторая неприятность, что все данные будут только строчные т.к. блоки только для строк. Это не обойти.
Выглядит так: Как это будет выглядеть в веб проекте - пример в соседней ветке
Этот вариант подойдет для передачи не больших объемов данных в веб браузер .
Плюс здесь в том, что мы, не используя ардуино json библиотеку (экономим ресурсы), передаем данные в json формате,
которые будут разобраны json инструментами, но уже на стороне браузера.
Если нужно передавать структурированные данные, где много объектов массивов да еще вложенных друг в друга, собрать таким методом строку и не запутаться в кавычках скобках и тд будет сложно. А если что то надо добавить или передвинуть – это по сути все заново.
[/spoiler] flp7.3.3
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Win10-64, FLProg (portable)
- rw6cm
- Полковник
- Сообщения: 2372
- Зарегистрирован: 06 сен 2015, 20:25
- Имя: Владимир
- Поблагодарили: 41 раз
JSON в программе FLProg.
В этом году, свободное зимнее время, посвятил изучению нового редактора ПБ и json формату.
Решил выложить на пробу свой первый блок, заодно закрепить в памяти полученные знания.
Блок для создания документа формата json.
С помощью этого ПБ можно вставлять в строку одномерные - двумерные объекты, массивы, массивы FLProg.
Есть возможность вставлять другие строки формата json.
[spoiler title=Знакомство с блоком]
Назначение блока зависит от выбранной позиции в настройке блока.
Чтобы создать строку json, нужен блок начала документа и блок конец документа.
Между ними вставляются в нужной последовательности, блоки объектов и массивов.
В настройке начального блока выставляем:
1. Имя документа json.
Значение по умолчанию – myDocJson
Для собираемой строки имя в ее блоках должно быть одно.
Если нужна не одна строка, имя в блоках другой строки должно быть другим.
Имена присваивать по правилам переменных С++
2. Свойство документа json.
Значение по умолчанию – статичное
Статичное – это когда у нас определенное количество объектов, массивов, и размер изменяется не в больших пределах.
Это режим работает быстрее, в нем не нужна фрагментации памяти. Этот выбор самый оптимальный.
Динамичное - это когда у нас нет постоянного количества объектов, массивов.
В какой то момент их может быть мало, в какой то очень много.
Допустим вставляем строки с разными списками, (список файлов CD),
он может быть пустым, а может и 100500 наименований.
В этом выборе скорость работы будет меньше, за счет постоянной фрагментации памяти.
3. Размер документа json.
Примерное значение, это сумма максимально возможных символов в строке + небольшой запас.
Более точнее можно узнать на сайте: https://arduinojson.org/v6/assistant/
Для этого вставляем в размер число с большим запасом,
вводим во все изменяемые позиции строки максимально возможные значения (по количеству символов).
Выводим строку в терминал. Копируем и вставляем на сайте. Получаем точный размер.
Если данные не константы, убираем в открывающей опции Tweaks в 3 разделе (Size) на сайте,
с пункта Assume keys are const char* галочку, и смотрим размер.
В блоке есть краткое описание. Также есть пояснения в примере проекта.
остальное допишу исходя из ваших вопросов.
[/spoiler] flp7.3.3
Решил выложить на пробу свой первый блок, заодно закрепить в памяти полученные знания.
Блок для создания документа формата json.
С помощью этого ПБ можно вставлять в строку одномерные - двумерные объекты, массивы, массивы FLProg.
Есть возможность вставлять другие строки формата json.
[spoiler title=Знакомство с блоком]
Назначение блока зависит от выбранной позиции в настройке блока.
Чтобы создать строку json, нужен блок начала документа и блок конец документа.
Между ними вставляются в нужной последовательности, блоки объектов и массивов.
В настройке начального блока выставляем:
1. Имя документа json.
Значение по умолчанию – myDocJson
Для собираемой строки имя в ее блоках должно быть одно.
Если нужна не одна строка, имя в блоках другой строки должно быть другим.
Имена присваивать по правилам переменных С++
2. Свойство документа json.
Значение по умолчанию – статичное
Статичное – это когда у нас определенное количество объектов, массивов, и размер изменяется не в больших пределах.
Это режим работает быстрее, в нем не нужна фрагментации памяти. Этот выбор самый оптимальный.
Динамичное - это когда у нас нет постоянного количества объектов, массивов.
В какой то момент их может быть мало, в какой то очень много.
Допустим вставляем строки с разными списками, (список файлов CD),
он может быть пустым, а может и 100500 наименований.
В этом выборе скорость работы будет меньше, за счет постоянной фрагментации памяти.
3. Размер документа json.
Примерное значение, это сумма максимально возможных символов в строке + небольшой запас.
Более точнее можно узнать на сайте: https://arduinojson.org/v6/assistant/
Для этого вставляем в размер число с большим запасом,
вводим во все изменяемые позиции строки максимально возможные значения (по количеству символов).
Выводим строку в терминал. Копируем и вставляем на сайте. Получаем точный размер.
Если данные не константы, убираем в открывающей опции Tweaks в 3 разделе (Size) на сайте,
с пункта Assume keys are const char* галочку, и смотрим размер.
В блоке есть краткое описание. Также есть пояснения в примере проекта.
остальное допишу исходя из ваших вопросов.
[/spoiler] flp7.3.3
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Win10-64, FLProg (portable)
-
- Сержант
- Сообщения: 269
- Зарегистрирован: 18 ноя 2015, 22:42
- Откуда: Близко к Ставрополю
- Имя: Евгений
- Поблагодарили: 2 раза
JSON в программе FLProg.
Люто плюсую за поднятие очень полезной темы! JSON формат передачи данных очень много используется в системах домашней автоматизации. Если сможете реализовать интуитивный блок для работы с JSON форматом - это будет очень полезно. Если использовать блок сложения строк при большом кол-ве данных, то схема получается громоздкой и тяжело читаемой. Запутаться очень легко... Вот кусок моего примера формирования конфига для Home Assistant.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- rw6cm
- Полковник
- Сообщения: 2372
- Зарегистрирован: 06 сен 2015, 20:25
- Имя: Владимир
- Поблагодарили: 41 раз
JSON в программе FLProg.
Строка "JSON" блоком без библиотек.
Блок в этом примере не использует библиотек.
В нем не надо рассчитывать размер json, как в предыдущем варианте.
Он более гибок, имеет больше возможностей, и занимает меньше памяти.
[spoiler] [/spoiler]
Блок в этом примере не использует библиотек.
В нем не надо рассчитывать размер json, как в предыдущем варианте.
Он более гибок, имеет больше возможностей, и занимает меньше памяти.
[spoiler] [/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось rw6cm 27 фев 2021, 11:08, всего редактировалось 1 раз.
Причина: заменил из за глюка
Причина: заменил из за глюка
Win10-64, FLProg (portable)
-
- Рядовой
- Сообщения: 16
- Зарегистрирован: 27 дек 2015, 19:25
- Откуда: Москва
- Имя: Владимир
JSON в программе FLProg.
[ref=#ff8000]rw6cm[/ref], Шикарная реализация в новом редакторе! Большое спасибо!
- rw6cm
- Полковник
- Сообщения: 2372
- Зарегистрирован: 06 сен 2015, 20:25
- Имя: Владимир
- Поблагодарили: 41 раз
JSON в программе FLProg.
Обнаружил странный глюк в флп 7.3.3
Относится это к посту №5 В нем я обновил сейчас проект в котором был глюк.
От чего он происходит.
[spoiler]
Если скопировать любую надпись с другого проекта сделанного в флп 7.3.3 и вставить в проект поста 5 на плату 2
происходит дублирование массивов flprog которые имеют свои блоки в проекте.
как это может быть связано хз
это до копирования это надпись в другом проекте это эффект после копирования [/spoiler]
Вот так... собирал проект, чтобы заново не набирать, скопировал с аналогичного проекта безобидные надписи.
сохранил, сегодня открываю а он не рабочий
весело! 
п/с Если после этого зайти в массивы , и перейти на временно созданные новые, а потом назад, то глюк исчезает, и проект рабочий )))
Относится это к посту №5 В нем я обновил сейчас проект в котором был глюк.
От чего он происходит.
[spoiler]
Если скопировать любую надпись с другого проекта сделанного в флп 7.3.3 и вставить в проект поста 5 на плату 2
происходит дублирование массивов flprog которые имеют свои блоки в проекте.
как это может быть связано хз



это до копирования это надпись в другом проекте это эффект после копирования [/spoiler]
Вот так... собирал проект, чтобы заново не набирать, скопировал с аналогичного проекта безобидные надписи.
сохранил, сегодня открываю а он не рабочий


п/с Если после этого зайти в массивы , и перейти на временно созданные новые, а потом назад, то глюк исчезает, и проект рабочий )))
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Win10-64, FLProg (portable)
- rw6cm
- Полковник
- Сообщения: 2372
- Зарегистрирован: 06 сен 2015, 20:25
- Имя: Владимир
- Поблагодарили: 41 раз
JSON в программе FLProg.
Распарсить "JSON".
Блок, для извлечения данных из строки формата JSON.
В качестве примера запрашиваются Json строки c веб серверов.
Выбираются в них нужные данные и передаются в UART.
Описание в блоках и проекте.
ESP32
flp 7.3.3
Блок, для извлечения данных из строки формата JSON.
В качестве примера запрашиваются Json строки c веб серверов.
Выбираются в них нужные данные и передаются в UART.
Описание в блоках и проекте.
ESP32
flp 7.3.3
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Win10-64, FLProg (portable)
JSON в программе FLProg.
Првет, всем.
На новой json делал кто то информер погоды?
Существующие коды в сети работают только с 5хххх
Так же просьба.
Помогите подружить блок get запроса погоды и espui
Есть конфликт , вероятно в буфере.
Оба блока хотят буфер json.
На новой json делал кто то информер погоды?
Существующие коды в сети работают только с 5хххх
Так же просьба.
Помогите подружить блок get запроса погоды и espui
Есть конфликт , вероятно в буфере.
Оба блока хотят буфер json.
-
- Рядовой
- Сообщения: 82
- Зарегистрирован: 24 июн 2020, 21:21
- Откуда: RUS31
- Имя: Egor
- Благодарил (а): 1 раз
JSON в программе FLProg.
Здесь выложил пользовательский блок - информер погоды: viewtopic.php?f=71&t=7193#p100957Qwert855 писал(а): 14 мар 2021, 17:30 Првет, всем.
На новой json делал кто то информер погоды?
Существующие коды в сети работают только с 5хххх
Так же просьба.
Помогите подружить блок get запроса погоды и espui
Есть конфликт , вероятно в буфере.
Оба блока хотят буфер json.
на новой JSON 6 версии, дружит с ESPUI.
JSON в программе FLProg.
спасибоrogekam писал(а): 14 мар 2021, 18:56Здесь выложил пользовательский блок - информер погоды: viewtopic.php?f=71&t=7193#p100957Qwert855 писал(а): 14 мар 2021, 17:30 Првет, всем.
На новой json делал кто то информер погоды?
Существующие коды в сети работают только с 5хххх
Так же просьба.
Помогите подружить блок get запроса погоды и espui
Есть конфликт , вероятно в буфере.
Оба блока хотят буфер json.
на новой JSON 6 версии, дружит с ESPUI.
JSON в программе FLProg.
А возможно ли сделать чтобы можно было выбирать текст в кавычках или без? Иногда нужно, как в примере ниже с "brightness". true без кавычек.
{
"~": "homeassistant/light/kitchen",
"name": "Kitchen",
"unique_id": "kitchen_light",
"cmd_t": "~/set",
"stat_t": "~/state",
"schema": "json",
"brightness": true
}
{
"~": "homeassistant/light/kitchen",
"name": "Kitchen",
"unique_id": "kitchen_light",
"cmd_t": "~/set",
"stat_t": "~/state",
"schema": "json",
"brightness": true
}
- rw6cm
- Полковник
- Сообщения: 2372
- Зарегистрирован: 06 сен 2015, 20:25
- Имя: Владимир
- Поблагодарили: 41 раз
JSON в программе FLProg.
true это не текст, а boolean данные.
в Json текст может быть только в кавычках.
Win10-64, FLProg (portable)
JSON в программе FLProg.
Если я выбираю в настройках булеан то вместо true выводиться 1. А как чтобы именно true выводилось?
- rw6cm
- Полковник
- Сообщения: 2372
- Зарегистрирован: 06 сен 2015, 20:25
- Имя: Владимир
- Поблагодарили: 41 раз
JSON в программе FLProg.
true=1, false=0 по сути для С++ это одно и тоже.
Это может быть критично, если передавать эти данные на сайт, с автоматическим определением типа данных.
Типа онлайн конвертеры, ассистенты итд. Они с большой вероятностью определят это как int.
А для сайтов настроенных на прием булеан данных это не критично.
сделал булеан в виде true false flp7.3.5
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Win10-64, FLProg (portable)
-
- Рядовой
- Сообщения: 58
- Зарегистрирован: 28 апр 2021, 14:45
- Имя: Евгений
JSON в программе FLProg.
[ref=#ff8000]rw6cm[/ref],
Подскажите, пожалуйста, Как собрать массив для записи в переменную и вывести её на новый веб интерфейс?
Хочу дальше обработать ее в JS и сформировать нужные данные.
Понимаю, что где-то в блоке надо добавить "обратный слэш", но где
Подскажите, пожалуйста, Как собрать массив для записи в переменную и вывести её на новый веб интерфейс?
Хочу дальше обработать ее в JS и сформировать нужные данные.
Понимаю, что где-то в блоке надо добавить "обратный слэш", но где

- rw6cm
- Полковник
- Сообщения: 2372
- Зарегистрирован: 06 сен 2015, 20:25
- Имя: Владимир
- Поблагодарили: 41 раз
JSON в программе FLProg.
Еще не пробовал новый интерфейс. Пока сказать не могу.DrScorpion86 писал(а): 17 янв 2022, 20:39 собрать массив для записи в переменную и вывести её на новый веб интерфейс?
Win10-64, FLProg (portable)
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 6 гостей