2016-06-10 9 views
0

실패,하지만 난이 클래스에 문제가 : 모든 것이 잘 작동 JsValueJsValue 직렬화 내가 serializaion에 대한 <a href="https://github.com/fommil/spray-json-shapeless" rel="nofollow">https://github.com/fommil/spray-json-shapeless</a> 라이브러리를 사용하고 내 응용 프로그램에서

case class FooResult(var id: Option[String], jobId: String, completedAt: DateTime, result: JsValue) extends JobResult 

implicit val JobResultFormat: RootJsonFormat[JobResult] = { 
    import shapeless._ 
    cachedImplicit 
} 

유형의 결과 필드없이하지만 그것으로 나는 다음과 같은 예외가 있습니다 :

[error] /home/mgosk/projects/spark-service/spark-rest-api/src/main/scala/com/xxx/http/services/SparkService.scala:134: ambiguous implicit values: 
[error] both object JsValueFormat in trait AdditionalFormats of type com.xxx.spark.json.ServiceJsonProtocol.JsValueFormat.type 
[error] and method familyFormat in trait LowPriorityFamilyFormats of type [T, Repr](implicit gen: shapeless.LabelledGeneric.Aux[T,Repr], implicit sg: shapeless.Cached[shapeless.Strict[com.xxx.spark.json.ServiceJsonProtocol.WrappedRootJsonFormat[T,Repr]]], implicit tpe: shapeless.Typeable[T])spray.json.RootJsonFormat[T] 
[error] match expected type spray.json.JsonFormat[spray.json.JsValue] 

처리 방법에 대한 조언.

답변

0

결과를 JsObject으로 변경하고 다시 만들기 전에 프로젝트를 정리하여 문제를 해결했습니다.

사례 클래스 FooResult (var id : Option [String], jobId : String, completedAt : DateTime, result : JsObject)는 JobResult를 확장합니다.