Jackson的@JSONView的Scala等效代码

时间:2014-01-10 17:11:44

标签: java json scala serialization jackson

如何为使用@JSONView的以下Java代码段编写Scala等效代码。 我正在使用Scala和Jackson的JSON。我需要在某些字段中根据特定条件动态包含或排除 - 在序列化期间。基于Jackson的wiki,@ JSONView似乎是一个不错的选择 - 但是我没有成功获得scala等价物。

public class Employee {

public static class All { }
public static class View1 extends All { }
public static class View2 extends View1 { }
public static class View3 extends All { }

@JsonView(All.class)
public Long empid;

@JsonView(View1.class)
public String name;

@JsonView({View2.class, View3.class})
public String addr;

}

1 个答案:

答案 0 :(得分:2)

直接的Scala等价物看起来像这样:

object Employee
{
  class All
  class View1 extends All
  class View2 extends View1
  class View3 extends All
}

class Employee
{
  import Employee._

  @JsonView(Array(classOf[All]))
  var empid: Long = _

  @JsonView(Array(classOf[View1]))
  var name: String = _

  @JsonView(Array(classOf[View2], classOf[View3]))
  var addr: String = _
}

此转换不利用任何Scala特定的Jackson支持;无论是否安装了Jackson Scala module,它都可以按原样运行。