# SavedStateEncoderKt

Added in 1.3.0

*** ** * ** ***


```
public final class SavedStateEncoderKt
```

<br />

*** ** * ** ***

## Summary

| ### Public methods |
|---|---|
| `static final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/savedstate/SavedState` | `<T extends https://developer.android.com/reference/java/lang/Object.html> https://developer.android.com/reference/androidx/savedstate/serialization/SavedStateEncoderKt#encodeToSavedStateNullable(kotlin.Any,androidx.savedstate.serialization.SavedStateConfiguration)( @https://developer.android.com/reference/androidx/annotation/NonNull T value, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/savedstate/serialization/SavedStateConfiguration configuration )` Serializes the `https://developer.android.com/reference/androidx/savedstate/serialization/package-summary#encodeToSavedState(kotlin.Any,androidx.savedstate.serialization.SavedStateConfiguration)` of type `https://developer.android.com/reference/androidx/savedstate/serialization/package-summary#encodeToSavedState(kotlin.Any,androidx.savedstate.serialization.SavedStateConfiguration)` into an equivalent `https://developer.android.com/reference/androidx/savedstate/SavedState` using `https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-k-serializer/index.html` retrieved from the reified type parameter. |
| `static final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/savedstate/SavedState` | `<T extends https://developer.android.com/reference/java/lang/Object.html> https://developer.android.com/reference/androidx/savedstate/serialization/SavedStateEncoderKt#encodeToSavedStateNullable(kotlinx.serialization.SerializationStrategy,kotlin.Any,androidx.savedstate.serialization.SavedStateConfiguration)( @https://developer.android.com/reference/androidx/annotation/NonNull https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-serialization-strategy/index.html<@https://developer.android.com/reference/androidx/annotation/NonNull T> serializer, @https://developer.android.com/reference/androidx/annotation/NonNull T value, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/savedstate/serialization/SavedStateConfiguration configuration )` Serializes and encodes the given `https://developer.android.com/reference/androidx/savedstate/serialization/package-summary#encodeToSavedState(kotlinx.serialization.SerializationStrategy,kotlin.Any,androidx.savedstate.serialization.SavedStateConfiguration)` to `https://developer.android.com/reference/androidx/savedstate/SavedState` using the given `https://developer.android.com/reference/androidx/savedstate/serialization/package-summary#encodeToSavedState(kotlinx.serialization.SerializationStrategy,kotlin.Any,androidx.savedstate.serialization.SavedStateConfiguration)`. |

## Public methods

### encodeToSavedStateNullable

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

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

Serializes the `https://developer.android.com/reference/androidx/savedstate/serialization/package-summary#encodeToSavedState(kotlin.Any,androidx.savedstate.serialization.SavedStateConfiguration)` of type `https://developer.android.com/reference/androidx/savedstate/serialization/package-summary#encodeToSavedState(kotlin.Any,androidx.savedstate.serialization.SavedStateConfiguration)` into an equivalent `https://developer.android.com/reference/androidx/savedstate/SavedState` using `https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-k-serializer/index.html` retrieved from the reified type parameter.

**Format not stable:** The internal structure of the returned `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(androidx.savedstate.SavedState,androidx.savedstate.serialization.SavedStateConfiguration)`, direct manipulation of its encoded format using keys is not recommended.

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

@Serializable data class User(val id: Int, val name: String)
val user = User(123, "foo")
val savedState = encodeToSavedState(user)
```

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull T value` | The serializable object to encode. |
| `@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 https://developer.android.com/reference/androidx/savedstate/SavedState` | The encoded `https://developer.android.com/reference/androidx/savedstate/SavedState`. |

| Throws |
|---|---|
| `https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-serialization-exception/index.html` | in case of any encoding-specific error. |

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

### encodeToSavedStateNullable

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

```
public static final @NonNull SavedState <T extends Object> encodeToSavedStateNullable(
    @NonNull SerializationStrategy<@NonNull T> serializer,
    @NonNull T value,
    @NonNull SavedStateConfiguration configuration
)
```

Serializes and encodes the given `https://developer.android.com/reference/androidx/savedstate/serialization/package-summary#encodeToSavedState(kotlinx.serialization.SerializationStrategy,kotlin.Any,androidx.savedstate.serialization.SavedStateConfiguration)` to `https://developer.android.com/reference/androidx/savedstate/SavedState` using the given `https://developer.android.com/reference/androidx/savedstate/serialization/package-summary#encodeToSavedState(kotlinx.serialization.SerializationStrategy,kotlin.Any,androidx.savedstate.serialization.SavedStateConfiguration)`.

**Format not stable:** The internal structure of the returned `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(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.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,
    )
```

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-serialization-strategy/index.html<@https://developer.android.com/reference/androidx/annotation/NonNull T> serializer` | The serializer to use. |
| `@https://developer.android.com/reference/androidx/annotation/NonNull T value` | The serializable object to encode. |
| `@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 https://developer.android.com/reference/androidx/savedstate/SavedState` | The encoded `https://developer.android.com/reference/androidx/savedstate/SavedState`. |

| Throws |
|---|---|
| `https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-serialization-exception/index.html` | in case of any encoding-specific error. |

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