Json 如何强制Play framework 2.4.x使用空列表序列化字段

Json 如何强制Play framework 2.4.x使用空列表序列化字段,json,playframework-2.4,play-json,Json,Playframework 2.4,Play Json,我正在使用scala play!2.4.x并尝试对案例类进行序列化: case class MyEvent( id: String, parentId: Option[ParentRef] = None, stepStatus: String = "undefined", artifacts:Seq[String] = Seq.empty, events:Seq[String] = Seq.empty ) 问题是序列化的json不包含字段工件和事

我正在使用scala play!2.4.x并尝试对案例类进行序列化:

case class MyEvent(
    id: String,
    parentId: Option[ParentRef] = None,
    stepStatus: String = "undefined",
    artifacts:Seq[String] = Seq.empty,
    events:Seq[String] = Seq.empty  
  )
问题是序列化的json不包含字段工件事件,因为它们的默认值是空序列。接收方希望获得字段名,即使字段名为空。 我必须强制json序列化程序添加“工件”:[],“事件”:[]


在不手动编写整个格式化程序的情况下,正确的方法是什么?我有几十个字段。

因此,对于2.4.x,它的工作方式如下:

case class MyEvent(
    id: String,
    parentId: Option[ParentRef] = None,
    stepStatus: String = "undefined",
    artifacts:Seq[String] = Seq(),
    events:Seq[String] = Seq()  
  )

Seq()。我发现play json的设计有点过头了(我真的很怀念我的Java历史中的google Gson:)非常简单,而且可以正常工作。

因此,对于2.4.x,它的工作方式如下:

case class MyEvent(
    id: String,
    parentId: Option[ParentRef] = None,
    stepStatus: String = "undefined",
    artifacts:Seq[String] = Seq(),
    events:Seq[String] = Seq()  
  )

Seq()。我发现play json的设计有点过头了(我真的很怀念我的Java历史中的google Gson:)非常简单,而且可以正常工作。

你能让
工件
事件
成员
选项[Seq[String]]
吗?AFAIK没有其他方法不包括手动写入
读取/格式化
。你是说在接收方?不,这是不可能的。当我试图复制这一点时,我似乎发现了2.3和2.4之间的一些行为差异。还不能解决。在2.3中,工件和事件最明确地存在,因此有几个问题是关于试图抑制它们。没有帮助,我知道。请告诉我们您是否解决了问题。您能否使
工件
事件
成员
选项[Seq[String]]
?AFAIK没有其他方法不包括手动写入
读取/格式化
。你是说在接收方?不,这是不可能的。当我试图复制这一点时,我似乎发现了2.3和2.4之间的一些行为差异。还不能解决。在2.3中,工件和事件最明确地存在,因此有几个问题是关于试图抑制它们。没有帮助,我知道。如果你决定了,请告诉我们。