Добрый вечер. Нужна помощь с coercer'ом и условными схемами (shema.core.conditional) из plumatic/schema. Имеется некий чёрный ящик (RETE сеть), которому на вход подаются альфа-токены, которые представлены в виде hash-map'ов вида {:type :some-type, :some-key some-value-1, :some-key-2 some-value-2, ..., :some-key-n some-value-n}. Все эти токены присылаются извне в формате JSON. Присылается одновременно несколько токенов, т.е. приходит упорядоченный набор ассоциативных массивов [{} {} {} ... {}]. Для декодирования я использую cheshire (ключи преобразуются из строк в keyword'ы при декодировании). Мне остаётся преобразовать значения и валидировать эти структуры. Для этого я использую библиотеку plumatic/schema. Я написал свои схемы для каждого типа (:type в hash-map'ах) токенов. Проблема в том, что мне надо пройтись по списку токенов разного типа и сделать соответствующие преобразования типов данных + валидировать токены. Как это лучше реализовать? (Условная схема (shema.core.conditional) в данном случае не работает с coercer'ом, т.к. типы у меня описаны тоже keyword'ами, как и ключи (:type :some-type), а в json они приходят в виде строк. В голову пока приходит заменить shema.core.conditional на обычную hash-map'у, где ключами будут типы токенов (значения :some-type), а значениями соответствующие схемы. Из этой структуры буду доставать схему для данного токена и отправлять её в coercer.) Пример схемы токена и условной схемы
https://pastebin.com/gnp33PtN