解析json仅适用于案例类

时间:2016-09-28 13:55:23

标签: json scala string-parsing traits

我尝试将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文件中我必须从构造函数设置所有参数。

0 个答案:

没有答案