我尝试将json解析为我的自定义类,但在一种情况下,这是不可能的。 我有一些名为Conf的特征,有一些字段和方法。两个类扩展了这个特性,在构造函数中,它们设置了特征参数(和其他东西)
trait Conf extends Serializable {
val srcId: Int
val tableName: String
val delimiter: Char
val header: Boolean
}
class WorkingConf(val srcId: Int,
val identifier: String,
val uploadingDir: String,
...
}
class BadConf(val srcId: Int,
val tableName: String,
val rawDir: String,
val delay: Integer = 0,
val delimiter: Char = ';',
val header: Boolean = false,
val tableSchema: String = "",
val dpInterval: Int = 30
) extends Conf {
def this() {
this(0,"", "", 0,';', false, "")
}
}
第一堂课是由其他人早先写的。 我尝试编写类似的类,但重点是当我解析json时:
Json.parse[ExtAConf](conf)
Json.parse[ExtBConf](conf2)
解析BadConf获得带有注释的Unreconized字段异常“tableName” “没有标记为可忽略的(3个已知属性:,”标题“,”srcId“,”分隔符“])”
当我的json文件看起来像:
{
"srcId": "1",
"tableName": "tableName",
"rawDir": "path",
"delay": "0",
"delimiter": ";",
"header": "false",
"tableSchema": "",
"dpInterval": "30",
}
对于WorkingConf的Json看起来很相似,我认为这不是问题。
另外,当我将类BadConf更改为 case class 然后工作正常,但在json文件中我必须从构造函数设置所有参数。