У меня есть определенный класс KG (класс case и сопутствующий объект):
case class KG(a: Resource,
b: String,
c: Option[Resource],
d: Option[String],
d: Option[Seq[String]])
object KG {
implicit val writes: Writes[KG] = (o: KG) => Json.obj(
"a" -> o.resource.getURI,
"b" -> o.label,
"c" -> o.subClassOf.map(_.getURI),
"d" -> o.d
)
}
Это вывод моей консоли sbt при попытке выяснить, что происходит
test: KG = KG(http://some-url-this-is,test,Some(http://another-url-this-is),None,None)
scala> val ontology = Seq(test)
ontology: Seq[KG] = List(KG(http://some-url-this-is,test,Some(http://another-url-this-is),None,None))
scala> val initial = ontology.groupBy(_.c.map(_.getLocalName))
initial: scala.collection.immutable.Map[Option[String],Seq[KG]] = Map(Some(Person) -> List(KG(http://some-url-this-is,test,Some(http://another-url-this-is),None,None))
scala> initial.getClass
res8: Class[_ <: scala.collection.immutable.Map[Option[String],Seq[KG]]] = class scala.collection.immutable.Map$Map1
scala> Json.toJson(initial)
res7: play.api.libs.json.JsValue = [["another-url-this-is",[{"a":"http://some-url-this-is","b":"test","c":"http://another-url-this-is","d":null}]]]
Хотя initial
является картой, она сериализуется как массив .... Почему это? Я неправильно настроил какие-либо последствия сериализации?
[
[
"another-url-this-is",
[
{
"d": null,
"b": "test",
"a": "http://some-url-this-is",
"c": "http://another-url-this-is"
}
]
]
]