【问题标题】:How return play.api.mvc.AnyContent value from Blob column?如何从 Blob 列返回 play.api.mvc.AnyContent 值?
【发布时间】:2016-09-19 22:29:45
【问题描述】:
在 cassandra 表中,我放置了类,其中一个字段是 AnyContent 类型。我将它序列化为字节数组。比我想从这个专栏中得到它到我的班级。我只能在方法fromRow(row: Row) 中得到它,就像
AnyContentAsText(TypeCodec.varchar().deserialize(body(row),
ProtocolVersion.NEWEST_SUPPORTED))
只有这样才能编译
但它返回 AnyContent(AnyContentAsJson({"body":"value"}) 并且很难解析并从中获取 JSON 值。
也许有一些直接的方法可以简单地得到它
【问题讨论】:
标签:
json
scala
playframework
cassandra
phantom-dsl
【解决方案1】:
简单的答案是您不这样做,您所采用的策略可能不是最好的主意。 AnyContent 中封装了很多变体,值得花更多时间了解 Play Framework 中所扮演的角色,它比看上去要复杂一些。
您需要从头开始编写各种解码器,以便重新创建编码为 AnyContent 的原始响应,据我所知,该框架不提供此功能。
相反,您真正追求的是一种更加以领域为中心的方法,您的数据库了解您的业务对象,而不是您使用的 HTTP 框架。在理想情况下,数据库模块和 Web 框架模块在您的应用程序中应该是完全独立的,并且 HTTP 层应该依赖于数据库层,而不是相反。
所以我可以提供进一步的帮助,如果有助于了解您想要实现的目标。如果您只是想将 JSON 存储在 Cassandra blob 中,那么出于这个原因,您已经可以使用 JsonColumn。
查看here了解详情。