我可以使用Lift的FieldSerializer来更改序列化中的字段吗?

时间:2012-08-09 09:49:03

标签: json scala lift

在使用Lift的json库序列化时,我正在尝试html-escape对象中的所有字符串。我认为我可以通过将转义(部分)函数传递给对象的FieldSerializer来实现这一点,但这似乎字段添加到json-object - 而不是替换它们。您可以通过运行以下简单示例来查看我的意思,并注意它输出 {"y":"test","x":"test"}我需要{"y":"test"}

import net.liftweb.json.Serialization
import net.liftweb.json.FieldSerializer
import net.liftweb.json.FieldSerializer._
import net.liftweb.json.DefaultFormats
case class Simple(x: String)
implicit val formats = DefaultFormats + 
    FieldSerializer[Simple](renameTo("x","y"),renameFrom("y", "x"))
Serialization.write(Simple("test"))

有没有办法告诉FieldSerializer替换我的部分函数匹配的字段?

1 个答案:

答案 0 :(得分:0)

尝试使用CoustomeSerializer:

  implicit val formats = DefaultFormats +
    new CustomSerializer[Simple](ser => ( {
      case JObject(JField("y", JString(x)) :: Nil) => Simple(x)
    }, {
      case simple: Simple => JObject(JField("y", JString(simple.x)) :: Nil)
    }))

ps.我在电梯的谷歌小组上问了这个问题,得到了这个答案,结帐https://groups.google.com/d/msg/liftweb/ShRrGNrsu6Y/sNw4JGdSU6sJ