2017-11-09 625 views
1

특성을 확장하는 케이스 클래스를 직렬화하는 동안 런타임 예외가 발생했습니다. 차례로 다른 조부모 형질을 확장시킨다.json4를 사용하여 json을 'val'또는 'lazy val'직렬화하는 동안 실행 시간 예외가 발생했습니다. json4s를 사용하여 스칼라에서 scala로 된 튜플 필드

조부모 특성에 val 또는 lazy val (튜플)이 포함 된 경우에만 문제가 발생합니다. 내가 할

trait Trait0 { 
    def a: Int 

    lazy val b: (Int, Int) = (1, 2) 
    // also errors if "val" 
    // executes if "def" or just a simple type 
} 

trait Trait1 extends Trait0 

case class Test(a: Int) extends Trait1 

object Main { 

    def main(args: Array[String]): Unit = { 
    import org.json4s._ 
    import org.json4s.native.Serialization.write 

    implicit val formats = DefaultFormats 


    println(write(Test(1))) 
    } 
} 

런타임 예외는 "주"org.json4s.package의 $의 MappingException 스레드에서

예외입니다 : 클래스 com.adobe.formfactory.generator에서 수 없습니다 찾기 필드 나. org.json4s.reflect.package $ .fail (package.scala : 95)에서 org.json4s.reflect.ScalaSigReader $ .read $ 1 (ScalaSigReader.scala : 43) at org.json4s.reflect.ScalaSigReader $로 테스트하십시오. . $ anonfun $ readField $ 3 (ScalaSigReader.scala : 47)시 scala.Option.getOrElse (Option.scala : 121)의 6,org.json4s.reflect.ScalaSigReader $ .read $ 1 (ScalaSigReader.scala 47) org.json4s.reflect.ScalaSigReader $ .readField (ScalaSigReader.scala 49)에 org.json4s.reflect.Reflector $ ClassDescriptorBuilder에서 . $의 anonfun $으로 필드 $ 3 (Reflector.scala 69) scala.collection.TraversableLike에서 $ anonfun $ 매핑 $ 1 (TraversableLike.scala : 234). scala.collection.mutable.ResizableArray.foreach에서 (ResizableArray.scala : scala.collection.TraversableLike.map 48) : scala.collection.mutable.ArrayBuffer.foreach (ArrayBuffer.scala 52) 59) scala.collection.mutable.ResizableArray.foreach을 $ (ResizableArray.scala에서 (TraversableLike.scala : 234) org.json4s.reflect.Reflector $ ClassDescriptorBuilder.fields에서 (반사체 : scala.collection.AbstractTraversable.map에서 (104 Traversable.scala) scala.collection.TraversableLike.map $ (227 TraversableLike.scala)에서. 스칼라 68) org.json4s.reflect.Reflector $ ClassDescriptorBuilder.properties (Reflector.scala에서 184)에서 조직 85) org.json4s.reflect.Reflector $ ClassDescriptorBuilder.result (Reflector.scala에서. json4s.reflect.Reflector $ .createDescriptor (Reflector.scala : 53) org.json4s.reflect.Reflector $. $ anonfun $ describe $ 1 (Reflector.scala : 48) at org.json4s.reflect.package $ Memo .apply (package.scala : 36) at org.json4s.reflect.Reflector $ .describe (Reflector.scala : 48) at org.json4s.Extraction $ .decomposeObject $ 1 (Extraction.scala : 118) at org.json4s.Extraction $ .internalDecomposeWithBuilder (Extraction.scala : 228) at org.json4s.Extraction $ .decomposeWithBuilder (Extraction.scala : 64) at org.json4s.native.Serialization $. write (Serialization.scala : 43) at org.json4s.native.Serialization $ .write (Serialization.scala 37) com.adobe.formfactory.generator.Main.main (Main.scala)에서

com.adobe.formfactory.generator.Main $의 .main (31 Main.scala)에서

Scala2.12.3
JDK1.8
json4s 네이티브 내가 json4s 추측하고 3.5.3

는 튜플 또는 기타 복합 개체의 슈퍼 체인을 통과하지 않습니까?

사용자 지정 serializer를 제공하는 경우 오류로 인해 특정 유형을 직렬화 할 수 없다는 점을 언급합니다.

답변