Retrofit2 Kotlinx Serialization Converter 使用教程
1. 项目的目录结构及介绍
Retrofit2 Kotlinx Serialization Converter 项目的目录结构如下:
retrofit2-kotlinx-serialization-converter/
├── build.gradle
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── LICENSE
├── README.md
├── settings.gradle
└── src
├── main
│ ├── kotlin
│ │ └── retrofit2
│ │ └── converter
│ │ └── kotlinx
│ │ └── serialization
│ │ ├── KotlinxSerializationConverterFactory.kt
│ │ └── KotlinxSerializationConverter.kt
│ └── resources
└── test
├── kotlin
│ └── retrofit2
│ └── converter
│ └── kotlinx
│ └── serialization
│ └── KotlinxSerializationConverterTest.kt
└── resources
目录结构介绍
build.gradle
: 项目的构建脚本。gradle/wrapper/
: Gradle 包装器文件,确保项目使用特定版本的 Gradle。gradle.properties
: Gradle 属性文件,包含项目的一些配置属性。gradlew
和gradlew.bat
: Gradle 包装器脚本,用于在不同平台上运行 Gradle。LICENSE
: 项目的许可证文件。README.md
: 项目的说明文档。settings.gradle
: Gradle 设置文件,包含项目的模块配置。src/main/kotlin/
: 项目的主要源代码目录。retrofit2/converter/kotlinx/serialization/
: 包含核心转换器类的包。
src/test/kotlin/
: 项目的测试代码目录。
2. 项目的启动文件介绍
项目的启动文件主要是 KotlinxSerializationConverterFactory.kt
,它位于 src/main/kotlin/retrofit2/converter/kotlinx/serialization/
目录下。
KotlinxSerializationConverterFactory.kt
这个文件定义了 KotlinxSerializationConverterFactory
类,它是 Retrofit 的转换器工厂,用于创建 KotlinxSerializationConverter
实例。
package retrofit2.converter.kotlinx.serialization
import kotlinx.serialization.json.Json
import okhttp3.RequestBody
import okhttp3.ResponseBody
import retrofit2.Converter
import retrofit2.Retrofit
import java.lang.reflect.Type
class KotlinxSerializationConverterFactory private constructor(private val json: Json) : Converter.Factory() {
override fun responseBodyConverter(type: Type, annotations: Array<Annotation>, retrofit: Retrofit): Converter<ResponseBody, *>? {
val deserializer = json.serializersModule.serializer(type)
return KotlinxSerializationResponseBodyConverter(json, deserializer)
}
override fun requestBodyConverter(type: Type, parameterAnnotations: Array<Annotation>, methodAnnotations: Array<Annotation>, retrofit: Retrofit): Converter<*, RequestBody>? {
val serializer = json.serializersModule.serializer(type)
return KotlinxSerializationRequestBodyConverter(json, serializer)
}
companion object {
fun create(json: Json = Json): KotlinxSerializationConverterFactory {
return KotlinxSerializationConverterFactory(json)
}
}
}
使用方法
在 Retrofit 构建时,添加 KotlinxSerializationConverterFactory
:
val retrofit = Retrofit.Builder()
.baseUrl("https://api.example.com/")
.addConverterFactory(KotlinxSerializationConverterFactory.create())
.build()
3. 项目的配置文件介绍
项目的配置文件主要是 build.gradle
和 gradle.properties
。
build.gradle
build.gradle
文件包含了项目的依赖管理、插件应用和其他构建配置。
plugins {
id 'org.jetbrains.kotlin.jvm' version '1.5.21'
id '