将Clojure字节数组编码为JSON



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

相关内容

  • 没有找到相关文章

最新更新