Arrays 使用Swift从NSData解析JSON

Arrays 使用Swift从NSData解析JSON,arrays,json,swift,Arrays,Json,Swift,我想解析数组中的数据,但我不能。如果你有任何建议,请告诉我。这是我的数据样本: [{"ListSequence":1,"StarTime":"15.06.2016 09:00","WorkTime":15,"EndTime":"15.06.2016 09:15","Appointment":"","CustomerId":"12345","Name":"","Address":"bla bla"}, {"ListSequence":2,"StarTime":"15.06.2016 09:20",

我想解析数组中的数据,但我不能。如果你有任何建议,请告诉我。这是我的数据样本:

[{"ListSequence":1,"StarTime":"15.06.2016 09:00","WorkTime":15,"EndTime":"15.06.2016 09:15","Appointment":"","CustomerId":"12345","Name":"","Address":"bla bla"}, {"ListSequence":2,"StarTime":"15.06.2016 09:20","WorkTime":15,"EndTime":"15.06.2016 09:35","Appointment":"","CustomerId":"54321","Name":"","Address":"bla bla"}]
这是我的职责:

func parserJSON(data: NSData){
    var names = [String]()
    do {
        if let ipString = NSString(data:data, encoding: NSUTF8StringEncoding) {
            let jsonDictionary = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers) as! NSDictionary

            if let sequences = jsonDictionary["ListSequence"] as? [[String: AnyObject]] {
                for sequence in sequences {
                    if let name = jsonDictionary["Name"] as? String{
                        names.append(name)
                    }
                }
            }
        }
    } catch {
        ///alert
    }
}

像这样更改代码。从API获得的是数组而不是字典。这样的变化也是如此

func parserJSON(data: NSData){
    var names = [String]()
    do {
        if let ipString = NSString(data:data, encoding: NSUTF8StringEncoding) {
             let jsonArray = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers) as! NSArray
             //Now try to iterate Array

        }
    } catch {
        ///alert
    }
}

希望这能对您有所帮助。

您的JSON表示数组,而不是对象。试试这个:

func parserJSON(data: NSData){
    var names = [String]()
    do {
        if let ipString = NSString(data:data, encoding: NSUTF8StringEncoding) {
            let json = try NSJSONSerialization.JSONObjectWithData(data, options: .MutableContainers) as! [AnyObject]
            names = json.map { ($0 as! [String: AnyObject])["Name"] as! String }
        }
    } catch {
        ///alert
        print(error)
    }
}
NSJSONSerialization非常冗长。一切都是一个原子值,即字符串、数组[AnyObject]或字典[String:AnyObject]。如果你想转换,你必须一步一个脚印

将您的数据用作存储阵列


这对您来说可能是最简单的:

extension NSData {
    func fromJSON(options:NSJSONReadingOptions = .AllowFragments) -> AnyObject? {
        return (try? (NSJSONSerialization.JSONObjectWithData(self, options: options)))
    }
}
这样你就可以做到:

data.fromJSON() as? [[String:AnyObject]]

或者,无论您键入什么类型,您的ListSequence是String,响应是ArrayJSON是顶级数组,而不是字典。试试这个,现在可以了。我真的很感谢你的帮助。祝您有个美好的一天。
data.fromJSON() as? [[String:AnyObject]]