Kotlin과 함께 GSON을 사용하여 사용자 지정 역 직렬화를 만들려고합니다. 다음은 샘플 코드이지만 test 변수 는 항상 null입니다. 왜 그런지 아세요?
// simple class with x property
class TestClass(var x: Int = 1)
// simple deserializer that always returns object with value x = 4444
class TestClassDeserializer : JsonDeserializer<TestClass> {
override fun deserialize(json: JsonElement?, typeOfT: Type?, context: JsonDeserializationContext?): TestClass {
return TestClass(4444)
}
}
// simple gson object with register adapter
val gson = GsonBuilder()
.registerTypeAdapter(::TestClass.javaClass, TestClassDeserializer())
.create()
// init object using json string
val json = """ {"x": 9} """.trimIndent()
val test = gson.fromJson(json, ::TestClass.javaClass)
test 가 항상 null이고 예상 객체 TestClass (4444)가 아닌 이유를 알 수 있습니다. 최신 gson 버전 2.8.6을 사용하고 있습니다.
문제는 ::TestClass.javaClass
이 표현식의 라인 유형에 KFunction1<Int, TestClass>
있습니다. TestClass 생성자 메서드 참조이기 때문입니다. 올바른 구문은TestClass::class.java
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다