java 中 无论用JSON.parseObject还是ObjectMapper.readValue等方式将json转对象都很方便。
但是scala中就不是那么简单了,需要将json字符串转换为case class对象。
1.定义case class对象
你就当是一个简写的有构造方法和属性的java类就好,其实就是比普通类高级的类
case class ChartResultSetModel( var host:String, var port:String, var userName:String, var password:String, var dbName:String, var dbType:String, var table:String ) { def getJdbcUrl():String={ "jdbc:mysql://"+host+":"+port+"/"+dbName } }
这个类的属性只能比json字符串的属性多,不能少,否则你要手动忽略
2.ObjectMapper 将json转 case class对象
import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.scala.DefaultScalaModule val mapper = new ObjectMapper() mapper.registerModule(DefaultScalaModule) var rmodel=mapper.readValue(mysqlDatasource.toJSONString, classOf[ResultSetModel])
注意 mapper.registerModule(DefaultScalaModule) 这句很重要,否则要报类似default constructor not found的错误。