尝试使用swiftyJSON在swift中解析JSON

时间:2016-01-29 19:32:27

标签: ios json swift parsing

问题是我无法使用我认为使用swiftyJSON解析JSON文件的正确代码来填充数组。

我不确定发送请求的过程是否正确。

JSON格式:这应该简化为它真正代表的内容:带有“字符串”键和字典数组值的字典。然后是一个字符串值的字符串键。然后是一个字符串,其值为我需要的字符串。

 { 
    "string1" : [
       { "string2" : {
            "string3" : "DataINeed" 
          }
        }
     ]
  }

我的代码

func downloadSecondJSONData(completed: DownloadComplete)
{

    let API_ServerKey = "My API Key"
    let URL_Search = "URL Address"

    let urlString = "\(URL_Search)"
    let url = NSURL(string: urlString)!

    Alamofire.request(.GET,url).responseJSON { (response) -> Void in
        switch response.result
        {
        case .Success:
            if let value = response.result.value
            {
                let json = JSON(value)
                if let data = json["string1"]["string2"]["string3"].string
                {
                    self.dataArray.append(data)
                }

            }
        case .Failure(let error):
            print(error)
        }
        completed()
    }

}

func printData()
{
    print(self.dataArray.count)

}

我如何尝试调用方法

downloadFirstJSONData { () -> () in
        self.randomMethod() //data i use with the downloadFirstJSONData is required to use in the downloadSecondJSONData

        self.downloadSecondJSONData({ () -> () in
            self.printData() //check if data has been stored
        })

    }

1 个答案:

答案 0 :(得分:1)

看起来你没有在第一本字典后访问数组。

我想访问第一个对象的安全方法是:

if let array = json["string1"].array,
    let firstDict = array.first,
    let data = firstDict["string2"]["string3"].string {
        self.dataArray.append(data)
}

但我认为使用SwiftyJSON你也可以改变你所拥有的东西:

if let data = json["string1"][0]["string2"]["string3"].string {
    self.dataArray.append(data)
}