在Kotlinx.serialization中,什么是Gson.fromJson()的等价物?

62o28rlo  于 2022-11-06  发布在  Kotlin
关注(0)|答案(1)|浏览(150)

我想从Gson移动到kotlinx.serialization,这个和kotlinx.serialization相等多少?

private fun parseError(response: Response<*>?) {
      val error = gsonConverter(response?.errorBody()?.charStream())
      // Entire code
      // ....

}

private fun gsonConverter(charStream: Reader?): ErrorResponse {
            return Gson().fromJson(
                charStream, ErrorResponse::class.java
            )
        }
vohkndzv

vohkndzv1#

虽然不完全等同,但是你可以直接使用响应中的字节流。你仍然需要处理空响应/主体的情况,因为decodeFromInputStream不接受可空类型:

private fun parseError(response: Response<*>?) {
    val error = gsonConverter(response?.errorBody()?.byteStream())
    // Entire code
    // ....

}

private fun gsonConverter(stream: InputStream?): ErrorResponse {
    return stream?.let { 
            Json.decodeFromStream<ErrorResponse>(it) 
    } ?: // A default ErrorResponse for example
}

相关问题