【发布时间】:2020-07-16 22:28:06
【问题描述】:
我确实在反序列化之前指定了 FullTypeHints
def serialize(definition: Definition): String = {
val hints = definition.tasks.map(_.getClass).groupBy(_.getName).values.map(_.head).toList
implicit val formats = Serialization.formats(FullTypeHints(hints))
writePretty(definition)
}
它生成带有类型提示的 json,太棒了!
{
"name": "My definition",
"tasks": [
{
"jsonClass": "com.soft.RootTask",
"name": "Root"
}
]
}
反序列化不起作用,它会忽略带有类型提示的“jsonClass”字段
def deserialize(jsonString: String): Definition = {
implicit val formats = DefaultFormats.withTypeHintFieldName("jsonClass")
read[Definition](jsonString)
}
如果提示在 json 字符串中,为什么我应该使用 Serialization.formats(FullTypeHints(hints)) 重复 typeHints 以进行反序列化?
json4s 可以从 json 中推断出来吗?
【问题讨论】:
-
注意:Json4s 是 vulnerable under DoS/DoW attacks!
标签: scala serialization deserialization json4s