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

时间:2016-05-23 06:48:42

标签: json scala playframework cassandra phantom-dsl

在cassandra表中我放了class,其中一个字段是AnyContent类型。我将它序列化为字节数组。比我想要的从这一栏到我的班级。我可以在方法fromRow(row: Row)中得到它,只有

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

只有这样编译

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

也许有一些简单的方法让它变得简单

1 个答案:

答案 0 :(得分:0)

简单的答案是,你不会,你想要的策略可能不是最好的主意。在AnyContent中封装了很多变体,值得多花一点时间来理解Play框架中扮演的角色,它比它遇到的眼睛要复杂一点

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

相反,您真正追求的是一种更加以域为中心的方法,您的数据库知道您的业务对象,而不是您正在使用的HTTP框架。在理想的世界中,数据库模块和Web框架模块应该在应用程序内部完全独立,HTTP层应该依赖于数据库层,而不是相反。

所以我可以提供进一步的帮助,如果有助于理解你想要实现的目标。如果您只是想将JSON存储在Cassandra blob中,那么由于这个原因,您已经可以使用JsonColumn

详细了解here