如何在spray中将所有拒绝转换为自定义json?

如何在spray中将所有拒绝转换为自定义json?,json,scala,spray,spray-json,Json,Scala,Spray,Spray Json,当spray(spray.io)产生拒绝时,它会用字符串体进行响应。因为我的所有API客户机都会假设我的API只返回json,所以我希望全局地使每次拒绝都成为符合我们的错误对象格式的有效json对象。我怎样才能做到这一点 错误对象格式如下所示 { “详细信息”:“app.boooo中发生了一些事情!”, “errorType”:“未知” } errorType是我的内部枚举样式的值列表,如UserNotFound和NeedPaidAccount如果您只想将所有拒绝转换为自定义json格式,可以

当spray(spray.io)产生拒绝时,它会用字符串体进行响应。因为我的所有API客户机都会假设我的API只返回json,所以我希望全局地使每次拒绝都成为符合我们的错误对象格式的有效json对象。我怎样才能做到这一点

错误对象格式如下所示

{
“详细信息”:“app.boooo中发生了一些事情!”,
“errorType”:“未知”
}

errorType是我的内部枚举样式的值列表,如
UserNotFound
NeedPaidAccount

如果您只想将所有拒绝转换为自定义json格式,可以创建拒绝处理程序。例如,我将把它放在我的
ServiceActor
中,并执行以下操作:

类ApisServiceActor使用HttpServiceActor和ApisServices扩展了Actor{
def jsonify(响应:HttpResponse):HttpResponse={
响应.withEntity(HttpBody(ContentType.`application/json`,
JSONObject(映射(
“详细信息”->response.entity.asString.toJson,
“errorType”->APIRRORTYPE.Unknown.toJson
)).toString())
}
隐式val apiRejectionHandler=RejectionHandler{
案例拒绝=>mapHttpResponse(jsonify){
RejectionHandler.Default(拒绝)
}
}
def接收=运行路线{
yourRoute~ yourOtherRoute~其他路线
}
}

目前看来,来自PF的
似乎不存在<代码>拒绝处理程序{
按预期工作。