【发布时间】:2016-11-01 14:18:37
【问题描述】:
因为我处理的是泛型类型,所以我不能使用特定的案例类。然后我创建了一个通用工具来序列化和反序列化通用对象。
import org.json4s
import org.json4s.Formats._
import org.json4s.native.JsonMethods._
object JsonHelper {
def json2Object[O](input: String) : O = {
parse(json4s.string2JsonInput(input)).asInstanceOf[O]
}
def object2Json[O](input: O) : String = {
write(input).toString
}
}
编译器抛出错误:
找不到类型 O 的 JSON 序列化程序。尝试为此类型实现隐式 Writer 或 JsonFormat。 写(输入).toString
这应该在运行时抛出,但为什么在编译时抛出?
【问题讨论】:
-
在您的脑海中会发生怎样的变化?如果
O可以是任何东西,那么 json4s 如何知道在所有情况下该做什么?只要为 O 定义了 Writer 或 JsonFormat,您的write(input)就可以工作。在编译时找不到 -
@mfirry 那么 jackson 如何使用 java 对象呢?它使用反射对吗?为什么它与 Scala 不同?
标签: scala