为什么“数据”不是字典

时间:2016-01-28 10:07:12

标签: ios json swift swifty-json

我正在尝试使用SwiftyJSON解析我从API获取的JSON,它给了我这个错误: Optional(Error Domain=SwiftyJSONErrorDomain Code=901 "Dictionary["data"] failure, It is not an dictionary" UserInfo={NSLocalizedDescription=Dictionary["data"] failure, It is not an dictionary})

JSON:

{
"status": 200,
"error": "",
"data": {
    "cursusses": [
        {
            "cursus": {
                "curId": 1,
                "curNaam": "Lightroom Tips & Tricks",
                "catId": 1,
                "curInfo": "Praktische en korte Tips en Tricks om sneller en prettiger met Lightroom te kunnen werken.",
                "curThumbnail": "lr5-tips-en-tricks.jpg"
            }
        },
        {
            "cursus": {
                "curId": 2,
                "curNaam": "Lightroom Fotobewerkingen",
                "catId": 1,
                "curInfo": "Per video wordt er in deze cursus een nabewerking uitgevoerd op een foto. Een leerzame manier om te zien hoe je in de praktijk foto's kunt nabewerken terwijl je daarnaast veel praktische tips krijgt over het gebruik van Lightroom 5.",
                "curThumbnail": "lr5-bewerkingen.jpg"
            }
        },
        {
            "cursus": {
                "curId": 3,
                "curNaam": "Photoshop Fotobewerkingen",
                "catId": 2,
                "curInfo": "Per video wordt er in deze cursus een nabewerking uitgevoerd op een foto. Een leerzame manier om te zien hoe je in de praktijk foto's kunt nabewerken terwijl je daarnaast veel praktische tips krijgt over het gebruik van Photoshop.",
                "curThumbnail": "photoshop-cc.jpg"
            }
        },
        {
            "cursus": {
                "curId": 4,
                "curNaam": "Basiscursus Lightroom 5",
                "catId": 1,
                "curInfo": "Leer de basisvaardigheden voor het werken met Adobe Photoshop Lightroom. Over het werken met catalogussen, importeren, het selectieproces, de nabewerking en het exporteren.",
                "curThumbnail": "basiscursus-lightroom-5.jpg"
            }
        },
        {
            "cursus": {
                "curId": 5,
                "curNaam": "Photofacts Academy",
                "catId": 3,
                "curInfo": "Toelichting over het gebruiken van de Photofacts Academy website.",
                "curThumbnail": "photofacts-academy.jpg"
            }
        },
        {
            "cursus": {
                "curId": 6,
                "curNaam": "Lightroom 5 web module",
                "catId": 1,
                "curInfo": "Met de Lightroom web module kun je eenvoudig van je foto's een online galerij maken.",
                "curThumbnail": "lr5-web-intro.jpg"
            }
        },
        {
            "cursus": {
                "curId": 7,
                "curNaam": "Photoshop Tips & Tricks",
                "catId": 2,
                "curInfo": "Praktische tips voor het gebruik van Adobe Photoshop CC.",
                "curThumbnail": "photoshop-cc-splash.jpg"
            }
        }
    ]
}
}

我目前正在尝试使用此代码块来解析数据,此函数在Alamofire请求的completionHandler中调用:

func succesCurResponse(let response : Response<String, NSError>) {
    if let value = response.result.value {
        let json = JSON(value)
        let error = json["error"].stringValue
        print(json["data"].error)
        if(error.isEmpty) {
            for(var i = 0; i < json["data"]["cursusses"].count; i++) {
                let name = json["data"]["cursusses"][i]["cursus"]["curNaam"].stringValue
                let id = json["data"]["cursusses"][i]["cursus"]["curId"].intValue
                let catId = json["data"]["cursusses"][i]["cursus"]["catId"].intValue
                let info = json["data"]["cursusses"][i]["cursus"]["curInfo"].stringValue
                let thumbnail = json["data"]["cursusses"][i]["cursus"]["curThumbnail"].stringValue
                let newCur = Cursus()
                newCur.ID = id
                newCur.name = name
                newCur.info = info
                newCur.thumbnail = thumbnail
            }
        }
        else {
            print(error)
        }
    }
}

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

对不起,我不认识斯威夫特。但是以下Objective-C代码将帮助您解决问题。

目标C:

NSArray *cursussesArray = json[@"cursusses"];

for (NSDictionary *singlecursusseDict in cursussesArray) {
    NSLog(@"%@", singlecursusseDict);

    NSDictionary *cursus = singlecursusseDict[@"cursus"];
}

我试试 Swift

let cursussesArray:NSArray = json[“cursusses”]

for singlecursusseDict: NSDictionary in cursussesArray {
    print(singlecursusseDict)
    cursusDict: NSDictionary = json[“cursus”]
    print(cursusDict)
}