在 Spray 中更改 Post 中的正文字段名称
Change a body Field name in a Post in Spray
我正在考虑用 POST 中的 JSON 中的 "type" 字段替换为这样的东西
def rawJson = extract { _.request.entity.asString}
post {
rawJson { json =>
val new json = println(json.replace("\"type\":", "\"eventType\":"))}
}
现在,有了这个新的 JSON,我想重新注入 POST 以将其视为新呼叫。
我知道 "redirect" 但我看不到在这种情况下使用它的方法。
谢谢!
我会回答我自己的问题。我希望其他人能发现它有用:
我已经即时更改了 post。我的问题是我使用的是:entity(as[Event])
并且我无法转换它。但是像 JObject 一样反序列化它,我可以控制这些字段。这是一个非常强大的工具。
post {
entity(as[JObject]) {
eventO =>
val nevent: json4s.JValue = eventO.mapField(x => if (x._1=="type") ("eventType",x._2) else (x._1,x._2))
val event = nevent.extract[Event]
handlePerRequest {
RouteMessageToCluster(event)
}
}
}
我正在考虑用 POST 中的 JSON 中的 "type" 字段替换为这样的东西
def rawJson = extract { _.request.entity.asString}
post {
rawJson { json =>
val new json = println(json.replace("\"type\":", "\"eventType\":"))}
}
现在,有了这个新的 JSON,我想重新注入 POST 以将其视为新呼叫。 我知道 "redirect" 但我看不到在这种情况下使用它的方法。
谢谢!
我会回答我自己的问题。我希望其他人能发现它有用:
我已经即时更改了 post。我的问题是我使用的是:entity(as[Event])
并且我无法转换它。但是像 JObject 一样反序列化它,我可以控制这些字段。这是一个非常强大的工具。
post {
entity(as[JObject]) {
eventO =>
val nevent: json4s.JValue = eventO.mapField(x => if (x._1=="type") ("eventType",x._2) else (x._1,x._2))
val event = nevent.extract[Event]
handlePerRequest {
RouteMessageToCluster(event)
}
}
}