CustomSerializer
'u kullanabilirsiniz. Sen deserializer olarak boş bir PartialFunction
sağlayarak sadece seri özelleştirebilirsiniz:
trait Ignore
case class A(a: Int) extends Ignore
case class B(f: String, a: A, d: Int)
implicit val formats = DefaultFormats +
new CustomSerializer[Ignore](formats => (
PartialFunction.empty,
{ case _: Ignore => JNothing }
))
// prints "{"f":"x","d":2}"
println(Serialization.write(B("x", A(1), 2)))
// deserializes to B(x,A(1),2)
println(Serialization.read[B]("""{"f":"x","a":{"a":1},"d":2}"""))
düzenleme: (3.3.0) json4s-yerli yazma zamanda hatalı tefrika nesneyi kılan bir hata var ilk eğer alan dikkate alınmaz (case class B(a: A, ...)
sorun Serialization
sonraki ilk Extraction.decompose
ve kullanma
çözülene kadar sorunu çözmek için json4s-jackson görünüyor kullanmanızı öneririz.
trait Ignore
case class A(a: Int) extends Ignore
case class B(a: A, d: Int)
implicit val formats = DefaultFormats +
new CustomSerializer[Ignore](formats => (
PartialFunction.empty,
{ case _: Ignore => JNothing }
))
// prints {,"d":2}
println(Serialization.write(B(A(1), 2)))
// prints {"d":2}
println(Serialization.write(Extraction.decompose(B(A(1), 2))))
Evet, bu işe yarar, ancak B alanının başlangıcına bir alan koyarsam geçersiz json üretir. E.g .: 'dava sınıfı B (a: A, d: İnt)' '' {{"" d ": 2}" 'nasıl üretilir? – maks
@maks Benim için çalışıyor: '{" d ": 2}'. Eski bir json4s sürümünü mi kullanıyorsunuz? 3.3.0 –
@ kullanıyorum Tamam, kontrol etmedim ama kodum işe yarıyor çünkü json4s-jackson kullanıyorum. Yerli kullanıyor musunuz? –