【发布时间】:2022-12-03 03:13:50
【问题描述】:
每当我添加时,我都有一个工作的 Android 项目Jetpack Compose 依赖项我的GSON没有按预期工作。奇怪的事情,如果我删除excludeFieldsWithModifiers或者如果我不使用任何遗产对于我使用 GSON 解析的类,它正在工作。
重现步骤:
- 添加Jetpack Compose 运行时或者Jetpack Compose 依赖项
- 添加GSON依赖关系
- 使用GsonBuilder去创造GSON对象并添加excludeFieldsWithModifiers选项
- 创建一个简单的类层次结构
- 尝试使用 to 解析任何 json儿童班您在上面使用相同的方法创建的GSON对象(创建于步骤 3)
出于说明目的,我添加了一个样本
class Response(@SerializedName("id") var id : Int = 0) : BaseResponse() open class BaseResponse val gsonMapper: Gson by lazy { GsonBuilder() .excludeFieldsWithModifiers( java.lang.reflect.Modifier.TRANSIENT. // Can you any other modifier ) .create() } fun responseProcess() { try { val response = """{"id": 3}""" val data = gsonMapper.fromJson(response, Response::class.java) Log.d(TAG, "responseProcess: $data") } catch (e: Exception) { e.printStackTrace() } }上述代码的 StackTrace
2022-11-30 18:14:12.162 14856-14856/com.bhaskar.myapplication W/System.err: java.lang.IllegalArgumentException: class com.bhaskar.myapplication.Response declares multiple JSON fields named $stable 2022-11-30 18:14:12.163 14856-14856/com.bhaskar.myapplication W/System.err: at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:172) 2022-11-30 18:14:12.163 14856-14856/com.bhaskar.myapplication W/System.err: at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:102) 2022-11-30 18:14:12.163 14856-14856/com.bhaskar.myapplication W/System.err: at com.google.gson.Gson.getAdapter(Gson.java:458) 2022-11-30 18:14:12.163 14856-14856/com.bhaskar.myapplication W/System.err: at com.google.gson.Gson.fromJson(Gson.java:926) 2022-11-30 18:14:12.163 14856-14856/com.bhaskar.myapplication W/System.err: at com.google.gson.Gson.fromJson(Gson.java:892) 2022-11-30 18:14:12.163 14856-14856/com.bhaskar.myapplication W/System.err: at com.google.gson.Gson.fromJson(Gson.java:841) 2022-11-30 18:14:12.163 14856-14856/com.bhaskar.myapplication W/System.err: at com.google.gson.Gson.fromJson(Gson.java:813) 2022-11-30 18:14:12.163 14856-14856/com.bhaskar.myapplication W/System.err: at com.bhaskar.myapplication.MainActivityKt.responseProcess(MainActivity.kt:74) 2022-11-30 18:14:12.163 14856-14856/com.bhaskar.myapplication W/System.err: at com.bhaskar.myapplication.MainActivityKt$Greeting$1$1.invoke(MainActivity.kt:54) 2022-11-30 18:14:12.163 14856-14856/com.bhaskar.myapplication W/System.err: at com.bhaskar.myapplication.MainActivityKt$Greeting$1$1.invoke(MainActivity.kt:53) 2022-11-30 18:14:12.163 14856-14856/com.bhaskar.myapplication W/System.err: at androidx.compose.foundation.ClickableKt$clickable$4$gesture$1$2.invoke-k-4lQ0M(Clickable.kt:153) 2022-11-30 18:14:12.163 14856-14856/com.bhaskar.myapplication W/System.err: at androidx.compose.foundation.ClickableKt$clickable$4$gesture$1$2.invoke(Clickable.kt:142) 2022-11-30 18:14:12.163 14856-14856/com.bhaskar.myapplication W/System.err: at androidx.compose.foundation.gestures.TapGestureDetectorKt$detectTapAndPress$2$1$1.invokeSuspend(TapGestureDetector.kt:223) 2022-11-30 18:14:12.163 14856-14856/com.bhaskar.myapplication W/System.err: at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) 2022-11-30 18:14:12.163 14856-14856/com.bhaskar.myapplication W/System.err: at kotlinx.coroutines.DispatchedTaskKt.resume(DispatchedTask.kt:178) 2022-11-30 18:14:12.163 14856-14856/com.bhaskar.myapplication W/System.err: at kotlinx.coroutines.DispatchedTaskKt.dispatch(DispatchedTask.kt:166) 2022-11-30 18:14:12.163 14856-14856/com.bhaskar.myapplication W/System.err: at kotlinx.coroutines.CancellableContinuationImpl.dispatchResume(CancellableContinuationImpl.kt:397) 2022-11-30 18:14:12.163 14856-14856/com.bhaskar.myapplication W/System.err: at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl(CancellableContinuationImpl.kt:431) 2022-11-30 18:14:12.163 14856-14856/com.bhaskar.myapplication W/System.err: at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl$default(CancellableContinuationImpl.kt:420) 2022-11-30 18:14:12.163 14856-14856/com.bhaskar.myapplication W/System.err: at kotlinx.coroutines.CancellableContinuationImpl.resumeWith(CancellableContinuationImpl.kt:328) 2022-11-30 18:14:12.163 14856-14856/com.bhaskar.myapplication W/System.err: at androidx.compose.ui.input.pointer.SuspendingPointerInputFilter$PointerEventHandlerCoroutine.offerPointerEvent(SuspendingPointerInputFilter.kt:511) 2022-11-30 18:14:12.164 14856-14856/com.bhaskar.myapplication W/System.err: at androidx.compose.ui.input.pointer.SuspendingPointerInputFilter.dispatchPointerEvent(SuspendingPointerInputFilter.kt:406) 2022-11-30 18:14:12.164 14856-14856/com.bhaskar.myapplication W/System.err: at androidx.compose.ui.input.pointer.SuspendingPointerInputFilter.onPointerEvent-H0pRuoY(SuspendingPointerInputFilter.kt:419) 2022-11-30 18:14:12.164 14856-14856/com.bhaskar.myapplication W/System.err: at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(HitPathTracker.kt:310) 2022-11-30 18:14:12.164 14856-14856/com.bhaskar.myapplication W/System.err: at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(HitPathTracker.kt:297) 2022-11-30 18:14:12.164 14856-14856/com.bhaskar.myapplication W/System.err: at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(HitPathTracker.kt:297) 2022-11-30 18:14:12.164 14856-14856/com.bhaskar.myapplication W/System.err: at androidx.compose.ui.input.pointer.NodeParent.dispatchMainEventPass(HitPathTracker.kt:179) 2022-11-30 18:14:12.164 14856-14856/com.bhaskar.myapplication W/System.err: at androidx.compose.ui.input.pointer.HitPathTracker.dispatchChanges(HitPathTracker.kt:98) 2022-11-30 18:14:12.164 14856-14856/com.bhaskar.myapplication W/System.err: at androidx.compose.ui.input.pointer.PointerInputEventProcessor.process-BIzXfog(PointerInputEventProcessor.kt:80) 2022-11-30 18:14:12.164 14856-14856/com.bhaskar.myapplication W/System.err: at androidx.compose.ui.platform.AndroidComposeView.sendMotionEvent-8iAsVTc(AndroidComposeView.android.kt:1159) 2022-11-30 18:14:12.164 14856-14856/com.bhaskar.myapplication W/System.err: at androidx.compose.ui.platform.AndroidComposeView.handleMotionEvent-8iAsVTc(AndroidComposeView.android.kt:1109) 2022-11-30 18:14:12.164 14856-14856/com.bhaskar.myapplication W/System.err: at androidx.compose.ui.platform.AndroidComposeView.dispatchTouchEvent(AndroidComposeView.android.kt:1059) 2022-11-30 18:14:12.164 14856-14856/com.bhaskar.myapplication W/System.err: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3920) 2022-11-30 18:14:12.164 14856-14856/com.bhaskar.myapplication W/System.err: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:3594) 2022-11-30 18:14:12.164 14856-14856/com.bhaskar.myapplication W/System.err: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3920) 2022-11-30 18:14:12.164 14856-14856/com.bhaskar.myapplication W/System.err: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:3594) 2022-11-30 18:14:12.164 14856-14856/com.bhaskar.myapplication W/System.err: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3920) 2022-11-30 18:14:12.164 14856-14856/com.bhaskar.myapplication W/System.err: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:3594) 2022-11-30 18:14:12.164 14856-14856/com.bhaskar.myapplication W/System.err: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3920) 2022-11-30 18:14:12.164 14856-14856/com.bhaskar.myapplication W/System.err: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:3594) 2022-11-30 18:14:12.164 14856-14856/com.bhaskar.myapplication W/System.err: at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:915) 2022-11-30 18:14:12.164 14856-14856/com.bhaskar.myapplication W/System.err: at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1957) 2022-11-30 18:14:12.164 14856-14856/com.bhaskar.myapplication W/System.err: at android.app.Activity.dispatchTouchEvent(Activity.java:4182) 2022-11-30 18:14:12.164 14856-14856/com.bhaskar.myapplication W/System.err: at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:873) 2022-11-30 18:14:12.165 14856-14856/com.bhaskar.myapplication W/System.err: at android.view.View.dispatchPointerEvent(View.java:15458) 2022-11-30 18:14:12.165 14856-14856/com.bhaskar.myapplication W/System.err: at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:7457) 2022-11-30 18:14:12.165 14856-14856/com.bhaskar.myapplication W/System.err: at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:7233) 2022-11-30 18:14:12.165 14856-14856/com.bhaskar.myapplication W/System.err: at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:6595) 2022-11-30 18:14:12.165 14856-14856/com.bhaskar.myapplication W/System.err: at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:6652) 2022-11-30 18:14:12.165 14856-14856/com.bhaskar.myapplication W/System.err: at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:6618) 2022-11-30 18:14:12.165 14856-14856/com.bhaskar.myapplication W/System.err: at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:6786) 2022-11-30 18:14:12.165 14856-14856/com.bhaskar.myapplication W/System.err: at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:6626) 2022-11-30 18:14:12.165 14856-14856/com.bhaskar.myapplication W/System.err: at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:6843) 2022-11-30 18:14:12.165 14856-14856/com.bhaskar.myapplication W/System.err: at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:6599) 2022-11-30 18:14:12.165 14856-14856/com.bhaskar.myapplication W/System.err: at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:6652) 2022-11-30 18:14:12.165 14856-14856/com.bhaskar.myapplication W/System.err: at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:6618) 2022-11-30 18:14:12.165 14856-14856/com.bhaskar.myapplication W/System.err: at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:6626) 2022-11-30 18:14:12.165 14856-14856/com.bhaskar.myapplication W/System.err: at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:6599) 2022-11-30 18:14:12.165 14856-14856/com.bhaskar.myapplication W/System.err: at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:9880) 2022-11-30 18:14:12.165 14856-14856/com.bhaskar.myapplication W/System.err: at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:9718) 2022-11-30 18:14:12.165 14856-14856/com.bhaskar.myapplication W/System.err: at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:9671) 2022-11-30 18:14:12.165 14856-14856/com.bhaskar.myapplication W/System.err: at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:10014) 2022-11-30 18:14:12.165 14856-14856/com.bhaskar.myapplication W/System.err: at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:220) 2022-11-30 18:14:12.165 14856-14856/com.bhaskar.myapplication W/System.err: at android.os.MessageQueue.nativePollOnce(Native Method) 2022-11-30 18:14:12.166 14856-14856/com.bhaskar.myapplication W/System.err: at android.os.MessageQueue.next(MessageQueue.java:335) 2022-11-30 18:14:12.166 14856-14856/com.bhaskar.myapplication W/System.err: at android.os.Looper.loop(Looper.java:206) 2022-11-30 18:14:12.166 14856-14856/com.bhaskar.myapplication W/System.err: at android.app.ActivityThread.main(ActivityThread.java:8633) 2022-11-30 18:14:12.166 14856-14856/com.bhaskar.myapplication W/System.err: at java.lang.reflect.Method.invoke(Native Method) 2022-11-30 18:14:12.166 14856-14856/com.bhaskar.myapplication W/System.err: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602) 2022-11-30 18:14:12.166 14856-14856/com.bhaskar.myapplication W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)谢谢你
【问题讨论】:
标签: android kotlin gson android-jetpack-compose