Clojure 解放者的JSON表示问题

Clojure 解放者的JSON表示问题,clojure,liberator,Clojure,Liberator,我试图用Liberator定义一个非常简单的资源。为了开始一个简单的示例,我编写了如下处理程序: (resource :handle-ok {:hello "world"}) 但是,尽管传递了一个值(不是零),我还是得到了以下异常: java.lang.IllegalArgumentException:调度值为null的多方法“render map generic”中没有方法 这个问题也出现在我的实际资源中,因此我试图明确说明它应该如何表示映射,我包括::可用的媒体类型[“applicat

我试图用Liberator定义一个非常简单的资源。为了开始一个简单的示例,我编写了如下处理程序:

(resource
  :handle-ok {:hello "world"})
但是,尽管传递了一个值(不是零),我还是得到了以下异常:

java.lang.IllegalArgumentException
:调度值为null的多方法“render map generic”中没有方法

这个问题也出现在我的实际资源中,因此我试图明确说明它应该如何表示映射,我包括:
:可用的媒体类型[“application/json”]

现在它工作了(让我惊讶的是我不得不这么做),但是现在每当我指出资源不存在时,我都会得到一个非常奇怪的错误响应(不是异常)。并证明:

(resource
  :available-media-types ["application/json"]
  :exists? false
  :handle-ok {:hello "world"})
现在,我得到了一个404(我非常感谢),带有以下响应主体:

分析JSON数据时出错

JSON中位于位置0处的意外标记R

这是
x-librator-trace

:decision(:初始化上下文{});:决定(:服务可用?正确);:决策(:已知方法?:获取);:判定(:uri太长?错误);:决策(:允许的方法?:获取);:决定(:格式错误?错误);:决定(:授权?正确);:决定(:允许?正确);:决策(:有效内容标题?为真);:决策(:已知内容类型?为真);:判定(:有效实体长度?真);:决策(:是选项?否);:判定(:accept exists?[false{:representation{:media type“application/json”}]);:决定(:接受语言存在?无);:判定(:接受字符集存在?无);:判定(:接受编码存在?无);:决策(:可处理?为真);:决定(:存在?错误);:决定(:如果缺少匹配星?错误);:决定(:方法put?false);:决定(:存在?错误);:决定(:发布到缺失?错误);:处理程序(:未找到句柄)

您可能会从中建议,我可以直接破解并定义一个
:handle not found
处理程序,我已经找到了,但是它会被这个响应完全覆盖

我不确定这是一个bug还是我只是没有正确使用Liberator。由于这个例子很简单,我假设是后者。但另一方面,当我使用“application/edn”时,它可以完美地工作。我还想知道这是否是一个回归,所以我检查了几个版本,但结果相同

(resource
  :available-media-types ["application/json"]
  :exists? false
  :handle-ok {:hello "world"})