override def writes()

in common/app/common/commercial/EditionAdTargeting.scala [39:64]


    override def writes(o: AdTargetParam) =
      Json.obj(
        "name" -> o.name,
        "value" -> o.value,
      )

    override def reads(json: JsValue) =
      JsSuccess {
        val name = (json \ "name").asOpt[String]
        name match {
          case Some(AuthorParam.name)      => AuthorParam((json \ "value").as[MultipleValues])
          case Some(BlogParam.name)        => BlogParam((json \ "value").as[MultipleValues])
          case Some(BrandingParam.name)    => BrandingParam((json \ "value").as[SingleValue])
          case Some(ContentTypeParam.name) => ContentTypeParam((json \ "value").as[SingleValue])
          case Some(EditionParam.name)     => EditionParam((json \ "value").as[SingleValue])
          case Some(KeywordParam.name)     => KeywordParam((json \ "value").as[MultipleValues])
          case Some(ObserverParam.name)    => ObserverParam((json \ "value").as[SingleValue])
          case Some(PathParam.name)        => PathParam((json \ "value").as[SingleValue])
          case Some(PlatformParam.name)    => PlatformParam((json \ "value").as[SingleValue])
          case Some(SeriesParam.name)      => SeriesParam((json \ "value").as[MultipleValues])
          case Some(ShortUrlParam.name)    => ShortUrlParam((json \ "value").as[SingleValue])
          case Some(SurgeLevelParam.name)  => SurgeLevelParam((json \ "value").as[MultipleValues])
          case Some(ToneParam.name)        => ToneParam((json \ "value").as[MultipleValues])
          case _                           => UnknownParam
        }
      }