ASON и JSON
sergey shishkinВо-первых, мусорные строки
Вы заметили, чего не хватает в примере главной страницы? Строки не нужны для записи широкого диапазона типов данных:
![](/file/f7160e9d66c284d374120.jpg)
Конечно, формат JSON поддерживает логические значения (истина / ложь), целые числа, числа с плавающей запятой и строки, но если вам нужны другие типы данных, вы пишете их как строки и конвертируете их отдельно.
Представьте, если бы вы могли написать этот JSON:
![](/file/16a6b87c5a33e54e2eb76.jpg)
Как это в ASON:
![](/file/782fe159763b27fdf4fb8.jpg)
ASON поддерживает строки, целые числа, числа с плавающей запятой и логические значения, а также символы (слова), даты, время, валюту, версии, адреса электронной почты, сетевые адреса, гипертекстовые теги, а также шестнадцатеричные числа и двоичные данные с основанием 64. Когда ASON анализирует его, тип данных каждого значения определяется и конвертируется автоматически. Это значительно упрощает использование в программах.
Без запятых
Обратите внимание, что JSON требует запятых, а ASON - нет. Это важнее, чем кажется на первый взгляд.
Во-первых, поскольку значения всегда разделяются пробелами, запятые на самом деле не нужны. Это просто синтаксический сахар.
Но, что более важно, запятые затрудняют представление кода массивами. Конечно, вы могли бы написать кодовый оператор в JSON следующим образом:
![](/file/e702032c3342702cc6fc9.jpg)
Но запятые мешают. Они все испортили. В ASON вы просто напишите:
![](/file/1c4731478ff6f4cd246e5.jpg)
Это довольно ясно показывает преимущество массивов без запятых, а также преимущество слов как символов, а не строк.
Учитывает символы
В приведенном выше примере показано еще одно важное отличие. В ASON вы можете использовать слова как символы. Когда они анализируются, слова токенизируются и сохраняются в таблице символов. Это делает слово простым значением, которому можно присвоить значение.
Хотя это может быть неочевидно, JSON на самом деле делает это для логических значений true и false. Это позволяет вам напрямую ссылаться на эти слова. Это не струны. Они имеют особое значение, поскольку не являются строками. Это символы.
И это сила символов, обобщенная в ASON. Возьмем этот пример ASON, где это слово print
используется для обозначения особого действия:
![](/file/6f5c34fbbd6a8d79efa4e.jpg)
В JSON нет эквивалента. Он не поддерживает символы. Оба элемента должны быть строками, записанными следующим образом:
![](/file/2f9e38e8836a5d29be625.jpg)
Но сейчас непонятно, что print
это особенная акция. Ничто не указывает на то, что это строка.
Более чистые объекты
Объекты JSON - это коллекции пар «ключ-значение», где ключи записаны в виде строк. Вот пример:
![](/file/62ca1c707c904d3dd9dde.jpg)
В ASON ключевыми значениями являются слова, а не строки. Вышесказанное будет записано так:
![](/file/35f4926bc6be2b58bc7d0.jpg)
Если вы использовали объекты JavaScript, значит, вы знаком с этим форматом. Он чище и проще, но также позволяет ссылаться на ключевые значения как на слова, что делает возможным код. Например, в ASON вы можете написать:
![](/file/de64b68ed75a073ad6fc5.jpg)
Конечно, это пример безымянного объекта, и слова выше должны быть привязаны к контексту объекта, но больше об объектах будет рассказано на страницах AltScript.