JSON



  • Название: JSON;
    Версия: 2.2;
    Данные: JSON.zip;
    Согласие на добавление модуля в BAS: Да;
    Описание: Обновленная и улучшенная версия модуля JSON. Данный модуль позволяет легко оперировать с данными в JSON формате, используя язык запросов JSONPath (JPath). Из главных новых возможностей и обновлений:

    1. Убраны действия Получить ключи и Получить значения;
    2. Теперь действия Получить ключ и Получить значение всегда возвращают самый первый подходящий элемент;
    3. Добавлены действия Получить все ключи и Получить все значения - аналог обычных действий, но в качестве результата всегда возвращает список значений или ключей;
    4. Добавлено действие Изменить формат - позволяет преобразовывать объекты в JSON-строки и наоборот. Это обертка для JSON.parse и JSON.stringify с дополнительными проверками для типов.
    5. Добавлено действие Изменить значение - позволяет менять значения дочерних параметров либо в объекте, либо в JSON строке.
    6. Добавлено действий Удалить значение - позволяет удалять значения дочерних параметров либо в объекте, либо в JSON строке.

    Все действия поддерживают стандартную спецификацию JSONPath. Её можно найти здесь. Кроме этого, добавлена возможность использовать упрощенные пути. Например, вместо $.messages.data.x[0] можно написать messages.data.x[0], т.е. движок сам подставляет токен корневого элемента. Вместо $..data (поиск data во всех возможных объектах), можно использовать запрос ..data.

    Все действия работают как с объектами, так и со строками. Это означает, что вы можете менять значения в JSON-строке, при этом не меняя её формат, либо парсить из неё данные, также не трогая саму строку. Тоже самое касается и объектов.

    Сделана полноценная документация для каждого действия, с различными примерами. Для полей запросов добавлены варианты и примеры.

    История версий:



  • @oyasumi-punpun Спасибо, ждал модуль. Раньше его мало юзал т.к лень было каждый раз закидывать его 😉 Осталось телегу от Фокса дождаться модуль улучшенный.



  • Модуль выкуплен bablosoft и появится в новой версии BAS.
    Тем не менее, его можно использовать уже сейчас.
    Автор проделал много работы, и модуль был значительно улучшен со времени первого релиза.
    В случае возникновения проблем, их можно описать в данной теме.



  • Обновил модуль, пофиксил баг с фильтрами - не всегда корректно отрабатывали запросы с фильтром вида [?(@.someproperty == somevalue)], убрал лишний вывод в лог при выполнении кода в круглых скобках (а никто и не заметил).



  • Модуль шикарный, спасибо.
    Только возник вопрос как вытащить два значения
    и сразу положить в список с разделителем.

    на обычном json использую что то похожее на :

    [[USERS]] = JSON.parse([[SAVED_CONTENT]])
    [[RESULT]] = []
    var arr = JSON.parse([[SAVED_CONTENT]])
    for(var i = 0; i < arr.length; i++){
    [[RESULT]].push(arr[i].id + ":" + arr[i].isOnline)
    }
    


  • @Oyasumi-Punpun Спасибо за версию 2,2 особенно вот за изменить значиние
    Каждый раз пересобирать переменные можно конечно и я привык, но с этим экшеном дело пойдет дюже веселее. и кода меньше.



  • Решение 2e964c72-bce8-4b28-8a33-c38adf47974c-image.png

    @Oyasumi-Punpun Здравствуйте заметил необычность. Она как бы не напрягает но она есть
    Вот



  • @tts9 said in JSON:

    @Oyasumi-Punpun Здравствуйте заметил необычность. Она как бы не напрягает но она есть
    Вот

    Лично меня это никак не затрагивает. я даже ваш модуль адаптировал под себя, и не использую в экшенах, но вот это заметил. Входящую переменную он почему то берет только в [object Object]

    А если поле "JSON строка или объект для изменения" перевести из типа "string" в тип "expression"?



  • @Fox Отрабатывает. Хм. В доках опишите, ато воплей потом не оберетесь



  • @tts9 said in JSON:

    @Fox Отрабатывает. Хм. В доках опишите, ато воплей потом не оберетесь

    Это спецификация BAS, проверьте на любом действии:
    e812839d-2ab7-4bf8-84cc-ca2935e3cf0c-изображение.png

    чтобы действие определило переменную, нужно её обрамить в квадратные скобки, либо использовать тип "expression"

    Это распространяется и на другие переменные:
    145e88af-60c3-47ff-9d5f-31999b0e54a9-изображение.png

    тестовый скрипт



  • @Fox Любую?
    На списках ошибки не дает, просто не видит ее как переменную. Я понял уже.
    parsed_list.png
    Он ее строкой и считает, но раньше емнип было не так и вводить можно было как удобно



  • @tts9 said in JSON:

    @Fox Любую?
    На списках ошибки не дает, просто не видит ее как переменную. Я понял уже.
    Он ее строкой и считает, но раньше емнип было не так и вводить можно было как удобно

    В модуле "список" в некоторых действиях нужно указывать только имя переменной (по этому цвет текста зелёный), если указать переменную с VAR_ или с квадратными скобками - будет ошибка

    d02eda47-13ab-42ab-8cad-14a7cccb1753-изображение.png

    Тестовый скрипт



  • @tts9 Вопрос снимается. Если кто-либо столкнется с похожей проблемой это не модуль, неверные условия или правильнее использования методов которые сейчас не работают. Если вы не используете квадратные скобки для входящих переменных то используйте тип expression. Иначе может получится неожиданность с которой я и столкнулся. А сам модуль еще раз отличный.


Log in to reply