我需要将Clojure字节数组编码为JSON。我一直在尝试使用Cheshire的add-encoder函数做到这一点,像这样:
(add-encoder [Ljava.lang.Byte encode-seq)
问题是读者总是抱怨不匹配的分隔符。我正在尝试编码如下内容:
{:bytes #<byte[] [B@9de27c>}
但是这总是给我
JsonGenerationException Cannot JSON encode object of class: class [B: [B@9de27c cheshire.generate/generate (generate.clj:147)
所以我试图添加一个自定义编码器。我这样做对吗?
虽然Clojure会将包含.
的文字符号解析为由该符号命名的Java类,但您不能将数组类指定为Clojure文字符号,因为读者会将[
解释为表示矢量开始的标记。正如这个线程所建议的,获得字节数组类的最简洁的方法是:
(add-encoder (Class/forName "[B") encode-seq)