3

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

所以我正在尝试添加一个自定义编码器。我是否以正确的方式这样做?

4

1 回答 1

4

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

 (add-encoder (Class/forName "[B") encode-seq)
于 2014-06-10T22:23:02.080 回答