我正在尝试定义一个HttpService
,它接收JSON并使用json4s
库将其解析为case class
:
import org.http4s._
import org.http4s.dsl._
import org.json4s._
import org.json4s.native.JsonMethods._
case class Request(firstName: String, secondName: String)
HttpService {
case req @ POST -> Root =>
val request = parse(<map req.body or req.bodyAsText to JsonInput>).extract[Request]
Ok()
}
我应该如何从
req.body
或req.bodyAsText
中获取org.json4s.JsonInput
?我知道
json4s
还有StringInput
和StreamInput
,它们都继承自JsonInput
,用于处理String
和InputStream
类型的数据。所以我认为我需要将req.body
转换为InputStream
,或将req.bodyAsText
转换为String
,但我仍然不知道该如何实现。我是Scala的新手,对于一些概念(例如
scalaz.stream.Process
)尚未完全理解。