Ios 如何使用SwiftyJSON读取数组中的JSON数据?
我刚刚被介绍在iOS应用程序中使用JSON数据。我使用了一个服务来解析网站上的JSON数据,我想对这些数据进行解码,以便在Ios 如何使用SwiftyJSON读取数组中的JSON数据?,ios,json,uitableview,swifty-json,Ios,Json,Uitableview,Swifty Json,我刚刚被介绍在iOS应用程序中使用JSON数据。我使用了一个服务来解析网站上的JSON数据,我想对这些数据进行解码,以便在UITableView中显示给我的用户。我的JSON数据如下所示: { "success": true, "outputScenario": "Default", "data": { "collection": [ { "teamName": "Gulf Coast Monarchs, FL", "teamW":
UITableView
中显示给我的用户。我的JSON数据如下所示:
{
"success": true,
"outputScenario": "Default",
"data": {
"collection": [
{
"teamName": "Gulf Coast Monarchs, FL",
"teamW": "10",
"teamL": "0",
"teamT": "0",
"teamPct": "1.000",
"teamGB": "-",
"teamGP": "10",
"teamRA": "10",
"teamDivision": "10-0-0"
},
{
"teamName": "Ohio Nationals, OH",
"teamW": "9",
"teamL": "1",
"teamT": "0",
"teamPct": ".900",
"teamGB": "1.0",
"teamGP": "10",
"teamRA": "20",
"teamDivision": "9-1-0"
}, {
"teamName": "Mount Kisco Chiefs, NY",
"teamW": "0",
"teamL": "8",
"teamT": "0",
"teamPct": ".000",
"teamGB": "8.0",
"teamGP": "8",
"teamRA": "108",
"teamDivision": "0-8-0"
}
{
"teamName": "Mount Kisco Chiefs, NY",
"teamW": "0",
"teamL": "8",
"teamT": "0",
"teamPct": ".000",
"teamGB": "8.0",
"teamGP": "8",
"teamRA": "108",
"teamDivision": "0-8-0"
}
]
},
请记住,我已经删去了JSON中提供的大量数据,因此很容易查看
如果可能的话,我想使用SwiftyJSON对这些数据进行解码,这样我就可以在UITableView
中向我的用户显示这些数据。目前,UITableView将在UITableView.textLabel.text中显示团队名称
,在UITableView.detailTextLabel.text中显示teamW
和teamL
。如何使用SwiftyJSON解码这些数据?我正在努力弄清楚这种结构是如何被解码的。我想使用我创建的模型:
struct Standing: Decodable {
var teamName: String
var teamW: Int
var teamL: Int
var teamT: Int
var teamPct: Int
teamGB: Int
teamGP: Int
teamRA: Int
teamDivision: String
}
如果您使用的是Decodable
,则根本不需要使用SwiftyJSON
,一切都内置于Swift本身
将其用作模型结构:
struct Standing: Codable {
let success: Bool
let outputScenario: String
let data: DataClass
}
struct DataClass: Codable {
let collection: [Collection]
}
struct Collection: Codable {
let teamName, teamW, teamL, teamT: String
let teamPct, teamGB, teamGP, teamRA: String
let teamDivision: String
}
然后像这样解析它:
do {
let standing = try JSONDecoder().decode(Standing.self, from: data)
} catch {
print(error)
}
既然您已经采用了可解码的
,为什么要使用SwiftyJSON
结构中的类型通常是错误的,因为所有值都是String
。父对象还需要另外两个结构
struct Root: Decodable {
let success : Bool
let outputScenario : String
let data : TeamData
}
struct TeamData: Decodable {
let collection : [Standing]
}
struct Standing: Decodable {
let teamName, teamW, teamL, teamT: String
let teamPct, teamGB, teamGP, teamRA: String
let teamDivision: String
}
解码数据时,Standing
数组位于变量standings
中
do {
let result = try JSONDecoder().decode(Root.self, from: data)
let standings = result.data.collection
} catch {
print(error)
}
好的,在做了这些重大的改变之后,一切都很顺利。我想我很难理解JSON的格式,而且我的实现很差。谢谢你的帮助,谢谢你的回复。随着瓦迪安的回答,我能够正确地构造我的代码。现在一切正常。