1

在使用 Lift 的 json 库对对象中的所有字符串进行序列化时,我正在尝试对它们进行 html 转义。我想我可以通过将转义(部分)函数传递给对象的 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 替换与我的部分函数匹配的字段?

4

1 回答 1

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.我在 Lift 的 google 群组上问过这个问题,得到了这个答案,结帐https://groups.google.com/d/msg/liftweb/ShRrGNrsu6Y/sNw4JGdSU6sJ

于 2012-09-24T02:53:51.990 回答