使用struct将JSON转换为数组

时间:2018-05-19 00:09:33

标签: ios json swift struct

我正在尝试制作一个家庭自动化的IOS应用程序。我正在使用TableViewCell来显示信息。

我的问题是我不知道如何使用struct获取JSON到一个数组,因为我必须考虑结构。

我的JSON是:

[{"namea":"TV","statea":"up_tv"},{"namea":"test","statea":"test"}]

我的代码是:

struct cellData {
let nameLabel : String!
let stateLabel : String!
}

class Main: UITableViewController {

var array = [cellData]()

override func viewDidLoad() {
    array = [cellData(nameLabel: "tv", stateLabel: "up_tv"),
             cellData(nameLabel: "tv", stateLabel: "down_tv")]

}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

    return array.count
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = Bundle.main.loadNibNamed("TableViewCell", owner: self, options: nil)?.first as! TableViewCell

    cell.nameLabel.text = array[indexPath.row].nameLabel
    cell.stateLabal.text = array[indexPath.row].stateLabel
    return cell
}

1 个答案:

答案 0 :(得分:0)

你需要jsonDecoder

struct cellData : Decodable {
   let nameLabel : String
   let stateLabel : String

      enum CodingKeys:String,CodingKey {
        case nameLabel = "namea"
        case stateLabel = "statea"

      }
}

//

let str = """

    [{"namea":"TV","statea":"up_tv"},{"namea":"test","statea":"test"}]

"""

do {
       let cellArr = try JSONDecoder().decode([cellData].self, from: str.data(using:.utf8)!)
       print(cellArr)   //// check this 

} catch {

}

//

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
{
  let cell =  tableView.dequeueReusableCell(withIdentifier: "id") as TableViewCell

}