我有一个scala应用程序,它包含一个带有POST端点的akka http服务器。目前我在json请求中发送以下3个字段:
{
"f1": "string1",
"f2": "string2",
"f3": "string3"
}
- ModelRequest* 对象的代码如下所示:
import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport
import spray.json.DefaultJsonProtocol
case class ModelRequest(f1: String, f2: String, f3: String)
object ModelJsonSupport extends DefaultJsonProtocol with SprayJsonSupport {
implicit val PortofolioFormats = jsonFormat3(ModelRequest)
}
下面是我们在路由中使用此 ModelRequest 的方式:
val route = path("infer") {
post {
entity(as[ModelRequest]) { modelRequest =>
complete(myFunc(modelRequest.f1, modelRequest.f2))
}
}
}
现在,我想向端点发送可变数量的字段,而不是3个以上的任意数据类型的字段。我该怎么做呢?而且我只想从JSON输入中提取一个我知道其名称的字段。例如,现在我的请求可以如下所示:
{
"f1":33,
"g1": 44,
"random_feat": "hello"
......
......
"imp":{"feat1":"hi","feat2":4543}
}
从这个JSON请求中,我只想提取 “imp”,对于其余的字段,我不关心。5或20个字段,但我知道这肯定会有这个“imp”字段,我想在我的应用程序中使用。如何做到这一点?此外,这个完整的请求JSON将被转发到我的应用程序内部的其他POST端点,这也是我不知道如何做。请帮助,如果你有任何线索。- 谢谢-谢谢
1条答案
按热度按时间htrmnn0y1#
默认情况下,spray忽略其他字段,它应该可以工作