# DeepLinkSerializer

Artifact: [androidx.navigation3:navigation3-runtime](https://developer.android.com/jetpack/androidx/releases/navigation3) [View Source](https://cs.android.com/search?q=file:androidx/navigation3/runtime/deeplink/DeepLinkSerializer.kt+class:androidx.navigation3.runtime.deeplink.DeepLinkSerializer) Added in [1.2.0](https://developer.android.com/jetpack/androidx/releases/navigation3#1.2.0) Common/AllAndroid/JVM
- Cmn

  ```
  abstract class DeepLinkSerializer<T : Any> : KSerializer<T>
  ```

*** ** * ** ***

A `https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-k-serializer/index.html` abstract implementation that encodes and decodes `https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/deeplink/DeepLinkSerializer` as a String.

This serializer can be used to serialize non-primitive arguments in navigation keys that are used for deep linking.

Compatible with `https://developer.android.com/reference/kotlin/androidx/compose/runtime/saveable/rememberSerializable.composable#rememberSerializable(kotlin.Array,androidx.savedstate.serialization.SavedStateConfiguration,kotlin.Function0)`, meaning this KSerializer can be used on navigation keys that are saved/restored via `https://developer.android.com/reference/kotlin/androidx/compose/runtime/saveable/rememberSerializable.composable#rememberSerializable(kotlin.Array,androidx.savedstate.serialization.SavedStateConfiguration,kotlin.Function0)` or `https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/rememberNavBackStack.composable#rememberNavBackStack(androidx.savedstate.serialization.SavedStateConfiguration,kotlin.Array)`

```kotlin
import androidx.navigation3.runtime.deeplink.DeepLinkRequest
import androidx.navigation3.runtime.deeplink.DeepLinkUri
import androidx.navigation3.runtime.deeplink.UriDeepLinkMatcher

val matcher =
    UriDeepLinkMatcher(
        uriPattern =
            DeepLinkUri("http://www.nav3example.com/products?product={product}&count={count}"),
        serializer = serializer<ProductInventoryKey>(),
    )

val request =
    DeepLinkRequest(
        uri = DeepLinkUri("http://www.nav3example.com/products?product=123-productA&count=12")
    )
val startKey = matcher.match(request)?.key ?: HomeKey
```

## Summary

| ### Public constructors |
|---|---|
| `<T : https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html> https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/deeplink/DeepLinkSerializer#DeepLinkSerializer()()` | Cmn |

| ### Public functions |
|---|---|---|
| `final T` | `https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/deeplink/DeepLinkSerializer#deserialize(kotlinx.serialization.encoding.Decoder)(decoder: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization.encoding/-decoder/index.html)` Decodes the string with the given `https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/deeplink/DeepLinkSerializer#deserialize(kotlinx.serialization.encoding.Decoder)` into a `https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/deeplink/DeepLinkSerializer` . | Cmn |
| `abstract T` | `https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/deeplink/DeepLinkSerializer#deserialize(kotlin.String)(value: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)` Decode the given `https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/deeplink/DeepLinkSerializer#deserialize(kotlin.String)` as a `https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/deeplink/DeepLinkSerializer` | Cmn |
| `abstract https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html` | `https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/deeplink/DeepLinkSerializer#serialize(kotlin.Any)(value: T)` Encode the given `https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/deeplink/DeepLinkSerializer#serialize(kotlin.Any)` as a `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html` | Cmn |
| `final https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/deeplink/DeepLinkSerializer#serialize(kotlinx.serialization.encoding.Encoder,kotlin.Any)(encoder: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization.encoding/-encoder/index.html, value: T)` Encode the given `https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/deeplink/DeepLinkSerializer#serialize(kotlinx.serialization.encoding.Encoder,kotlin.Any)` as a `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html` with the given `https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/deeplink/DeepLinkSerializer#serialize(kotlinx.serialization.encoding.Encoder,kotlin.Any)`. | Cmn |

| ### Public properties |
|---|---|---|
| `final https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization.descriptors/-serial-descriptor/index.html` | `https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/deeplink/DeepLinkSerializer#descriptor()` | Cmn |
| `abstract https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html` | `https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/deeplink/DeepLinkSerializer#serialName()` The unique serial name that identifies the serializable class `https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/deeplink/DeepLinkSerializer` | Cmn |

## Public constructors

### DeepLinkSerializer

Cmn

```
<T : Any> DeepLinkSerializer()
```

## Public functions

### deserialize

Cmn Added in [1.2.0](https://developer.android.com/jetpack/androidx/releases/navigation3#1.2.0)

```
final fun deserialize(decoder: Decoder): T
```

Decodes the string with the given `https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/deeplink/DeepLinkSerializer#deserialize(kotlinx.serialization.encoding.Decoder)` into a `https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/deeplink/DeepLinkSerializer` .

### deserialize

Cmn Added in [1.2.0](https://developer.android.com/jetpack/androidx/releases/navigation3#1.2.0)

```
abstract fun deserialize(value: String): T
```

Decode the given `https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/deeplink/DeepLinkSerializer#deserialize(kotlin.String)` as a `https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/deeplink/DeepLinkSerializer`

In general, the output of this function will be used as the input of `https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/deeplink/DeepLinkSerializer#serialize(kotlinx.serialization.encoding.Encoder,kotlin.Any)`, so their input/output should be compatible.

### serialize

Cmn Added in [1.2.0](https://developer.android.com/jetpack/androidx/releases/navigation3#1.2.0)

```
abstract fun serialize(value: T): String
```

Encode the given `https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/deeplink/DeepLinkSerializer#serialize(kotlin.Any)` as a `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html`

In general, the output of this function will be used as the input of `https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/deeplink/DeepLinkSerializer#deserialize(kotlinx.serialization.encoding.Decoder)`, so their input/output should be compatible.

### serialize

Cmn Added in [1.2.0](https://developer.android.com/jetpack/androidx/releases/navigation3#1.2.0)

```
final fun serialize(encoder: Encoder, value: T): Unit
```

Encode the given `https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/deeplink/DeepLinkSerializer#serialize(kotlinx.serialization.encoding.Encoder,kotlin.Any)` as a `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html` with the given `https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/deeplink/DeepLinkSerializer#serialize(kotlinx.serialization.encoding.Encoder,kotlin.Any)`.

## Public properties

### descriptor

Cmn Added in [1.2.0](https://developer.android.com/jetpack/androidx/releases/navigation3#1.2.0)

```
final val descriptor: SerialDescriptor
```

### serialName

Cmn Added in [1.2.0](https://developer.android.com/jetpack/androidx/releases/navigation3#1.2.0)

```
abstract val serialName: String
```

The unique serial name that identifies the serializable class `https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/deeplink/DeepLinkSerializer`