diff --git a/NonEmptyArray/NonEmptyArray.swift b/NonEmptyArray/NonEmptyArray.swift index d96f8f8..dc7fcad 100644 --- a/NonEmptyArray/NonEmptyArray.swift +++ b/NonEmptyArray/NonEmptyArray.swift @@ -130,6 +130,19 @@ extension NonEmptyArray: CustomDebugStringConvertible { } } +extension NonEmptyArray: Codable where Element : Codable { + + public init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + let array: [Element] = try values.decode([Element].self, forKey: .elements) + self.elements = array + } + + private enum CodingKeys: String, CodingKey { + case elements + } +} + extension NonEmptyArray: Collection { public typealias Index = Int