0

我正在尝试使用 Jackson 从 scala 对象生成 json 字符串。

import com.fasterxml.jackson.annotation.JsonInclude.Include
import com.fasterxml.jackson.databind.ObjectMapper 
import com.fasterxml.jackson.module.scala.DefaultScalaModule

trait Base
case class A(s: String) extends Base
case class B(s: String) extends Base
case class Result(a: Option[Base], b: Option[Base])

object App {

  val jsonMapper =
    new ObjectMapper()
      .registerModule(DefaultScalaModule)

  def main(args : Array[String]) {
    val x = Result(Some(A("a")), Some(B("b")))
    println(jsonMapper.writeValueAsString(x))
  } 
}

我期待这样的输出

{"a":{"s": "a"},"b":{"s": "b"}}

但我得到的是这个,

{"a":{},"b":{}}

我正在使用的 Maven 依赖项是,

<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-core</artifactId>
  <version>2.2.2</version>
</dependency>
<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-databind</artifactId>
  <version>2.2.2</version>
</dependency>
<dependency>
  <groupId>com.fasterxml.jackson.module</groupId>
  <artifactId>jackson-module-scala_2.9.2</artifactId>
  <version>2.2.2</version>
</dependency>

如果我在这里遗漏了什么,请告诉我。

4

1 回答 1

1

可能您应该为以下定义泛型类型Result

case class Result[T <: Base](a: Option[T], b: Option[T])
于 2013-08-02T07:53:52.593 回答