Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.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
Oop Kotlin GSON自定义反序列化_Oop_Kotlin_Gson_Json Deserialization - Fatal编程技术网

Oop Kotlin GSON自定义反序列化

Oop Kotlin GSON自定义反序列化,oop,kotlin,gson,json-deserialization,Oop,Kotlin,Gson,Json Deserialization,我正在尝试反序列化一个JSON。我试图用以下约束来适应以下结构 1) 矩形和正方形都是Shape类型,可以有一个形状列表 2) 它们的顺序可以切换一个正方形可以有一个矩形列表(形状列表) 3) 正方形和矩形也可以有一个圆形列表,该列表不继承形状的任何内容,基本上由形状组成 4) 我想唯一地标识square和rectangle类,并在模型结构中反序列化之后将它们视为同一个Shape对象(想知道是否有方法不解析type属性,这样我就知道对象类型是square或rectangle) 到目前为止我创建的

我正在尝试反序列化一个JSON。我试图用以下约束来适应以下结构

1) 矩形和正方形都是Shape类型,可以有一个形状列表

2) 它们的顺序可以切换一个正方形可以有一个矩形列表(形状列表)

3) 正方形和矩形也可以有一个圆形列表,该列表不继承形状的任何内容,基本上由形状组成

4) 我想唯一地标识square和rectangle类,并在模型结构中反序列化之后将它们视为同一个Shape对象(想知道是否有方法不解析type属性,这样我就知道对象类型是square或rectangle)

到目前为止我创建的模型对象

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)
抽象类形状{
抽象val x:String
摘要:字符串
抽象值类型:String
抽象val子项:列表
}
数据类方形(覆盖值x:String、覆盖值y:String、覆盖值类型:String、,
覆盖val子项:列表):形状()
数据类矩形(覆盖值x:字符串、覆盖值y:字符串、覆盖值类型:
字符串,重写val子项:列表):Shape()
数据类圆(val半径:字符串,val类型:字符串)
可能是什么?可能是什么?
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)