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"} ""
これは何が原因ですか?そして、検討する価値のある別のアプローチはありますか (この型トークンに基づいてレコードにデコードできる必要もあります)?