【发布时间】:2017-01-11 06:43:44
【问题描述】:
我正在尝试在我的 Play 框架应用程序 (Scala) 中创建 Json 阅读器。问题是,我的 Json 的一部分有点古怪,需要进一步处理以检索值。例如:
{
"field1":"value1",
"field2":"value/1",
"num2":2
}
带有案例类:
case class Field1(text: String, fields: Field2)
case class Field2(text: String, num: Int, num2: Int)
基本上Field2 的text 和num 字段是通过拆分文本从值value/1 派生的。这是拆分器功能:
def splitter(path: String, num2: Int): Field2 = {
val split = path.split("\\")
Field2(split(0), split(1).toInt, num2)
}
这相当简单,实际的分离器功能要复杂得多。基本上,构造这个对象Field2 的唯一方法是将单个字符串传递给一个函数,该函数会吐出所需的对象。
如何为Field2(以及Field1 的扩展)创建一个阅读器?
这是我目前所拥有的:
object Field1 {
implicit val reader = (
(__ \ "field1").read[String] and
(__).read[Field2]
) (Field1.apply _)
}
object Field2 {
implicit val reader = (
splitter((__ \ "field2").read[String], (__ \ "num2"))
) // Obviously incorrect syntax + type mismatch, but this is roughly what I'm trying to accomplish.
}
【问题讨论】:
标签: json scala playframework playframework-2.0