Часто возникает задача преобразования JSON в другие форматы, особенно в XML или HTML. Очевидное решение заключается в использовании языка программирования (ECMAScript, Ruby, …) и DOM-API.
XML можно преобразовать в другой XML-документ, с помощью правил преобразования (XSLT) и применяя эти правила с помощью XSLT-процессора.
Следуя этой концепции, я экспериментировал с набором правил преобразования (записанных в JSON). В результате, по аналогии с XML / XSLT сочетание JSON / JSONT может использоваться для преобразования JSON в любом другом формат.
И используя процессор jsonT(data, rules) применим правило к JSON данным для получения результата
Принцип работы JSONT
Набором правил является простой словарь. Таким образом, каждое правило — это пара (имя, значение).
Имя правила обычно является выражением для доступа к объекту данных. Значение правила — это строка или функция с одним аргументом, которая вычисляется во время трансформации.
Правило, заданное строкой, может содержать одно или несколько выражений, заключенных в фигурные скобки
{выражение}
Которое всегда становится строкой.
Если выражение ссылается на имя правила, то это правило вычисляется
Если результатом выражения является простой тип, то его значение конвертируется в строку
Если результатом выражение является массив / словарь, то каждый элемент, обрабатывается соответствующим образом
Знак $ как часть выражение заменяется на имя правила
Если выражение имеет явный вид
@
name(expr), то вызывается функция name, а возвращаемое значение преобразуется в строку
Выходной JSON объект можно получить с помощью ключевого слова self
Имена правил для элементов массива используют синтаксис name[*]. Если используется знак $ в строке правила, * указывает на индекс массива.
Члены входного объекта, которые не имеют правил трансформации и на которые нет ссылкок, а также выражения, которые вычисляются в undefined не образуют выходных данных.
Комментарии: