Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.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
Scala将对象转换为JSON响应_Scala_Akka_Akka Http_Spray Json - Fatal编程技术网

Scala将对象转换为JSON响应

Scala将对象转换为JSON响应,scala,akka,akka-http,spray-json,Scala,Akka,Akka Http,Spray Json,如何将下面的case类对象转换为JSON响应,case类包含多个嵌套对象值 当我使用jsonFormat5(responseData) 例外 jsonFormat5应与case类一起使用,因为它定义了如何对对象进行编码。您的代码应该如下所示: import spray.json._ import DefaultJsonProtocol._ // define format implicitly for BidResponse and Banner case classes implicit v

如何将下面的case类对象转换为JSON响应,case类包含多个嵌套对象值

当我使用
jsonFormat5(responseData)

例外
jsonFormat5
应与case类一起使用,因为它定义了如何对对象进行编码。您的代码应该如下所示:

import spray.json._
import DefaultJsonProtocol._

// define format implicitly for BidResponse and Banner case classes
implicit val bannerFormat = jsonFormat4(Banner)
implicit val bidResponseFormat = jsonFormat5(BidResponse)

// serialize BidResponse object
val bidResponseJson = responseData.toJson
下面是一个扩展示例:

import spray.json._
import DefaultJsonProtocol._

// example case classes
case class Banner(num: Int, url: String, num2: Int, num3: Int)
case class BidResponse(uuid: String, code: String, num: Int, opt: Option[String], banner: Option[Banner])

implicit val bformat = jsonFormat4(Banner)
implicit val format = jsonFormat5(BidResponse)

val simpleBanner1 = Banner(112, "http://dummyimage.com/300x250", 300, 250)
val responseData = BidResponse("abcdef", "XN2zZQABxJsKK0jU4QnIzw", 1234, Option("4548"), Option(simpleBanner1))

println( responseData.toJson )

如注释中所述,必须隐式定义横幅格式,因为BidResponse对象依赖于它。ref:
bformat
变量。

Hi@terminally chill,我之前已经尝试过了,得到异常
错误:(63,47)找不到bidder.RestService.JF[Option[bidder.Banner]]implicit val bidResponseFormat=jsonFormat5(BidResponse)
错误:(63,47)方法jsonFormat5的参数不足:(隐式证据$25:bidder.RestService.JF[String],隐式证据$26:bidder.RestService.JF[String],隐式证据$27:bidder.RestService.JF[Double],隐式证据$28:bidder.RestService.JF[Option[String]],隐式证据$29:bidder.RestService.JF[Option[bidder.Banner]],隐式证据$30:scala.reflect.ClassTag[bidder.BidResponse])spray.json.RootJsonFormat[bidder.BidResponse]。未指定的值参数证据$29,证据$30。隐式val bidResponseFormat=jsonFormat5(BidResponse)
@AbdulAwal您还应该将横幅添加为隐式val。更新了在范围中显示两者的答案。我将其更新为
implicit val simpleBanner1=Banner(112,“http://dummyimage.com/300x250“,300,250)
但错误仍然存在same@AbdulAwal您能包括案例类定义吗?当使用错误的
jsonFormat
函数时,我可以重新创建此异常。案例类定义中是否有默认值?
import spray.json._
import DefaultJsonProtocol._

// define format implicitly for BidResponse and Banner case classes
implicit val bannerFormat = jsonFormat4(Banner)
implicit val bidResponseFormat = jsonFormat5(BidResponse)

// serialize BidResponse object
val bidResponseJson = responseData.toJson
import spray.json._
import DefaultJsonProtocol._

// example case classes
case class Banner(num: Int, url: String, num2: Int, num3: Int)
case class BidResponse(uuid: String, code: String, num: Int, opt: Option[String], banner: Option[Banner])

implicit val bformat = jsonFormat4(Banner)
implicit val format = jsonFormat5(BidResponse)

val simpleBanner1 = Banner(112, "http://dummyimage.com/300x250", 300, 250)
val responseData = BidResponse("abcdef", "XN2zZQABxJsKK0jU4QnIzw", 1234, Option("4548"), Option(simpleBanner1))

println( responseData.toJson )