如何从Blob列返回play.api.mvc.AnyContent值



在cassandra表中,我放置了class,其中一个字段是AnyContent类型。我将它序列化为字节数组。我想把它从这个专栏拿到我的课堂上。我只能像一样在方法fromRow(row: Row)中获得它

AnyContentAsText(TypeCodec.varchar().deserialize(body(row),
ProtocolVersion.NEWEST_SUPPORTED))

只有这样它才能编译

但它返回AnyContent(AnyContentAsJson({"body":"value"}),因此很难解析并从中获取JSON值。

也许有一些直接的方法可以简单地获得

简单的答案是,如果你不这样做,你想要的策略可能不是最好的主意。AnyContent中包含了很多变化,值得多花一点时间了解它在Play Framework中扮演的角色,它比表面上看到的要复杂一些。

您需要从头开始编写各种各样的解码器,以便重新创建编码到AnyContent中的原始响应,据我所知,这不是该框架所提供的。

相反,您真正追求的是一种更以域为中心的方法,在这种方法中,您的数据库了解您的业务对象,而不是您正在使用的HTTP框架。在理想的情况下,数据库模块和web框架模块在应用程序中应该完全分离,HTTP层应该依赖于数据库层,而不是相反。

因此,如果我能理解你正在努力实现的目标,我可以提供进一步的帮助。如果您只是想将JSON存储在Cassandra Blob中,那么出于这个原因,您已经可以使用JsonColumn了。

有关详细信息,请查看此处

最新更新