Emacs’s preferred way of representing JSON is via Lisp lists. In Eglot, the syntax of this list is the simplest possible (the one with fewer parenthesis), a plist (see Property Lists in GNU Emacs Lisp Reference Manual).
The plist may be arbitrarily complex, and generally containing other keyword-value property sub-plists corresponding to JSON sub-objects.
For representing the JSON leaf values true
, false
,
null
and {}
, you can use the Lisp values t
,
:json-false
, nil
, and eglot-{}
, respectively.
JSON arrays are represented as Elisp vectors surrounded by square brackets
(see Vectors in GNU Emacs Lisp Reference Manual).
For example, the plist
(:pylsp (:plugins (:jedi_completion (:include_params t :fuzzy t :cache_for ["pandas" "numpy"]) :pylint (:enabled :json-false))) :gopls (:usePlaceholders t))
is serialized by Eglot to the following JSON text:
{ "pylsp": { "plugins": { "jedi_completion": { "include_params": true, "fuzzy": true, "cache_for": [ "pandas", "numpy" ] }, "pylint": { "enabled": false } } }, "gopls": { "usePlaceholders": true } }