首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scala播放解析json流(ndjson)

Scala播放解析json流(ndjson)
EN

Stack Overflow用户
提问于 2021-02-10 06:05:48
回答 1查看 138关注 0票数 0

我有一个生成application/stream+jsonapplication/x-ndjson (http://ndjson.org/)的端点。

我正在尝试使用Play来使用这个端点。具体地说,我使用了WSResponse.json,但它似乎只解析返回的第一个项。我也尝试过WSResponse.validate[Seq[JsValue]],但在JsonValidationError上失败了。

是否可以使用Play解析此输出并获得Seq甚至Source (akka-streams)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-16 07:34:02

我设法根据cchantep的评论创建了一个解决方案

使用akka-streams framing,特别是JsonFraming类可以做到这一点。我最终得到了这样的结果:

代码语言:javascript
复制
// declaration or injection of WSClient

ws.url(url)
  .post(body)
  .flatMap { response =>
    for {
      jsonStrs <- response.bodyAsSource.via(JsonFraming.objectScanner(Int.MaxValue))
        .runFold(Seq.empty[String]) {
          case (acc, entry) => acc ++ Seq(entry.utf8String)
        }
    } yield {
      jsons.map(Json.parse)
    }
  }

上面的代码将生成一个可以根据需要进行操作的Future[Seq[JsValue]]

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66127919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档