Scala Jackson序列化将计算字段添加到序列化案例类

时间:2015-10-14 20:37:44

标签: json scala serialization jackson

我有一个scala案例类:

proc sql;
  create table my_freqs as
    %freq(table=sashelp.class,var=height)
  union all
    %freq(table=sashelp.class,var=weight)
  union all
    %freq(table=sashelp.class,var=age)
   ;
quit;

这序列化为以下json(使用ScalaJsonFactory对象映射器进行序列化):

case class Person(name: String, age: Int) {
    def isMillenial: Boolean = age <= someConstantMillenialThreshold
}

但是我想将它序列化如下:

{
    name: "foo",
    age: 42
}

有没有办法以简单的方式做到这一点,最好是使用一些杰克逊注释或类似的东西?基本上寻找任何不涉及更改{ name: "foo", age: 42, isMillenial: true } 或创建新对象

的解决方案

1 个答案:

答案 0 :(得分:0)

完成!看起来我们可以这样做:

import com.fasterxml.jackson.annotation.JsonProperty
case class Person(name: String, age: Int) {
    @JsonProperty("isMillenial") def isMillenial: Boolean = age <= someConstantMillenialThreshold
}