# SavedStateDecoderKt

Added in 1.3.0

*** ** * ** ***


```
public final class SavedStateDecoderKt
```

<br />

*** ** * ** ***

## Summary

| ### Public methods |
|---|---|
| `static final @https://developer.android.com/reference/androidx/annotation/NonNull T` | `<T extends https://developer.android.com/reference/java/lang/Object.html> https://developer.android.com/reference/androidx/savedstate/serialization/SavedStateDecoderKt#decodeFromSavedStateNullable(androidx.savedstate.SavedState,androidx.savedstate.serialization.SavedStateConfiguration)( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/savedstate/SavedState savedState, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/savedstate/serialization/SavedStateConfiguration configuration )` Decode a serializable object from a `https://developer.android.com/reference/androidx/savedstate/SavedState` with the default deserializer. |
| `static final @https://developer.android.com/reference/androidx/annotation/NonNull T` | `<T extends https://developer.android.com/reference/java/lang/Object.html> https://developer.android.com/reference/androidx/savedstate/serialization/SavedStateDecoderKt#decodeFromSavedStateNullable(kotlinx.serialization.DeserializationStrategy,androidx.savedstate.SavedState,androidx.savedstate.serialization.SavedStateConfiguration)( @https://developer.android.com/reference/androidx/annotation/NonNull https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-deserialization-strategy/index.html<@https://developer.android.com/reference/androidx/annotation/NonNull T> deserializer, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/savedstate/SavedState savedState, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/savedstate/serialization/SavedStateConfiguration configuration )` Decodes and deserializes the given `https://developer.android.com/reference/androidx/savedstate/SavedState` to the value of type `https://developer.android.com/reference/androidx/savedstate/serialization/package-summary#decodeFromSavedState(kotlinx.serialization.DeserializationStrategy,androidx.savedstate.SavedState,androidx.savedstate.serialization.SavedStateConfiguration)` using the given `https://developer.android.com/reference/androidx/savedstate/serialization/package-summary#decodeFromSavedState(kotlinx.serialization.DeserializationStrategy,androidx.savedstate.SavedState,androidx.savedstate.serialization.SavedStateConfiguration)`. |

## Public methods

### decodeFromSavedStateNullable

Artifact: [androidx.savedstate:savedstate](https://developer.android.com/jetpack/androidx/releases/savedstate) [View Source](https://cs.android.com/search?q=file:androidx/savedstate/serialization/SavedStateDecoder.kt+function:decodeFromSavedState)

```
public static final @NonNull T <T extends Object> decodeFromSavedStateNullable(
    @NonNull SavedState savedState,
    @NonNull SavedStateConfiguration configuration
)
```

Decode a serializable object from a `https://developer.android.com/reference/androidx/savedstate/SavedState` with the default deserializer.

**Format not stable:** The internal structure of the given `https://developer.android.com/reference/androidx/savedstate/SavedState` is subject to change in future releases for optimization. While it is guaranteed to be compatible with `https://developer.android.com/reference/androidx/savedstate/serialization/package-summary#encodeToSavedState(kotlin.Any,androidx.savedstate.serialization.SavedStateConfiguration)`, direct manipulation of its encoded format using keys is not recommended.

```kotlin
import androidx.savedstate.serialization.decodeFromSavedState

@Serializable data class User(val id: Int, val name: String)
val user = decodeFromSavedState<User>(userSavedState)
```

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/savedstate/SavedState savedState` | The `https://developer.android.com/reference/androidx/savedstate/SavedState` to decode from. |
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/savedstate/serialization/SavedStateConfiguration configuration` | The `https://developer.android.com/reference/androidx/savedstate/serialization/SavedStateConfiguration` to use. Defaults to `https://developer.android.com/reference/androidx/savedstate/serialization/SavedStateConfiguration#DEFAULT()`. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull T` | The decoded object. |

| Throws |
|---|---|
| `https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-serialization-exception/index.html` | in case of any decoding-specific error. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-argument-exception/index.html` | if the decoded input is not a valid instance of `https://developer.android.com/reference/androidx/savedstate/serialization/package-summary#decodeFromSavedState(androidx.savedstate.SavedState,androidx.savedstate.serialization.SavedStateConfiguration)`. |

| See also |
|---|---|
| `https://developer.android.com/reference/androidx/savedstate/serialization/package-summary#encodeToSavedState(kotlin.Any,androidx.savedstate.serialization.SavedStateConfiguration)` |   |

### decodeFromSavedStateNullable

Artifact: [androidx.savedstate:savedstate](https://developer.android.com/jetpack/androidx/releases/savedstate) [View Source](https://cs.android.com/search?q=file:androidx/savedstate/serialization/SavedStateDecoder.kt+function:decodeFromSavedState)

```
public static final @NonNull T <T extends Object> decodeFromSavedStateNullable(
    @NonNull DeserializationStrategy<@NonNull T> deserializer,
    @NonNull SavedState savedState,
    @NonNull SavedStateConfiguration configuration
)
```

Decodes and deserializes the given `https://developer.android.com/reference/androidx/savedstate/SavedState` to the value of type `https://developer.android.com/reference/androidx/savedstate/serialization/package-summary#decodeFromSavedState(kotlinx.serialization.DeserializationStrategy,androidx.savedstate.SavedState,androidx.savedstate.serialization.SavedStateConfiguration)` using the given `https://developer.android.com/reference/androidx/savedstate/serialization/package-summary#decodeFromSavedState(kotlinx.serialization.DeserializationStrategy,androidx.savedstate.SavedState,androidx.savedstate.serialization.SavedStateConfiguration)`.

**Format not stable:** The internal structure of the given `https://developer.android.com/reference/androidx/savedstate/SavedState` is subject to change in future releases for optimization. While it is guaranteed to be compatible with `https://developer.android.com/reference/androidx/savedstate/serialization/package-summary#decodeFromSavedState(kotlinx.serialization.DeserializationStrategy,androidx.savedstate.SavedState,androidx.savedstate.serialization.SavedStateConfiguration)`, direct manipulation of its encoded format using keys is not recommended.

```kotlin
import androidx.savedstate.serialization.SavedStateConfiguration
import androidx.savedstate.serialization.decodeFromSavedState
import androidx.savedstate.serialization.encodeToSavedState

val config = SavedStateConfiguration {
    serializersModule = SerializersModule {
        polymorphic(Any::class) { subclass(String::class) }
    }
}
val value = "foo"
val encoded =
    encodeToSavedState(
        serializer = PolymorphicSerializer(Any::class),
        value = value,
        configuration = config,
    )
val decoded =
    decodeFromSavedState(
        deserializer = PolymorphicSerializer(Any::class),
        savedState = encoded,
        configuration = config,
    )
```

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-deserialization-strategy/index.html<@https://developer.android.com/reference/androidx/annotation/NonNull T> deserializer` | The deserializer to use. |
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/savedstate/SavedState savedState` | The `https://developer.android.com/reference/androidx/savedstate/SavedState` to decode from. |
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/savedstate/serialization/SavedStateConfiguration configuration` | The `https://developer.android.com/reference/androidx/savedstate/serialization/SavedStateConfiguration` to use. Defaults to `https://developer.android.com/reference/androidx/savedstate/serialization/SavedStateConfiguration#DEFAULT()`. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull T` | The deserialized object. |

| Throws |
|---|---|
| `https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-serialization-exception/index.html` | in case of any decoding-specific error. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-argument-exception/index.html` | if the decoded input is not a valid instance of `https://developer.android.com/reference/androidx/savedstate/serialization/package-summary#decodeFromSavedState(kotlinx.serialization.DeserializationStrategy,androidx.savedstate.SavedState,androidx.savedstate.serialization.SavedStateConfiguration)`. |

| See also |
|---|---|
| `https://developer.android.com/reference/androidx/savedstate/serialization/package-summary#encodeToSavedState(kotlin.Any,androidx.savedstate.serialization.SavedStateConfiguration)` |   |