kotlin 如何为对象列表重用自定义对象序列化程序?

gwbalxhn  于 2023-01-26  发布在  Kotlin
关注(0)|答案(1)|浏览(132)

我已经编写了一个自定义的"student"序列化器,并希望在student列表中重用它。我是否需要为List<Student>类型编写一个新的序列化器,还是可以重用StudentSerializer
例如:

class Student(
var id: Long? = null,
var name: String? = null,
var courses: MutableList<Courses> = mutableListOf()
)
class Course(
var id: Long? = null,
var name: String? = null,
var students: MutableList<Student> = mutableListOf()
)
class StudentSerializer : JsonSerializer<Student>() {

    override fun serialize(student: Student?, gen: JsonGenerator, serializers: SerializerProvider?) {
     gen.writeStartObject()
     // ...
     gen.writeEndObject()
    }
 }

如何在此方案中重用此序列化程序?

oalqel3c

oalqel3c1#

是否需要为类型列表编写新的序列化程序,或者是否可以重用StudentSerializer
您可以重用已经定义的StudentSerializer序列化器:在您的情况下,您可以使用JsonSerialize注解和contentUsing指令来注解Course类中的students字段,其中contentusing指示用于序列化一个注解属性的内容(Collection/array的元素、Map的值)的序列化器类:

class Course(
    var id: Long? = null,
    var name: String? = null,
    @JsonSerialize(contentUsing= StudentSerializer::class)
    var students: MutableList<Student> = mutableListOf()
)

相关问题