Определенный объект
open class Person : RealmObject() {
var age: Int = 0
var name: String = ""
}
class PersonSerializer : JsonSerializer<Person> {
override fun serialize(src: Person, typeOfSrc: Type, context: JsonSerializationContext): JsonElement {
val jsonObject = JsonObject()
jsonObject.addProperty("name", src.name)
jsonObject.addProperty("age", src.age)
return jsonObject
}
}
Сериализация GSON
val realm = Realm.getDefaultInstance()
val person = realm.where(Person::class.java).findFirst()
val gson = GsonBuilder()
.setExclusionStrategies(object : ExclusionStrategy {
override fun shouldSkipField(f: FieldAttributes): Boolean {
return f.declaringClass == RealmObject::class.java
}
override fun shouldSkipClass(clazz: Class<*>): Boolean {
return false
}
})
.registerTypeAdapter(Person::class.java, PersonSerializer())
.create()
val personJSON = gson.toJson(person)
Log.d("MainActivity", "$personJSON")
realm.close()
Это вызывает бесконечный цикл.Но если я поменяю на
val personJSON = gson.toJson(realm.copyFromRealm(person))
Сериализация объекта будет в порядке.Я просто перевожу демо царства gson из java в kotlin с официальным документом https://gist.github.com/cmelchior/ddac8efd018123a1e53a
Я не знаю, что произошло в моем Kotlin