在使用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替换我的部分函数匹配的字段?
答案 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