我猜可能是这样,record/struct 需要知道它的结构才有意义,而它的实例只保留了各个字段的 value,所以没法转成 key/value 形式。
#+BEGIN_SRC elisp
(cl-defstruct (person (:constructor person-create)
(:copier nil))
name age sex)
(person-create :name "Tom" :age 20 :sex "Male")
#+END_SRC
#+RESULTS:
: #s(person "Tom" 20 "Male")
当然要转也不是不可能,只要数据能读取就能转:
-
转成key/value 形式,
给 json-encode 增加一个字段描述的参数:
(json-encode tom (cl-struct-slot-info 'person))
或者实现一个
struct-to-alist
还更靠谱:(json-encode (struct-to-alist tom 'person)
-
当作 list 对待。先把 record 转成 list,然后转 json。