杰克逊与ScalaModule。使用辅助构造函数

时间:2016-04-14 13:49:31

标签: json scala jackson

基本上我希望使用scala模块将null数组反序列化为空集合。据我所知,目前尚未实施,因此我正在寻找解决方法。我认为如果我有一个带有Option [Seq [Any]]参数的辅助构造函数,它可以工作。像这样:

case class Test (id: Int, seq: Seq[Any]){
    @JsonCreator
    def this(id: Int, seq: Option[Seq[Any]]) = this(id, seq.getOrElse(Seq()))
  }

但是,由于杰克逊给了我这个例外,它不起作用:

  

引起:java.lang.IllegalArgumentException:冲突   基于属性的创建者:已经明确标记了[构造函数   for com.test.Main $ Test,annotations:[null]],遇到[构造函数   for com.test.Main $ Test,annotations:{interface   com.fasterxml.jackson.annotation.JsonCreator=@com.fasterxml.jackson.annotation.JsonCreator(模式= DEFAULT)}]

有趣的是,如果我删除了id字段,它就会开始工作:

case class Test (seq: Seq[Any]){
    @JsonCreator
    def this(seq: Option[Seq[Any]]) = this(seq.getOrElse(Seq()))
  }
  1. 有人能解释一下这里发生了什么吗?
  2. 我可以将构造函数重载为带有案例类的json创建者吗?
  3. 也许您看到了我的初始问题的另一种解决方法(将null反序列化为空集合)?
  4. P.S。关于我最初的问题。我不想要选择[Seq [Any]]并且我不想拥有getter,因为我的构造函数param将具有像_seq这样丑陋的名称,而在scala参数名称中也是一个公共API。

0 个答案:

没有答案