gpt4 book ai didi

json - 使用 Akka Stream 流式传输巨大的 json

转载 作者:行者123 更新时间:2023-12-02 17:19:02 26 4
gpt4 key购买 nike

我有一个 json slab 的巨大 http 响应问题,其中只有一部分是兴趣点。我无法更改响应结构。这是一个例子

{
"searchString": "search",
"redirectUrl": "",
"0": {
"numRecords": 123,
"refinementViewModelCollector": {},
// Lots of data here
"results": [
{
"productCode": "123",
"productShortDescription": "Desc",
"brand": "Brand",
"productReview": {
"reviewScore": 0
},
"priceView": {
"salePriceDisplayable": false,
},
"productImageUrl": "url",
"alternateImageUrls": [
"url1"
],
"largeProductImageUrl": "url4",
"videoUrl": ""
},
{
"productCode": "124",
"productShortDescription": "Desc",
"brand": "Brand",
"productReview": {
"reviewScore": 0
},
"priceView": {
"salePriceDisplayable": false,
},
"preOrder": false,
"productImageUrl": "url",
"alternateImageUrls": [
"url1"
],
"largeProductImageUrl": "url4",
"videoUrl": ""
}
]
//lots of data here
}
}

我感兴趣的是 results Jason 数组中的条目,但它们位于 json 的中间

我创建了一个像这样的小型 Play WS 客户端:

val wsClient: WSClient = ???
val ret = wsClient.url("url").stream()
ret.flatMap { response =>
response.body.via(JsonFraming.objectScanner(1024))
.map(_.utf8String)
.runWith(Sink.foreach(println))
}

这将不起作用,因为它将整个 json slab 作为 Json 对象。我需要跳过一些数据,直到 "results": 条目出现在流中,然后开始解析条目并跳过所有其余部分。任何想法如何做到这一点?

最佳答案

查看 Alpakka's JSON module ,它可以流式传输嵌套 JSON 结构的特定部分:

response
.body
.via(JsonReader.select("$.0.results[*]"))
.map(_.utf8String)
.runWith(Sink.foreach(println)) // or runForeach(println)

关于json - 使用 Akka Stream 流式传输巨大的 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44475266/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com