在swift中解析嵌套的JSON属性

时间:2016-05-06 15:21:26

标签: ios json swift

遇到麻烦可能很小但我的搜索没有任何结果。我有一个json模型如下:

//快速语法,让您了解模型

_engine.Query

我从GET请求到用户获得上述数据模型,它返回上面的所有信息,但是当我尝试解析“中等”信息时,例如“title”& “描述”我没有运气。我在Xcode中得到了这些回复

“对象的价值'AnyObject'尚未解开,你的意思是使用!还是?”

然后当我点击圆形红色Xcode消息来修复它时,它会放置!s和?s到处但是错误仍然存​​在。这是我的解析方法,当我只从“媒介”解析时,它工作得非常好。知道我做错了吗?

解析方法的一部分,我为每个属性得到相同的错误: 由*

指示的所有具有相同错误的行
{user:
  {"name": "",
   "password": "",
   "medium" : {
      {"title":"",
      {"description":""}}}

任何事都没有运气。我不明白为什么它适用于常规JSON,但当我尝试获取嵌套时,Xcode不会接受任何内容。您的所有帮助都表示赞赏。与此同时,这是完整的方法,如果它有助于任何进一步的

// Parse JSON data
            let jsonMedium = jsonResult?["user"] as! [AnyObject] //media where user is
            for jsonMedia in jsonMedium {
                let media = Media()
                *media.title = jsonMedia["medium"]["title"] as! String
                *media.description = jsonMedia["medium"]["description"] as! String
                *media.category = jsonMedia["medium"]["category"] as! String
                *media.image = jsonMedia["medium"]["image"] as! String

                *if let IDer = jsonMedia["medium"]["id"] as? Int{
                        var stringIder = String(IDer)
                        media.identifierString = stringIder

                }

3 个答案:

答案 0 :(得分:1)

?ObjPtr(ThisWorkbook)
 161150920

答案 1 :(得分:0)

也许有帮助

let request : ASIFormDataRequest = ...your request

        if request.responseString() != nil {
            var jsonResponse : Dictionary<String, AnyObject>?
            do{
                jsonResponse = try NSJSONSerialization.JSONObjectWithData(request.responseData(), options: NSJSONReadingOptions.AllowFragments) as? Dictionary<String, AnyObject>

            } catch _ {
                //some error
            }
        }

答案 2 :(得分:0)

固定它!花了一整天深思熟虑和google / youtube / stack / brainstorming和你的帮助,但这是一个改变了整个过程的线路

// Parse JSON data
            let jsonMedium = jsonResult?["user"]!["medium"] as? [AnyObject]
            for jsonMedia in jsonMedium! {
                let media = Media()
                media.title = jsonMedia["title"] as! String
                media.description = jsonMedia["description"] as! String

而不是:

let jsonMedium = jsonResult?["user"] as! [AnyObject] //media where user is
            for jsonMedia in jsonMedium {
                let media = Media()
                *media.title = jsonMedia["medium"]["title"] as! String
                *media.description = jsonMedia["medium"]["description"] as! String