【发布时间】:2017-04-28 08:03:01
【问题描述】:
我使用json4s native,带有这样的json字符串
val myjson = """
{
"normative":"C",
"prefixType":{
"cod":["smallint", "int", "varchar(5)"],
"des":["varchar", "string"],
"fec":["timestamp"],
"hms":["timestamp"],
"tim":["timestamp"],
"imp":["decimal","Float", "Double"]
},
"fixcolname":{
"aud_usuario":"varchar(8)",
"aud_fec":"timestamp",
"aud_tim":"timestamp"
},
"symSep":"_",
"maxLength":26
}"""
还有一个案例类
case class colVerify(prefixType: Map[String, Array[String]], fixcolname: Map[String, String], symSep: String, maxLength: Int)
我想从json字符串中提取它
val t = parse(myjson)
implicit val formats = DefaultFormats
val myvfy = t.extract[colVerify]
然后出现这样的错误
Exception in thread "main" org.json4s.package$MappingException: Parsed JSON values do not match with class constructor
args=Map(des -> [Ljava.lang.String;@d7b1517, fec -> [Ljava.lang.String;@16c0663d, tim -> [Ljava.lang.String;@23223dd8, hms -> [Ljava.lang.String;@4ec6a292, imp -> [Ljava.lang.String;@1b40d5f0, cod -> [Ljava.lang.String;@ea4a92b),Map(aud_usuario -> varchar(8), aud_fec -> timestamp, aud_tim -> timestamp),_,26
arg types=scala.collection.immutable.HashMap$HashTrieMap,scala.collection.immutable.Map$Map3,java.lang.String,java.lang.Integer
constructor=public colVerify(scala.collection.mutable.Map,scala.collection.mutable.Map,java.lang.String,int)
好像是Map的类型有问题,但是如何隐式转换呢?
【问题讨论】: