JSONRPCのJSONとLispのplist(プロパティリストを参照)は交換することができます。JSON互換のplistをディスパッチャ関数に渡したり、同様にJSON互換のplistをjsonrpc-notify
、jsonrpc-request
、jsonrpc-async-request
に渡すことができます。
plist処理を容易にするために、このライブラリーはcl-lib
ライブラリー(cl-lib in Common
Lisp Extensions for GNU Emacs
Lispを参照)の積極的に使用しており、そのクライアントにたいしてもこれを同じように提案します(強制ではない)。以下の例のようにJSONオブジェクトの非構造化用lambdaの作成にはマクロjsonrpc-lambda
を使用できます:
(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)))