作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
考虑供应商 API 提供的以下 JSON:
import play.api.libs.json._
import play.api.libs.json.Reads._
import play.api.libs.functional.syntax._
val json = Json.parse(
"""
|{
| "returns": {
| "markets" : {
| "ABC" : {
| "label": "ABC",
| "id":1
| },
| "DEF" : {
| "label": "DEF",
| "id":2
| }
| }
| }
|}
""".stripMargin)
Seq((1,"ABC"),(2,"DEF"))
val jsonTransformer = (__ \ 'returns \ 'markets).json.pick
json.transform(jsonTransformer)
最佳答案
下面是我如何用漂亮的可组合部分构建这个解析器。首先是用于丢弃键的通用对象到数组转换器:
val objToArray: Reads[JsArray] =
JsPath.json.pickBranch.map(obj => JsArray(obj.fields.map(_._2)))
Reads
可以处理市场对象:
val marketReads: Reads[(Int, String)] =
((__ \ 'id).read[Int] and (__ \ 'label).read[String]).tupled
val pairsReads: Reads[List[(Int, String)]] =
(__ \ 'returns \ 'markets).read(objToArray) andThen list(marketReads)
scala> json.validate(pairsReads).foreach(println)
List((1,ABC), (2,DEF))
关于json - 如何使用 JsPath 遍历 JSON 对象字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24345818/
我是一名优秀的程序员,十分优秀!