You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gson与Ktor生产构建时JSON字段名被转成字母如何解决?

解决Release版本Gson序列化字段名被混淆为单字母的问题

这是因为Release编译开启了代码混淆(R8/ProGuard),数据类的字段名被压缩成短名称,导致Gson序列化时无法使用原本的变量名。以下是两种解决方式:

方法一:给字段添加@SerializedName注解

直接在数据类的字段上通过@SerializedName指定序列化后的字段名,无论是否混淆,Gson都会使用注解中定义的名称:

data class YourDataClass(
    @SerializedName("expected_field_name") val actualFieldName: String,
    @SerializedName("another_field") val anotherField: Int
)

方法二:配置混淆规则保留数据类字段

如果不想给每个字段加注解,可以在项目的proguard-rules.pro文件中添加规则,保留数据类的字段不被混淆:

# 保留你的数据类所在包下的所有类及其字段
-keep class com.your.app.package.models.** { *; }

# 保留Gson相关的必要属性和类,避免Gson自身被混淆
-keepattributes Signature
-keepattributes *Annotation*
-keep class com.google.gson.** { *; }
-keep class sun.misc.Unsafe { *; }

同时确保Module级别的build.gradle中,Release构建类型正确启用混淆并加载规则:

android {
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

两种方式各有优势:注解方式更灵活(支持自定义字段名),混淆规则方式更适合批量处理大量数据类。

内容的提问来源于stack exchange,提问作者AntG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 17:01:09