Fuel - Documentation
  • README
  • Core
    • Fuel
  • Support
    • Android
    • Coroutines
    • AAC LiveData
    • RxJava
    • Reactor
  • Deserialization
    • Forge
    • Gson
    • Jackson
    • Json
    • Kotlinx-Serialization
    • Moshi
  • Legacy
    • v1.x.y
Powered by GitBook
On this page
  • Installation
  • Usage

Was this helpful?

  1. Deserialization

Kotlinx-Serialization

PreviousJsonNextMoshi

Last updated 4 years ago

Was this helpful?

The kotlinx-serialization extension package for Fuel.

Installation

You can and install fuel-kotlinx-serialization with Maven and Gradle. The kotlinx-serialization package has the following dependencies:

  • : 1.0.1

implementation 'com.github.kittinunf.fuel:fuel:<latest-version>'
implementation 'com.github.kittinunf.fuel:fuel-kotlinx-serialization:<latest-version>'

Usage

@Serializable
data class HttpBinUserAgentModel(var userAgent: String = "")

Fuel.get("/user-agent")
    .responseObject<HttpBinUserAgentModel> { _, _, result -> }

This is by default strict and will reject unknown keys, for that you can pass a custom Json instance Json(strictMode = false) or use a built-in alternate like Json.nonstrict

@Serializable
data class HttpBinUserAgentModel(var userAgent: String = "")

Fuel.get("/user-agent")
    .responseObject<HttpBinUserAgentModel>(json = Json.nonstrict) { _, _, result -> }

kotlinx.serialization can not always guess the correct serialzer to use, when generics are involved for example

@Serializable
data class HttpBinUserAgentModel(var userAgent: String = "")

Fuel.get("/list/user-agent")
    .responseObject<HttpBinUserAgentModel>(loader = HttpBinUserAgentModel.serializer().list) { _, _, result -> }

It can be used with coroutines by using kotlinxDeserializerOf() it takes the same json and loader as parameters

@Serializable
data class HttpBinUserAgentModel(var userAgent: String = "")

Fuel.get("/user-agent")
    .awaitResponseObject<HttpBinUserAgentModel>(kotlinxDeserializerOf()) { _, _, result -> }
download
Fuel
KotlinX Serialization