jerkson
jerkson copied to clipboard
Fields from superclass not considered
Given
object JacksonJsonDemo {
def main(argv: Array[String]) {
val bar = new Bar(age=10)
bar.name = "Bar"
println(generate(bar))
}
}
case class Foo(var name:String = "Foo")
case class Bar(var age:Int = 0) extends Foo
I was expecting
{"name":"Bar", "age": 10}
The fields from the superclass are not included. This appears to be related to issue #4 (https://github.com/codahale/jerkson/pull/4). Is this a bug or the design of the API?
I have encountered the same problem (using Play 2.0 and having a superclass of my squeryl-based entities).
Any updates?
trait Foo {
val id: Long = 0
val createTime: Date = new Date()
val updateTime: Date = new Date()
}
case class Bar(override val id: Long) extends Object with Foo
def main(args: Array[String]) {
val bar = Bar(1)
println(Json.generate(bar))
}
FYI: ^ seems that traits are serialized, though. ^
Any update on this?
Case class inheriting one another is a bad idea anyway: see http://ofps.oreilly.com/titles/9780596155957/AdvancedObjectOrientedProgramming.html chapter "Case Class Inheritance".
Case classes inheriting traits are fine.