首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用json4s迭代json

使用json4s迭代json
EN

Stack Overflow用户
提问于 2016-08-03 19:46:55
回答 1查看 693关注 0票数 1

我有json,它的结构如下:

代码语言:javascript
复制
{
"searchResults": {
    "searchCriteria": {
        "location": {
            "originalLocation": null
        },
        "startAndEndDate": {
            "start": "2016-10-06T00:00:00",
            "end": "2016-10-09T00:00:00"
        },

        "solution": [{
                "resultID": "O1MDc1MD",
                "selected": false,
                "charges": {
                    "localCurrencyCode": "USD",
                    "averagePricePerNight": 153
                },
                "starRating": 3.5
            },

            {
                "resultID": "0MDc1MD",
                "selected": false,
                "charges": {
                    "localCurrencyCode": "USD",
                    "averagePricePerNight": 153
                },
                "starRating": 3.5
            }
        ]

    }
}
}

我有一个案例课,就像:

代码语言:javascript
复制
case class ResponseModel(
//localCurrencyCode: Option[String],
averagePricePerNight: Option[Int],
starRating: Option[Int])

我希望提取averagePricePerNight和starRating的值并将其返回到列表中。

我无法得到一个包括starRating和averagePricePerNight的列表,因为在解决方案数组中,我还有一个电荷数组,所以我没有得到一个列表。

我用:

代码语言:javascript
复制
val messagesIds = (json \\ "solution") \ "starRating"

println(messagesIds.values) 

Output: List(3.5, 3.5, 3.0)

预期产出:

代码语言:javascript
复制
List(ResponseModel(5.0,900), ResponseModel(4.5,100), ResponseModel(4.5,1000))

它只给了我一个StarRatings的列表。如何将两者结合起来,并让我知道,如果另一个库可以很容易做到这一点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-03 21:53:14

我会去做这样的事

代码语言:javascript
复制
case class Charges(localCurrencyCode: String, averagePricePerNight: Int)
case class Solution(resultID: String, selected: Boolean, charges: Charges, starRating: Double)

val parsed = (parse(json) \\ "solution").extract[List[Solution]]

val result = parsed.map(x => ResponseModel(Some(x.charges.averagePricePerNight), Some(x.starRating)))

注1:starRating似乎是Double而不是Int

注2:您的ResponseModel使用Options.但你的期望似乎并非如此。

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

https://stackoverflow.com/questions/38752407

复制
相关文章

相似问题

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