Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift解码json,密钥以数字开头_Json_Swift - Fatal编程技术网

Swift解码json,密钥以数字开头

Swift解码json,密钥以数字开头,json,swift,Json,Swift,我有一个json,格式如下: let json = """ { "stuff": { "1": "one", "2": "two", "4": "four" } } 问题是我怎样才能使我的 struct Stuff: Codable, Equatable { let 1: String let 2: String let 4: String } 编译和工作 我经常用下面的代码来称呼它,它对任何事情都很好,

我有一个json,格式如下:

let json = """
{
    "stuff": {
        "1": "one",
        "2": "two",
        "4": "four"
    }
}
问题是我怎样才能使我的

struct Stuff: Codable, Equatable {
    let 1: String
    let 2: String
    let 4: String
}
编译和工作

我经常用下面的代码来称呼它,它对任何事情都很好,但如果让name以number开头,它显然无法编译

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

你不能。变量不得以数字字符开头。不变的规则

但是您可以使用
CodingKeys

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

    private enum CodingKeys : String, CodingKey { case one = "1",  two = "2", four = "4"}
}
你不能。JSON标准规定对象键必须是字符串

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

member = string name-separator value

变量名也可以以下划线开头(挑剔)@Sulthan我指定了规则是的,我明白了。但我无法更改外部API:D