如何在使用 Retrofit + Moshi 时为 json 键指定不同的名称

Arp*_*kla 5 android json kotlin moshi retrofit2

我需要使用以下 json 向后端发出 POST 请求:

{
    start_time: 123456789
}
Run Code Online (Sandbox Code Playgroud)

我在 Retrofit 请求中为主体创建了以下数据类:

{
    start_time: 123456789
}
Run Code Online (Sandbox Code Playgroud)

但是当我检查后端时,请求包含该startTime字段而不是start_time. 如何更改此变量的名称以进行 json 序列化?

编辑:我的build.gradle:

implementation "com.squareup.retrofit2:retrofit:2.9.0"
implementation "com.squareup.retrofit2:converter-moshi:2.9.0"
Run Code Online (Sandbox Code Playgroud)

我的api接口:

data class MyRequestBody(
    @Json(name="start_time")
    val startTime: Long
)
Run Code Online (Sandbox Code Playgroud)

改造建造者:

implementation "com.squareup.retrofit2:retrofit:2.9.0"
implementation "com.squareup.retrofit2:converter-moshi:2.9.0"
Run Code Online (Sandbox Code Playgroud)

Moh*_*jeb 2

1-添加这些 moshi 依赖项:

// Retrofit
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-moshi:2.9.0'    
// Moshi
implementation 'com.squareup.moshi:moshi-kotlin:1.13.0'
kapt 'com.squareup.moshi:moshi-kotlin-codegen:1.13.0'
Run Code Online (Sandbox Code Playgroud)

2-将改造生成器更改为:

Retrofit.Builder()
    .baseUrl(BASE_URL)
    .addConverterFactory(MoshiConverterFactory.create(
        Moshi.Builder()
            .addLast(KotlinJsonAdapterFactory())
            .build()
    ))
    .build()
Run Code Online (Sandbox Code Playgroud)

这解决了我的问题。