2017-06-10 39 views
0

我有一个巨大的http响应与json板,其中只有部分是兴趣点的问题。 我无法更改响应结构。 这里有一个例子与阿卡流Streaming巨大的Json

{ 
    "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杰森数组项,但

我创建了一个小播放WS客户像这样坐在JSON的中间:

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平板视为Json对象。我需要跳过一些数据,直到"results":条目出现在流中,然后开始解析条目并跳过所有其他条目。 任何想法如何做到这一点?

回答