33.32.3 Формат объекта JSONRPC

Объекты JSONRPC передаются в виде списков свойств Lisp (см. Списки свойств): совместимые с JSON списки свойств передаются в диспетчерские функции, и аналогично, совместимые с JSON списки свойств следует передавать в jsonrpc-notify, jsonrpc-request и jsonrpc-async-request.

Для облегчения обработки списков свойств эта библиотека широко использует библиотеку cl-lib (см. cl-lib в Common Lisp Extensions for 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)))