我刚刚开始快速编写代码,当时我可以从JSON中获取单个值,但似乎无法通过遍历数组来从中获取所有值。
所以我的问题是如何获取所有值并将其视为float或string。

这是我的代码:

 let url = URL(string: "http://api.fixer.io/latest")

    let task = URLSession.shared.dataTask(with: url!) { (data, response, error) in
        if error != nil
        {
            print ("ERROR")
        }
        else
        {
            if let content = data
            {
                do
                {
                    //Array
                    let myJson = try JSONSerialization.jsonObject(with: content, options: JSONSerialization.ReadingOptions.mutableContainers) as AnyObject
                    //print(myJson)

                    for items in myJson [AnyObject] {
                        print(items)
                    }

                    //here is the single value part, it looks for the rates then it puts it in label.

                    if let  rates = myJson["rates"] as? NSDictionary{


                        if let currency = rates["AUD"]{


                        print(currency);

                       self.label.text=String(describing: currency)


                        }





                    }

                }

                catch
                {


                }
            }
        }
    }
    task.resume()

最佳答案

我强烈建议您使用SwiftyJSON处理JSON。它非常容易学习和使用。

首先,您应该通过CocoaPods(或您喜欢的任何其他方式)安装SwiftyJSON。那么您可以像下面这样简单地编写代码:

let url = URL(string: "http://api.fixer.io/latest")

    let task = URLSession.shared.dataTask(with: url!) { (data, response, error) in
        if error != nil
        {
            print ("ERROR")
        }
        else
        {
            if let content = data
            {

                // Initialization
                let myJson = JSON(data: content)

                // Getting a string using a path to the element
                self.label.text = myJson["rates"]["AUD"].stringValue

                // Loop test
                for (key,value):(String, JSON) in myJson["rates"] {
                    print("key is :\(key), Value:\(value.floatValue)")
                }
            }
        }
    }
    task.resume()

08-04 23:23