首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么"data“不是字典?

为什么"data“不是字典?
EN

Stack Overflow用户
提问于 2016-01-28 18:07:12
回答 1查看 205关注 0票数 0

我试图使用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:

代码语言:javascript
运行
复制
{
"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中调用:

代码语言:javascript
运行
复制
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)
        }
    }
}

有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2016-01-28 19:05:27

抱歉我不认识斯威夫特。但是下面的Objective-C代码将帮助你解决你的问题。

Objective-C :

代码语言:javascript
运行
复制
NSArray *cursussesArray = json[@"cursusses"];

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

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

我在Swift中尝试了一下

代码语言:javascript
运行
复制
let cursussesArray:NSArray = json[“cursusses”]

for singlecursusseDict: NSDictionary in cursussesArray {
    print(singlecursusseDict)
    cursusDict: NSDictionary = json[“cursus”]
    print(cursusDict)
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35058406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档