33.32.3 JSONRPC JSON 对象格式

JSONRPC JSON 对象以 Lisp 属性列表(plist)的形式进行交换(see 属性列表): 与 JSON 兼容的属性列表会被传递给分发函数;同样地,也应当向 jsonrpc-notifyjsonrpc-request 以及 jsonrpc-async-request 传入与 JSON 兼容的属性列表。

为方便处理属性列表,本库大量使用了 cl-lib 库(see cl-lib in 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)))