@transient 是 java 的 transient 关键字的作用,是需要实现 Serilizable 接口,@transient
是类型修饰符,只能用来修饰字段。在对象序列化过程中, / 被 transient 标记的变量不会被序列化在 Scala 中需要使用 @transient 修饰的方法时,需要进行注册,这里是解析 json 字符串的时候使用到的。下面是一个例子
定义:
/**
* ObjectMapper 的单例对象
*/
object ObjectMapperSingleton{
//@transient是类型修饰符,只能用来修饰字段。在对象序列化过程中,
// 被transient标记的变量不会被序列化
@transient private var objectMapper:ObjectMapper = _
def getInstance():ObjectMapper ={
if(objectMapper == null){
objectMapper = new ObjectMapper()
objectMapper.registerModule(DefaultScalaModule) //将Java类型的注册为Scala的对象
}
objectMapper
}
}
调用:
//解析JSON格式数据 为 Order对象
val mapper = ObjectMapperSingleton.getInstance()
val order: Order = mapper.readValue(msg,classOf[Order])