jerkson icon indicating copy to clipboard operation
jerkson copied to clipboard

Fields from superclass not considered

Open jlcheng opened this issue 13 years ago • 4 comments

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?

jlcheng avatar Oct 31 '11 19:10 jlcheng

I have encountered the same problem (using Play 2.0 and having a superclass of my squeryl-based entities).

Any updates?

Pyppe avatar Jul 20 '12 14:07 Pyppe

    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. ^

Pyppe avatar Jul 20 '12 14:07 Pyppe

Any update on this?

florianleibert avatar Aug 17 '12 21:08 florianleibert

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.

imikushin avatar Aug 18 '12 12:08 imikushin