在我们的项目中,我们使用ReactiveMongo
with Play 2.2.1
。
问题是,以 的形式Enumerator[A]
返回的数据ReactiveMongo
流实际上是一个值对象流,没有逗号分隔,也没有流的开始和结束注解,可以看作数组的开闭陈述。
JSON
这给消费者带来了问题JS client
,因为预期的格式是
[A1,A2, ...]
所以我们跳了起来,将我们的Enumeratee[A]
to转换为Enumerator[String]
,并检查它是否是第一个元素:
var first:Boolean = true
val aToStrs = (as.map(a => {
if(first) {
first = false;
Json.stringify(Json.toJson(a))
} else {
"," + Json.stringify(Json.toJson(a))
}
}))
Ok.chunked(
Enumerator.enumInput(Input.El("[")) andThen
aToStrs andThen
Enumerator.enumInput(Input.El("]")) andThen
Enumerator.enumInput(Input.EOF)
)
这行得通,但感觉就像在发明轮子。
对于这个常见问题,是否有更好的解决方案?