Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.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
Json 为什么我的case类将$classname保存到mongodb中?_Json_Mongodb_Scala - Fatal编程技术网

Json 为什么我的case类将$classname保存到mongodb中?

Json 为什么我的case类将$classname保存到mongodb中?,json,mongodb,scala,Json,Mongodb,Scala,我有一个案例类和这样的特点 trait A { val _id: Option[A] = None val d: Option[List[D]] = None val id: Option[String] = None } object A { def apply(className: String): Element = Class.forName(className: String).asInstanceOf[A] def unapply(element:

我有一个案例类和这样的特点

trait A {
    val _id: Option[A] = None 
    val d: Option[List[D]] = None
    val id: Option[String] = None
}

object A {
  def apply(className: String): Element = Class.forName(className: String).asInstanceOf[A]
  def unapply(element: A): Option[String] = Option(this.getClass.getName) 
}

case class B extends A (
    value1: String, value2: A, sub: Option[TypeY] = None
)

object B {

  import play.api.libs.functional.syntax._

  implicit val AFormatter: Format[A] = Json.format[A]

  implicit val BFormatter: Format[B] = Json.format[B] 

  implicit val Breads:Reads[B] = Json.reads[B]

  implicit  val BWrites = Json.writes[B]

}
插入与案例类别B相对应的数据时,值2保存为“$a”:“abc.xyz.data”,其中“a”是特征名称,“abc.xyz.data”是包名称。这是因为我的应用和取消应用方法吗?如何解决这个问题

编辑:数据库保存代码

我正在使用ReactiveMongo库将数据保存到DB

def collB : JSONCollection = db.collection[JSONCollection]("B")

def indbNewB(b: B) = {

  collB.insert(B)

}

我认为您没有正确地将case类
A
序列化为JSON/string


如果您可以发布更多详细信息(例如实际将数据存储到数据库的代码),我将更新我的答案。

您使用的是哪个库?你已经尝试了什么?我认为问题在于你试图序列化一个特征。无论
value2
的值是什么,序列化程序必须处理的所有信息都是它的类型
A
@pedrofurla:如果我不添加json序列化/反序列化,那么我会得到“trait A没有应用,未应用实现”错误。您需要另一种设计或编写自己的手写格式化程序。这一点都不难。这个特质的手写格式化程序?