Cheshire 的自定义编码器似乎适合这个问题,我写了一个小辅助函数:
(defn add-rec-encoder [Rec type-token]
(add-encoder Rec
(fn [rec jg] (.writeString jg
(str (encode-map (assoc rec :type type-token) jg))))))
(defrecord A [a])
(add-rec-encoder A "A")
(encode (->A "abc"))
但它会产生一个奇怪的拖尾""
。
=> {"a":"abc","type":"A"} ""
这是什么原因造成的?还有另一种值得考虑的方法(我还需要能够解码回基于此类型令牌的记录)?