scala json字符串转case class对象

scala | 2019-09-13 10:02:39

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的错误。



登录后即可回复 登录 | 注册
    
关注编程学问公众号