我想解析一个Json对象。我定义了以下类:
limits = [previousTheta1 - step previousTheta1 + step;
previousTheta2 - step previousTheta2 + step;
previousTheta3 - step previousTheta3 + step];
我生成了这种类型的虚拟对象:
case class Metadata(
val messageTime: Option[String],
val messageUUID: Option[String],
val messageSource: Option[String],
val messageFormat: Option[String])
现在,我想使用jsonMsg = """{"messageTime": "2018-09-19T11:03:22.382+04:00",
"messageUUID": "4ef7fce7-81cf-4a27-82d8-9019c2cf09df",
"messageSource" : "SDG",
"messageFormat" : "json"}"""
将该字符串解析为元数据类型的对象:
mapper.readValue
这很好。但是在这种情况下,fromJson只能解析元数据对象。
现在,我试图使来自Json的方法更通用,像这样传递要解析的对象的类[我使用其他question作为参考]:
fromJson(jsonMsg)
def fromJson(json : String) = {
mapper.readValue[Metadata](json, classOf[Metadata])
}
但是我得到了错误:
前向引用扩展了值obj的定义
我想念的是什么?我怎么能实现自己的尝试?
以防万一
val obj = fromJson2(jsonMsg, classOf[Metadata])
def fromJson2(json : String, c: Class[_]) = {
mapper.readValue(json, c)
}
属于mapper.readValue
这是定义:
import com.fasterxml.jackson.databind.ObjectMapper