我正试图将请求有效载荷解组为字符串,但由于某种原因它失败了。我的代码:
path("mypath") {
post {
decodeRequest {
entity(as[String]) {jsonStr => //could not find implicit value for...FromRequestUnmarshaller[String]
complete {
val json: JsObject = Json.parse(jsonStr).as[JsObject]
val jsObjectFuture: Future[JsObject] = MyDatabase.addListItem(json)
jsObjectFuture.map(_.as[String])
}
}
}
}
}
例如,在这个SO线程中,默认情况下似乎应该使用这个隐式。但也许这在Akka-HTTP中是不同的?
我尝试导入akka.http.scaladsl.unmarshalling.predefinedfromentityunmarshallers
,它有一个StringUnmarshaller
,但没有帮助。可能是因为它返回类型fromentityunmarshaller[String]
而不是fromrequestunmarshaller[String]
。在spray.httpx.unmarshalling.basicunmarshallers
中也有一个字符串解封器,但这也没有帮助,akka.http.scaladsl.unmarshalling.predefinedfromstringunmarshallers
我怎样才能解马修(和马修)成一个字符串?
使用1.0-RC3
多谢了。
只要在作用域中有正确的含义,您的代码就应该是正常的。如果在作用域中有一个隐式flowMaterializer
,那么事情应该按照预期工作,正如编译的代码所示:
import akka.http.scaladsl.server.Route
import akka.actor.ActorSystem
import akka.stream.ActorFlowMaterializer
import akka.http.scaladsl.model.StatusCodes._
import akka.http.scaladsl.server.Directives._
import akka.stream.FlowMaterializer
implicit val system = ActorSystem("test")
implicit val mater = ActorFlowMaterializer()
val routes:Route = {
post{
decodeRequest{
entity(as[String]){ str =>
complete(OK, str)
}
}
}
}
如果您希望更进一步,将其解组为JSObject
,则只需要在作用域中使用一个隐式Unmarshaller
来处理转换,如下所示:
implicit val system = ActorSystem("test")
implicit val mater = ActorFlowMaterializer()
import akka.http.scaladsl.unmarshalling.Unmarshaller
import akka.http.scaladsl.model.HttpEntity
implicit val um:Unmarshaller[HttpEntity, JsObject] = {
Unmarshaller.byteStringUnmarshaller.mapWithCharset { (data, charset) =>
Json.parse(data.toArray).as[JsObject]
}
}
val routes:Route = {
post{
decodeRequest{
entity(as[String]){ str =>
complete(OK, str)
}
}
} ~
(post & path("/foo/baz") & entity(as[JsObject])){ baz =>
complete(OK, baz.toString)
}
}
问题内容: 我想设计一个具有String []属性的实体类。这个String Array总是有两个值,我不希望Hibernate(或JPA)为此创建一个额外的表,而是直接将这两个String值嵌入到表中。这有可能吗? 问题答案: 如果总是存在两个值,则可以使用getter / setter和instance变量。您确实可以选择使用映射实例变量还是属性。 否则请看实体。精神上的东西
我想知道如何将这个字符串转换为数组: 我已经在这里找到了这个: 但如果我试图使对象为空,我总是得到空值。这里: 我不知道我应该输入什么作为“位置”。我应该输入“[]”吗? 非常感谢您的帮助! 丹尼尔
问题内容: 我试图解析一个字符串,以分隔字符串中的列表。我目前有字符串: 有什么方法可以解析字符串,以便字典键是列表的第一个元素,而键的值是元素的下一个。例如: 问题答案: insted的的,你可以有列表: 您可以使用从字符串解析Python数据结构
问题内容: 我有这个字符串:10,692,467,440,017.120(是一个数字)。 我想将其解析为BigDecimal。问题是我没有尝试过DecimalFormat和NumbeFormat。有什么帮助吗? 问题答案: 试试这个 如果要构建具有I18N支持的应用程序,则应使用 还请记住,它可能会引发a,因此您需要处理它(使用try / catch)或引发它,然后让程序的另一部分处理它
问题内容: 我有一个弦 然后,我想将其解析为sqlDate。并将其插入数据库。 是否可以将该字符串解析为sqlDate?!?! 是的,SQL日期格式为“ yyyy-mm-dd” 问题答案: 用于将String日期解析为java.util.Date 然后使用millis将其转换为java.sql.Date
问题内容: 我试图在网上四处寻找将字符串拆分为字符数组的答案,但似乎找不到一个简单的方法 似乎不像Ruby那样工作。有没有一种简单的方法可以不循环? 问题答案: