JSONDecoder () работает со значениями Null только в Swift - PullRequest
1 голос
/ 25 апреля 2020

Вот ответ JSON, который у меня есть.

Структура:

struct Welcome: Codable {
    let name: String
    let id: Int
}

JSON:

{
    "name": "Apple",
    "id": 23
}

Это структура JSON, но имя иногда будет нулевым. Итак, я хочу заменить строковое значение по умолчанию вместо нуля. Потому что, чтобы избежать app cra sh в будущем.

{
    "name": null,
    "id": 23
}

Если имя пустое, то я хочу дать значение по умолчанию, например " orange " только для свойства name. Я не хочу ничего делать с id.

Я упоминал, что некоторые ответы SO сбивают с толку и работают со всеми свойствами в init вместо выбранного свойства. Это невозможно для меня, потому что у меня 200 JSON свойств с 50 типами будут нулевыми или будут иметь значение ..

Как я могу это сделать? Заранее спасибо.

1 Ответ

2 голосов
/ 25 апреля 2020

Вы можете (своего рода) добиться этого, создав оболочку:

struct Welcome: Codable {
    private let name: String? // <- This should be optional, otherwise it will fail decoding
    var defaultedName: String { name ?? "Orange" }

    let id: Int
}

Это также гарантирует, что сервер никогда не получит значение default.

...