swift-extras / swift-extras-json

JSON encoding and decoding without the use of Foundation in pure Swift.
Apache License 2.0
348 stars 15 forks source link

JSONEncoder hasn't implemented nestedContainer/nestedUnkeyedContainer #19

Closed adam-fowler closed 4 years ago

adam-fowler commented 4 years ago

The following code produces a Fatal error: unimplemented error when container.nestedContainer is called. Looking at the code I can see also nestedUnkeyedContainer isn't implemented.

import PureSwiftJSONCoding // fabianfett/pure-swift-json

struct Object: Encodable {
    let firstName: String
    let surname: String

    init(firstName: String, surname: String) {
        self.firstName = firstName
        self.surname = surname
    }

    func encode(to encoder: Encoder) throws {
        var container = encoder.container(keyedBy: CodingKeys.self)
        var nameContainer = container.nestedContainer(keyedBy: NameCodingKeys.self, forKey: .name)
        try nameContainer.encode(firstName, forKey: .firstName)
        try nameContainer.encode(surname, forKey: .surname)
    }

    private enum CodingKeys: String, CodingKey {
        case name = "name"
    }

    private enum NameCodingKeys: String, CodingKey {
        case firstName = "firstName"
        case surname = "surname"
    }
}
let object = Object(firstName: "Adam", surname: "Fowler")
let json = try JSONEncoder().encode(object)