使用play-json-derived.codecs将json解码为密封的特征层次

时间:2018-08-07 11:19:29

标签: playframework play-json

我具有以下密封的特征等级

case class OrderBy(parameter: OrderByParameter)

sealed trait OrderByParameter

case object group extends OrderByParameter

case class relation(name: String, isMain: Boolean) extends OrderByParameter

case class field(name: String) extends OrderByParameter

我正在使用play-json-2.6play-json-derived.codecs库来解码json,尤其是密封的特征层次。 到目前为止,我正在使用派生的读者

implicit val readsOrderByParameter = reads[OrderByParameter]
implicit val readOrderBy = reads[OrderBy]

这意味着要解码的JSON表示应为:

{
  "parameter": {
      "relation": {
           "name": "bar",
           "isMain" : true
      }
  }
}

{
  "parameter": {
     "group": ""
  }
}

 {
   "parameter": {
       "field": {
           "name": "foo"
        }
    }
 }

我想要实现的是JSON,它可以解码成类似以下的类:

{
  "parameter": {
     "relation": {
        "name": "bar",
        "isMain" : true
      }
   }
} 

{
  "parameter": "group"
}

{
  "parameter": {
      "field": "foo"
  }
}

有没有太多麻烦的可能吗?

0 个答案:

没有答案