У меня есть JSON Я пытаюсь десериализовать. Я пытаюсь приспособить следующую структуру со следующими ограничениями
1) И прямоугольник, и квадрат имеют тип Shape и вместо этого могут иметь список фигур.
2) Их порядок можно переключать квадрат может иметь список прямоугольников (список фигур)
3) Как квадрат, так и прямоугольник могут также иметь список кругов, который ничего не наследует от формы и в основном состоит из формы
4) Я хочу однозначно идентифицировать квадрат и класс прямоугольника, а не рассматривать их как один и тот же объект Shape после десериализации в структуре моей модели (интересно, есть ли способ без анализа свойства type, поэтому я знаю, что тип объекта - Square или Rectangle).
{
"type": "rectangle",
"x": "3",
"y": "3",
"children": [
{
"type": "square",
"x": "3",
"y": "4",
"children": [
{
"type": "circle",
"radius": "3"
},
{
"type": "circle",
"radius": "4"
},
{
"type": "circle",
"radius": "5"
}
]
}
]
}
Объекты модели, которые я создал до сих пор
abstract class Shape {
abstract val x: String
abstract val y: String
abstract val type: String
abstract val children: List<Shape>
}
data class Square(override val x: String, override val y: String, override val type: String,
override val children: List<Shape>) : Shape()
data class Rectangle(override val x: String, override val y: String, override val type:
String, override val children: List<Shape>) : Shape()
data class Circle(val radius: String, val type: String)