Сериализация сущности объекта с использованием бесконечного цикла Kotlin и GSON - PullRequest
0 голосов
/ 18 сентября 2018

Определенный объект

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

...