将Clojure字节数组编码为JSON

时间:2014-06-10 21:38:52

标签: json clojure cheshire

我需要将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)

所以我试图添加自定义编码器。我是以正确的方式做到这一点吗?

1 个答案:

答案 0 :(得分:4)

虽然Clojure将解析包含.的文字符号作为符号命名的Java类,但您不能将数组类指定为Clojure文字,因为读者会将[解释为表示符号的符号向量的开头。正如this thread所建议的那样,获取字节数组类的最简洁方法是:

 (add-encoder (Class/forName "[B") encode-seq)