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 に答える