# AnyDecodable

    @frozen
    struct AnyDecodable

    extension AnyDecodable : Copyable, CustomDebugStringConvertible, CustomStringConvertible, Decodable, Equatable, Escapable, Hashable, _AnyDecodable

A type-erased `Decodable` value.

The `AnyDecodable` type forwards decoding responsibilities to an underlying value, hiding its specific underlying type.

You can decode mixed-type values in dictionaries and other collections that require `Decodable` conformance by declaring their contained type to be `AnyDecodable`:

    let json = """
    {
        "boolean": true,
        "integer": 42,
        "double": 3.141592653589793,
        "string": "string",
        "array": [1, 2, 3],
        "nested": {
            "a": "alpha",
            "b": "bravo",
            "c": "charlie"
        },
        "null": null
    }
    """.data(using: .utf8)!

    let decoder = JSONDecoder()
    let dictionary = try! decoder.decode([String: AnyDecodable].self, from: json)

- `value`

  Undocumented

  #### Declaration

  Swift

      let value: Any

- `init(_:)`

  Undocumented

  #### Declaration

  Swift

      init<T>(_ value: T?)

- `==(_:_:)`

  Returns a Boolean value indicating whether two values are equal.

  Equality is the inverse of inequality. For any values `a` and `b`, `a == b` implies that `a != b` is `false`.

  #### Declaration

  Swift

      static func == (lhs: AnyDecodable, rhs: AnyDecodable) -> Bool

  #### Parameters

  `lhs` | A value to compare.
  `rhs` | Another value to compare.

- `description`

  A textual representation of this instance.

  Calling this property directly is discouraged. Instead, convert an instance of any type to a string by using the `String(describing:)` initializer. This initializer works with any type, and uses the custom `description` property for types that conform to `CustomStringConvertible`:

      struct Point: CustomStringConvertible {
          let x: Int, y: Int

          var description: String {
              return "(\(x), \(y))"
          }
      }

      let p = Point(x: 21, y: 30)
      let s = String(describing: p)
      print(s)
      // Prints "(21, 30)"

  The conversion of `p` to a string in the assignment to `s` uses the `Point` type’s `description` property.

  #### Declaration

  Swift

      var description: String { get }

- `debugDescription`

  A textual representation of this instance, suitable for debugging.

  Calling this property directly is discouraged. Instead, convert an instance of any type to a string by using the `String(reflecting:)` initializer. This initializer works with any type, and uses the custom `debugDescription` property for types that conform to `CustomDebugStringConvertible`:

      struct Point: CustomDebugStringConvertible {
          let x: Int, y: Int

          var debugDescription: String {
              return "(\(x), \(y))"
          }
      }

      let p = Point(x: 21, y: 30)
      let s = String(reflecting: p)
      print(s)
      // Prints "(21, 30)"

  The conversion of `p` to a string in the assignment to `s` uses the `Point` type’s `debugDescription` property.

  #### Declaration

  Swift

      var debugDescription: String { get }

- `hash(into:)`

  Hashes the essential components of this value by feeding them into the given hasher.

  Implement this method to conform to the `Hashable` protocol. The components used for hashing must be the same as the components compared in your type’s `==` operator implementation. Call `hasher.combine(_:)` with each of these components.

  Important

  In your implementation of `hash(into:)`, don’t call `finalize()` on the `hasher` instance provided, or replace it with a different instance. Doing so may become a compile-time error in the future.

  #### Declaration

  Swift

      func hash(into hasher: inout Hasher)

© 2026 LicenseSpring. All rights reserved. (Last updated: 2026-02-19)

Generated by jazzy ♪♫ v0.15.3, a Realm project.