我在序列化一个案例类时遇到了一个运行时异常,该案例类扩展了一个特征,后者又扩展了另一个祖父母特征。
只有当祖父母特征包含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)))
}
}
我得到的RunTime异常是
线程“main”中的异常org.json4s.package $ MappingException:不能 从类com.adobe.formfactory.generator.Test中找到字段b org.json4s.reflect.package $ .fail(package.scala:95)at org.json4s.reflect.ScalaSigReader $ .read $ 1(ScalaSigReader.scala:43)at at 。org.json4s.reflect.ScalaSigReader $ $ $ anonfun $ readField 3(ScalaSigReader.scala:47) 在scala.Option.getOrElse(Option.scala:121)at org.json4s.reflect.ScalaSigReader $ .read $ 1(ScalaSigReader.scala:47)at at 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:59) 在 scala.collection.mutable.ResizableArray.foreach $(ResizableArray.scala:52) 在scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:48) 在scala.collection.TraversableLike.map(TraversableLike.scala:234) 在scala.collection.TraversableLike.map $(TraversableLike.scala:227) 在scala.collection.AbstractTraversable.map(Traversable.scala:104) 在 org.json4s.reflect.Reflector $ ClassDescriptorBuilder.fields(Reflector.scala:68) 在 org.json4s.reflect.Reflector $ ClassDescriptorBuilder.properties(Reflector.scala:85) 在 org.json4s.reflect.Reflector $ ClassDescriptorBuilder.result(Reflector.scala:184) 在org.json4s.reflect.Reflector $ .createDescriptor(Reflector.scala:53) 在 。$ $ org.json4s.reflect.Reflector $ anonfun描述$ 1(Reflector.scala:48) 在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) 在org.json4s.Extraction $ .decomposeWithBuilder(Extraction.scala:64) 在org.json4s.native.Serialization $ .write(Serialization.scala:43)at org.json4s.native.Serialization $ .write(Serialization.scala:37)at com.adobe.formfactory.generator.Main $ .main(Main.scala:31)at com.adobe.formfactory.generator.Main.main(Main.scala)
Scala2.12.3
JDK1.8
json4s-native 3.5.3
我猜json4s不会遍历元组或其他复合对象的超级链?
如果是提供自定义序列化程序的情况,那么错误就会提到某些类型无法序列化。