将JSON数据解析为Swift

时间:2018-05-07 13:48:54

标签: ios json swift

我正在尝试解决我遇到的问题。
我的项目数据库会为每个父母分配一个parentId,这些父母可以为子女提供多个childId
登录后,iOS App应显示与childId关联的所有parentId 我的数据库:

ParentID    ChildID    Name        Class
   10          45       Andrew        4
   10          46       Sarah         8
   11          47       Mark          2
   12          48       Claire        4

如果将parentId插入到PHP表单中,我已设法为此信息创建一个JSON字符串,对于parentId = 10:

[{"childId":45,"name":"Andrew","class":"4"},{"childId":46,"name":"Sarah","class":"8"}]}

但是我不擅长将这些数据解析到我们的iOS应用程序中,以便父母可以看到他们的孩子ID

我的Swift Code到目前为止,显然它没有帮助! (我在我的iOS网络中使用Alamofire)

let URL_CHILD_DEVICE = "http://localhost/test/dashDevice.php"

//the defaultvalues to store data
let defaultValues = UserDefaults.standard

override func viewDidLoad() {
    super.viewDidLoad()
    if let name = defaultValues.string(forKey: "parentId") {
        labelParentId.text = pname
    }
    Alamofire.request(URL_CHILD_DEVICE, method: .get).responseJSON {
        response in
        if response.data != nil {
            let json = JSON(data: response.data!)
            let name = json["name"][0]["class"].string
            if name != nil {
                print(name!)
            }
        }
    }
 }

1 个答案:

答案 0 :(得分:0)

使用Codable协议非常简单(请参阅更多信息herehere)。首先,您需要创建一个表示模型的结构:

struct Person: Codable {
    let parentId: Int  // Or String. Not sure from your data.
    let childId: Int
    let name: String
    let `class`: Int  // This could be an enum.
}

符合Codable将允许编译器生成解析JSON所需的编码/解码方法。剩下的就是尝试在网络响应中解析它。

Alamofire.request(URL_CHILD_DEVICE, method: .get).responseJSON { response in
    if let data = response.data {
        do {
            let person = try JSONDecoder().decode(Person.self, from: data)
            print(person.name)
        } catch {
            // handle errors
        }
    }
}