Поддержка Emacs JSON (JavaScript Object Notation) предоставляет несколько функций для преобразования между объектами Lisp и значениями JSON. Любое значение JSON может быть преобразовано в объект Lisp, но не наоборот. В частности:
true, null, false.
true представляется символом t. По умолчанию
остальные два представляются, соответственно, символами
:null и :false.
assq.
Обратите внимание, что nil, будучи как допустимым alist, так и
допустимым plist, представляет {}, пустой объект JSON; а не
null, false или пустой массив, которые являются
разными значениями JSON.
Если какой-либо объект Lisp не может быть представлен в JSON, функции
сериализации вызовут ошибку типа wrong-type-argument.
Функции разбора также могут вызвать следующие ошибки:
json-unavailableВызывается, когда библиотека разбора недоступна.
json-end-of-fileВызывается при преждевременном окончании входного текста.
json-trailing-contentВызывается при обнаружении неожиданного ввода после первого разобранного объекта JSON.
json-parse-errorВызывается при обнаружении недопустимого синтаксиса JSON.
Значения верхнего уровня и подобъекты в этих значениях верхнего уровня могут быть сериализованы в JSON. Точно так же функции разбора вернут любой из возможных типов, описанных выше.
Эта функция возвращает новую unibyte-строку Lisp, содержащую JSON-представление object. Аргумент args — это список пар ключ/аргумент. Принимаются следующие ключевые слова:
:null-objectЗначение определяет, какой объект Lisp использовать для представления
ключевого слова JSON null. По умолчанию используется
символ :null.
:false-objectЗначение определяет, какой объект Lisp использовать для представления
ключевого слова JSON false. По умолчанию используется
символ :false.
Эта функция вставляет JSON-представление object в
текущий буфер перед точкой. Аргументы args интерпретируются
так же, как в json-serialize.
Эта функция разбирает значение JSON в string, которое
должно быть строкой Lisp. Если string не содержит
допустимого объекта JSON, эта функция вызывает ошибку json-parse-error.
Аргумент args — это список пар ключ/аргумент. Принимаются следующие ключевые слова:
:object-typeЗначение определяет, какой объект Lisp использовать для представления
сопоставлений ключ-значение объекта JSON. Это может быть либо
hash-table, по умолчанию, для создания хэш-таблиц со
строками в качестве ключей; alist для использования alist
с символами в качестве ключей; либо plist для использования
plist с символами ключевых слов в качестве ключей.
:array-typeЗначение определяет, какой объект Lisp использовать для представления
массива JSON. Это может быть либо array, по умолчанию,
для использования массивов Lisp; либо list для использования
списков.
:null-objectЗначение определяет, какой объект Lisp использовать для представления
ключевого слова JSON null. По умолчанию используется
символ :null.
:false-objectЗначение определяет, какой объект Lisp использовать для представления
ключевого слова JSON false. По умолчанию используется
символ :false.
Эта функция считывает следующее значение JSON из текущего буфера,
начиная с точки. Она перемещает точку в позицию сразу после
значения, если оно содержит допустимый объект JSON; в противном случае
вызывает ошибку json-parse-error и не перемещает
точку. Аргументы args интерпретируются так же, как в
json-parse-string.