私は(入力がcontinuosストリームとTCPソケットである現実には)このような3行で入力ファイルからSource[ByteString, _]
ていますデコードは、アッカストリームでJSONをチャンク
{"a":[2
33]
}
は、今の問題は、Iこれを解析してSource[ChangeMessage,_]
にしたいと思っていますが、各JSONメッセージが複数の行で断片化されるときではなく、すべての行についてJSONメッセージ全体があるときに唯一の例があります。
この例ではthisというライブラリが見つかりましたが、最終的な文字は}
または,
であり、これは1行あたり1つのJSONです。下の例はこの設定を示しています。
"My decoder" should "decode chunked json" in {
implicit val sys = ActorSystem("test")
implicit val mat = ActorMaterializer()
val file = Paths.get("chunked_json_stream.json")
val data = FileIO.fromPath(file)
.via(CirceStreamSupport.decode[ChangeMessage])
.runWith(TestSink.probe[ChangeMessage])
.request(1)
.expectComplete()
}
別の選択肢は倍とバランス}
を使用し、全体のJSONが完了したときにのみ発光するようになります。この問題は、折り畳み演算子がストリームの完成時にのみ出力され、これは連続ストリームなのでここでは使用できません。
私の質問は:JSONはアッカストリームで ストリーム、すでに これを行い、利用可能なソフトウェアがあるチャンク解析するために最速の方法は何ですか?可能であれば、私は使用したいcirce
実際には、JsonFramingなしでCirceStreamSupportを使用して作業していますか? – user3139545
@ user3139545あなたの発言をありがとう。私は私の答えを明らかにした。 –