scala - 使用许多嵌套案例类播放 JSON 错误
问题描述
我有大量的嵌套案例类,我为其添加了隐式格式化程序。最初,当我声明这些格式化程序时,我遇到了一些排序问题,但是一旦我能够对所有排序进行排序,我就会得到一些其他错误,例如:
Error:(57, 56) forward reference extends over definition of value zombType
implicit val varFmt: OFormat[Variant] = Json.format[Variant]
这是我在许多不同文件中定义的案例类集:
在一个名为 commontypes 的包中,我有以下一组案例类:
sealed trait BuiltInType { def id: Int }
case class ZombieType (a: String, id: Int = 0) extends BuiltInType
case class BooleanType (a: Boolean, id: Int = 1) extends BuiltInType
case class ByteType (a: Byte, id: Int = 2) extends BuiltInType
case class UByteType (a: Byte, id: Int = 3) extends BuiltInType
case class Int16Type (a: Int, id: Int = 4) extends BuiltInType
case class UInt16Type (a: Int, id: Int = 5) extends BuiltInType
case class Int32Type (a: Int, id: Int = 6) extends BuiltInType
case class UInt32Type (a: Int, id: Int = 7) extends BuiltInType
case class Int64Type (a: Long, id: Int = 8) extends BuiltInType
case class UInt64Type (a: Long, id: Int = 9) extends BuiltInType
case class FloatType (a: Float, id: Int = 10) extends BuiltInType
case class DoubleType (a: Double, id: Int = 11) extends BuiltInType
case class StringType (a: String, id: Int = 12) extends BuiltInType
case class DateTimeType (a: Long, id: Int = 13) extends BuiltInType // FIXME: Wrong type used, fix it later
case class GuidType (a: UUID, id: Int = 14) extends BuiltInType
case class ByteStringType (a: Vector[Byte], id: Int = 15) extends BuiltInType
case class XmlElementType (a: String, id: Int = 16) extends BuiltInType
case class NodeIdType (a: NodeId, id: Int = 17) extends BuiltInType
case class ExpandedNodeIdType (a: NodeId, id: Int = 18) extends BuiltInType
case class StatusCodeType (a: StatusCode, id: Int = 19) extends BuiltInType
case class QualifiedNameType (a: QualifiedName, id: Int = 20) extends BuiltInType
case class LocalizedTextType (a: LocalizedText, id: Int = 21) extends BuiltInType
case class ExtensionObjectType (a: ExtensionObject, id: Int = 22) extends BuiltInType
case class DataValueType (a: DataValue, id: Int = 23) extends BuiltInType
case class VariantType (a: Variant, id: Int = 24) extends BuiltInType
case class DiagnosticInfoType (a: String, id: Int = 25) extends BuiltInType
在另一个名为 headertypes 的包中,我定义了以下一组案例类:
sealed trait ExtensionObjectEncoding
case class ByteStringEncoding(bytes: Vector[Byte]) extends ExtensionObjectEncoding
case class XmlElementEncoding(xmlElement: String) extends ExtensionObjectEncoding
case class ExtensionObject(
encodingTypeId: NodeId,
encodedBody: ExtensionObjectEncoding
)
case class DataValue(
value: Variant,
status: StatusCode,
sourceTime: Long, // TODO: Need to be a Datetime type
sourcePicoseconds: Int,
serverTime: Long, // TODO: Need to be a Datetime type
serverPicoseconds: Int
)
case class KeyValueProperty(
qName: QualifiedName,
value: Variant
)
sealed trait VariantData
case class SimpleOrder(rows: Vector[BuiltInType]) extends VariantData
case class HigherOrder(matrices: Vector[VariantData]) extends VariantData
这是GitHub 项目,我已经在一个名为 DataSetMetaDataParserSpec 的文件中声明了所有隐式格式,这是我正在编写的一个测试!
知道如何解决此错误吗?
解决方案
推荐阅读
- c# - 从也需要求和的分组中预测结果
- javascript - 如何在续集的模型中声明外键
- javascript - 获取数据成功,但出现 TypeError: Cannot read property '0' of null
- r - 如何让行变成列
- typescript - SelectorEvent 在哪里定义以及如何将其导入以进行类型检查?
- java - Azure AD oauth springboot + vuejs
- python - 从网格中的特定输入框中获取文本并更新同一行中的组合框
- r - 为什么 R 包 `qtlbim` 安装在本地失败但在 docker 容器中成功?
- c - 值为 0 的套接字类型是什么类型?
- apache-spark - 为什么驱动程序内存不在我的 Spark 上下文配置中?