Я хочу проанализировать строку JSON, используя Circa.Вы можете найти пример ввода JSON ниже.
Это своего рода рекурсивные данные.Так что мое свойство entity
содержит зависимости сущностей.
Я хочу проанализировать зависимости для сопоставления Map[String, Tasks]
.
{
"entity": [
{
"task_id": "X",
"type": "test",
"attributes": {
"name": "A",
"random_property_count": 1 // should be ignored
},
"dependencies": {
"random_name_1": {
"entity": [
{
"task_id": "907544AF",
"type": "test",
"attributes": {
"name": "B",
"random_attribute": "*"
},
"dependencies": {
"random_name_2": {
"entity": [
{
"task_id": "5",
"random_prop": "...", // should be ignored as it's not present in model
"type": "test",
"attributes": {
"name": "C"
}
}
]
}
}
}
]
}
}
}
]
}
Вот мой код:
case class Tasks (entity: Seq[Task])
case class Task(task_id: String, `type`: String, attributes: Attributes, dependencies: Map[String, Tasks])
case class Attributes(name: String)
implicit val decodeTask: Decoder[Task] = deriveDecoder[Task]
implicit val decodeTasks: Decoder[Tasks] = deriveDecoder[Tasks]
implicit val decodeAttributes: Decoder[Attributes] = deriveDecoder[Attributes]
val json = fromInputStream(getClass.getResourceAsStream("/json/example.json")).getLines.mkString
val tasks = decode[Tasks](json)
tasks match {
case Left(failure) => println(failure)
case Right(json) => println(json)
}
Когда я пытаюсь проанализировать строку JSON в моей модели, Я получаю сообщение об ошибке, подобное этому:
DecodingFailure(Attempt to decode value on failed cursor, List(DownField(dependencies), DownArray, DownField(entity), DownField(random_name_2), DownField(dependencies), DownArray, DownField(entity), DownField(random_name_1), DownField(dependencies), DownArray, DownField(entity)))
В чем может быть проблема?