Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
trait仅包含case对象在spray json中的自定义实现_Json_Scala_Akka_Akka Http_Spray Json - Fatal编程技术网

trait仅包含case对象在spray json中的自定义实现

trait仅包含case对象在spray json中的自定义实现,json,scala,akka,akka-http,spray-json,Json,Scala,Akka,Akka Http,Spray Json,鉴于我有以下声明: sealed trait Color case object DColor extends Color case object CColor extends Color case object VColor extends Color 然后我在case类中使用它们,如下所示: case class CustomColor(c: Color) CustomColor(VColor) 现在我想让它生成一个JSON,如下所示: {c:"v_color"} 应定义自定义格式:

鉴于我有以下声明:

sealed trait Color
case object DColor extends Color
case object CColor extends Color
case object VColor extends Color
然后我在case类中使用它们,如下所示:

case class CustomColor(c: Color)
CustomColor(VColor)
现在我想让它生成一个JSON,如下所示:

{c:"v_color"}

应定义自定义格式:

object MyJsonProtocol extends DefaultJsonProtocol {
    implicit object ColorJsonFormat extends RootJsonFormat[Color] {
               def write(c: Color) = c match {
                  case VColor => JsString("v_color")
                  case _ => JsString("foo")
               }

               def read(value: JsValue) = ???
    }

    implicit val customColorFormat = jsonFormat1(CustomColor.apply)
}
然后


您的问题是如何将这个case类转换为JSON,还是如何在Spray中使用该序列化程序?
alex-alex@ import MyJsonProtocol._
alex-alex@ CustomColor(VColor).toJson
res18: JsValue = {"c":"v_color"}