документация у рагеля фиговая — синтаксис птичий, и при этом нет толковых примеров с разбором, придется гуглить, и продираться через примеры чужих исходников
находить простые примеры на гитхабе, и по кусочкам разбирать
Речь не о документации, речь о самом алгоритме
Как только он тут появится текстом сразу придет понимание что для плоского жсона он не может быть быстрее чем последовательное сравнение массивов с именами переменных с массивом строки жсона просто потому что в любом общем случае любому алгоритму придется сравнить всю строку (ну ок, за исключением стартовой/финишной скобок [] если нас не интересует факт того что пачка целиковая 😁) либо со всеми именами либо пройти всю строку в поисках последовательностей начала объявления имен и значений и выдергивания их для последующего … ага, сравнения
Более того, для случаев когда нас интересуют не все переменные, оптимизация последовательного сравнения лежит на поверхности:
- при совпадении первого символа надо проверять что символ : (сразу убедишься что длина совпадает и это именно пара имя-значение) находится по индексу первого_символа(«)+длина_имени_переменной+2 - если да то проверяем имя если нет то пропускаем как минимум 8 итераций полностью и едем дальше. Ессно работает только при условии что длина искомой переменной меньше чем длина самого короткого возможного имени+8 (надо перепроверить, насколько помню в жсоне минимальная последовательность «А»:«»,«) символов - иначе можно пропустить полную пару имя-значение и нарваться на данные из другой переменной
- надо собрать статистику имен переменных и если они, например, начинаются с одинакового префикса то соотв его пропускать, и прикинуть процент отличий символов по расположению - т.е. если у тебя переменные chan1, chan2, chan3 то тебе логично проверять индекс +4 при нахождении символа с в жсоне
И тд и тп
Но это все требует заранее определенной информации об именах переменных - того что ни одна библиотека «общего случая» за тебя не сделает
Это все очень наглядно и просто расписывается алгоритмом на бумажке буквально в несколько строк
Без апелляций к курсу информатики, библиотекам и прочему
И да, для разной иерархии данных в жсоне нужны разные оптимизации - как только мы уходим из плоскости в дерево у нас меняется подход если мы рассматриваем вариант того что нам нужно не все из прилетевшего жсона (тогда нам желательно сразу знать все имена искомых переменных и их возможную глубину нахождения для пропуска лишних веток если нужное не может быть дальше N уровня и тп)
Короче жсон - с одной стороны отличный полигон для велосипедостроения и может быть заточен на довольно высокие скорости обработки, а с другой стороны для микроконтроллеров … несколько избыточен в большинстве случаев 😁 ибо всегда проиграет по скорости и потреблению памяти даже не самому внятному бинарному протоколу 🤷🏻♂️😁