我如何将这个 Play 2.4 json 流示例转换为 Play 2.5

How can i translate this Play 2.4 json stream example to Play 2.5

在 Play 2.4 中我可以写:

import play.api.libs.json._
import play.extras.iteratees._
val jsonStream: Enumerator[JsObject] =
        enumerator &>
        Encoding.decode() &>
        Enumeratee.grouped(JsonIteratees.jsSimpleObject)

从 Array[Byte] 流到 JsObject 流。 但是现在在 2.5 中我想做完全相同的事情但是使用 akka-stream 但是找不到关于如何执行上述代码的 akka-stream 的任何信息?

上述代码如何知道将流拆分到每个 Json 对象的位置?

您似乎在使用 play-iteratees-extras 库,顾名思义,它是特定于迭代对象的。您可以在 Play 2.5.6 及更高版本(使用 Akka Streams 2.4.9)上执行非常相似的操作:

import akka.util.ByteString
import akka.http.scaladsl.common.EntityStreamingSupport
import akka.stream.scaladsl.Source

val byteSource = Source.single(ByteString.fromString("""[{"hello": "world"}]"""))

val jsonFraming = EntityStreamingSupport.json(Int.MAX_VALUE)

val jsonStream: Source[JsObject, akka.NotUsed] = byteSource
  .via(jsonFraming.framingDecoder)
  .map(bytes => Json.parse(bytes.toArray).as[JsObject])

目前只会解析数组中的 JSON 对象流。如果您想要更完整的流解析支持,请查看 akka-streams-json.