小编Bar*_*icz的帖子

如何使用JsPath遍历JSON对象字段?

考虑供应商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)
Run Code Online (Sandbox Code Playgroud)

如何提取与"label"和"id"字段相关的一系列对.从这块JSON中我得到的结果是:

Seq((1,"ABC"),(2,"DEF"))
Run Code Online (Sandbox Code Playgroud)

我没有构建一个正确的JsPath提取器,因为它期望一个匹配,例如

val jsonTransformer = (__ \ 'returns \ 'markets).json.pick
json.transform(jsonTransformer)
Run Code Online (Sandbox Code Playgroud)

json scala playframework

5
推荐指数
1
解决办法
2327
查看次数

如何将元素追加到HList

我正在尝试下面的课程

import shapeless._
import syntax.std.tuple._

class TestedClass[HL](nodes: HL) {

    def addElement[T, OUT](clause: HL => T) = {
        new TestedClass[OUT](nodes :+ clause(nodes))
    }
}
Run Code Online (Sandbox Code Playgroud)

显然这个片段没有编译.我不知道如何将新的元组nodes :+ clause(nodes)类型绑定到OUT.我想要实现的目标如下:

scala> val step1 = new TestedClass[(Int)](1)
res1: TestedClass[(Int)]

scala> val step2 = step1.addElement(nodes => 2.0)
res1: TestedClass[(Int, Double)]
Run Code Online (Sandbox Code Playgroud)

Scala有可能吗?

scala shapeless

4
推荐指数
1
解决办法
804
查看次数

标签 统计

scala ×2

json ×1

playframework ×1

shapeless ×1