【发布时间】:2018-08-16 14:16:36
【问题描述】:
我有两个版本的 Scala 编译器 2.11.12 和 2.12.4。我有一个代码可以覆盖 json 协议的读写方法。代码是这样的。
implicit lazy val abcJsonProtocol: RootJsonFormat[XYZ] = new
RootJsonFormat[XYZ] {
override def write(obj: XYZ): JsValue = {
val baseJson =
JsObject(
“abc” -> obj.efg.toJson,
“ikj” -> obj.mno.toJson
)
obj
.map(value => JsObject(baseJson.fields + (“wxy” ->
value.toJson)))
.getOrElse(baseJson)
}
override def read(value: JsValue): XYZ = {
val jsObject = value.asJsObject
jsObject.getFields("abc",
"kJ") match {
case Seq(efg, mno) =>
XYZ(
efg = efg.convertTo[String],
mno = mno.convertTo[String],
)
}
}
}
错误是这样的
illegal start of simple expression
[error] )
[error] ^
')' expected but '}' found.
[error] }
[error] ^
仅在2.11.12版本编译失败,在后面的版本通过 提前致谢。
【问题讨论】:
-
这个
mno = mno.convertTo[String],在右括号)之前有一个尾随逗号,。 -
所以不要从编译器输出中删除行号。