Ios 如何使用SwiftyJSON读取数组中的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":

我刚刚被介绍在iOS应用程序中使用JSON数据。我使用了一个服务来解析网站上的JSON数据,我想对这些数据进行解码,以便在
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的格式,而且我的实现很差。谢谢你的帮助,谢谢你的回复。随着瓦迪安的回答,我能够正确地构造我的代码。现在一切正常。