Формат JSON-объектов JSONRPC
JSONRPC JSON-объекты обмениваются в формате Lisp plists (см. Списки свойств): совместимые с JSON plists передаются функциям-диспетчерам и, аналогично, совместимые с JSON plists должны быть переданы jsonrpc-notify, jsonrpc-request, и jsonrpc-async-request.
Для удобства работы со списками свойств, эта библиотека активно использует библиотеку cl-lib (см. cl-lib в Расширения Common Lisp для GNU Emacs Lisp) и рекомендует (но не требует) своим клиентам делать то же самое. Макрос jsonrpc-lambda может использоваться для создания лямбда-функции для разбора JSON-объекта, как в этом примере:
(jsonrpc-async-request
myproc :frobnicate `(:foo "trix")
:success-fn (jsonrpc-lambda (&key bar baz &allow-other-keys)
(message "Server replied back with %s and %s!"
bar baz))
:error-fn (jsonrpc-lambda (&key code message _data)
(message "Sadly, server reports %s: %s"
code message)))
Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/JSONRPC-JSON-object-format.html