Swift 4 json解码与顶级数组

时间:2018-08-29 20:36:51

标签: json swift

从我的API获取JSON数据时,我无法正确解码它。

[ 
{ 
"success": "true",
 "message": "testtt" 
} 
]

这是我的API输出的样子。

我们可以看到,我的PHP将这些值输出为顶级数组。

如何在Swift 4中读取此信息?

let json = try JSONDecoder().decode([API].self, from: data)

返回:

  

成功:“ true”,消息:“ testtt”

这是该结构的样子:

struct API: Decodable{
    let success: String
    let message: String

    init(jsont: [String: Any]){
        success = jsont["success"] as? String ?? ""
        message = jsont["message"] as? String ?? ""
    }
}

但是我不知道如何进一步读取这些数据。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

无需创建自定义初始化程序。解码json时,只需使用数组类型[API].self

struct API: Decodable{
    let success: String
    let message: String
}

let dataJSON = Data("""
[
    {
        "success": "true",
        "message": "testtt"
    }
]
""".utf8)

do {
    if let result = try JSONDecoder().decode([API].self, from: dataJSON).first {
        print(result.success)
        print(result.message)
    }
} catch {
    print(error)
}

答案 1 :(得分:0)

如果要访问,请再添加一个类似的结构

struct data: Decodable{
let API: [API]
}

然后,您必须在程序中像上面一样解码

let json = try JSONDecoder().decode(data.self, from: data)

并访问它们

data.API[i].success
data.API[i].message