2016-09-10 3 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]) 

: 당신과 함께 (Akka 스트림 2.4.9을 사용) 꽤 재생 2.5.6에 유사한 이상 일을 할 수 있습니다. 더 완벽한 스트림 구문 분석 지원을 원한다면 akka-streams-json을보십시오.