scala - 获取过滤后的 JSON 值 Scala Play
问题描述
我使用 scala play 并使用 WS 从 URL 获取响应。
我的 JSON 示例:
[
{
"object": "001",
"object-description": "MODEL",
"criterion": "TW3",
"criterion-description": "MODELE X07"
},
{
"object": "002",
"object-description": "TYPE",
"criterion": "STANDA",
"criterion-description": "STANDARD TYPE"
}, ...
我只想获得“对象”等于“002”的“标准”字段。因此,在此示例中,值为“STANDA”。
一个测试:
ws.url(
url)
.get()
.map { response =>
Right((response.json \ "object="002"" \\ "criterion").map(_.as[String]))
}
我怎么能做到这一点?
谢谢你的帮助。
解决方案
您可以使用自动格式化程序将整个响应转换为 scala 类,然后对其进行操作。
case class Data(`object`: String, criterion: String)
implicit val dataRead = Json.reads[Data]
response.json.as[List[Data]]
.filter(_.`object` == "002")
.map(_.criterion)
推荐阅读
- vba - 总连续天数。我怎么知道 Date+1 是否存在?
- python - 为什么范围不返回一个数组,但是当我将它添加到列表时呢?
- java - 如何使PMD的自定义java规则集按类别返回结果
- sql - VBA中的SQL语句太长
- vue.js - 如何将`item-text`与vue渲染功能绑定
- spring-boot - 使用 JWT 保护微服务之间的通信
- html - 表单自动完成中断 CSS 悬停
- javascript - 将图标添加到有序/无序列表 TinyMCE
- d - 如何在 Vibe.d 中返回带有 HTTP 代码的 JSON?
- android-activity - 在 Dagger 中注入一个需要创建活动的对象