2016-09-10 9 views
1

を再生するために2.4 JSONストリームの例を再生する翻訳することができ、私は書くことができます:どのように私はこれをプレイ2.4で2.5

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

をJSObjectのストリームに配列[バイト]ストリームから行くために。 しかし、今では2.5と同じことをしたいのですが、akka-streamを使っていますが、akka-streamの情報は上記のコードのやり方を見つけることができません。

上記のコードは、ストリームを各Jsonオブジェクトに分割する場所をどのように知っていますか?

答えて

2

名前が示すように、iteratee固有のplay-iteratees-extrasライブラリを使用しているようです。現在、唯一の配列からJSONオブジェクトのストリームを解析します

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]) 

:あなたが(アッカストリーム2.4.9を使用して)かなりプレイ2.5.6に類似しており、上記の何かを行うことができます。より完全なストリーム解析サポートが必要な場合は、akka-streams-jsonをご覧ください。

関連する問題