Быстрое декодирование JSON с ключом, начиная с номера - PullRequest
0 голосов
/ 26 июня 2019

У меня есть json в следующем формате:

let json = """
{
    "stuff": {
        "1": "one",
        "2": "two",
        "4": "four"
    }
}

вопрос в том, как мне заставить мои

struct Stuff: Codable, Equatable {
    let 1: String
    let 2: String
    let 4: String
}

компилироваться и работать?

я использую для вызоваэто с ниже, и это работает отлично для всего, но если пусть имя начинается с числа, оно, очевидно, не скомпилируется

let obj = try? JSONDecoder().decode(T.self, from: data)

Ответы [ 2 ]

1 голос
/ 26 июня 2019

Вы не можете.Переменная не должна начинаться с цифры.Неизменное правило.

Но вы можете сопоставить имена с CodingKeys

struct Stuff: Codable, Equatable {
    let one, two, four: String

    private enum CodingKeys : String, CodingKey { case one = "1",  two = "2", four = "4"}
}
0 голосов
/ 26 июня 2019

Вы не можете. RFC 7159 Стандарт для JSON требует, чтобы ключ объекта был строкой.

object = begin-object [ member *( value-separator member ) ]
           end-object

member = string name-separator value
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...