https://kotlinlang.org logo
f

fstn

10/09/2017, 7:21 PM
Thanks @dalexander, it was a good idea
Copy code
class User : JsonObject() {

    var firstName by JsonDelegate()
    var lastName by JsonDelegate()
    var gender by JsonDelegate()
    var type by JsonDelegate()
    var picture by JsonDelegate()
    var locale by JsonDelegate()
    var heart by JsonDelegate()
    var level by JsonDelegate()
    var timezone by JsonDelegate()

    fun update(userUpdate: JsonObject) {
        userUpdate.fieldNames().forEach({ fieldName ->
            this.put(fieldName, userUpdate.getValue(fieldName))
        })
    }
}
Copy code
class JsonDelegate {
    operator fun getValue(thisRef: JsonObject?, property: KProperty<*>): Any {
        return thisRef!!.getValue(property.name)
    }

    operator fun setValue(thisRef: JsonObject?, property: KProperty<*>, value: Any) {
        thisRef!!.put(property.name, value)
    }
}
🎉 2