1

私はスカラプレイを使用しています!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 シリアライザーに強制的に"artifacts": [], "events":[]を追加させる必要があります

フォーマッタ全体を手動で書かずにそれを行う正しい方法は何ですか? 私は何十ものフィールドを持っています。

4

1 に答える 1

0

したがって、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 に"events": []を強制的に生成させます。これは私にとっては問題ありません。私は play-json が少し過剰に設計されていることに気付きました。:( 私は Java の過去から Google Gson が本当に恋しいです :) 非常にシンプルで、うまくいきます。

于 2016-11-21T10:17:51.327 に答える