簡體   English   中英

如何遍歷 JSON 對象並將其視為字符串 - Swift

[英]How to loop through JSON object and view it as string - Swift

我剛剛開始快速編碼,現在我可以從 JSON 中獲取一個值,但我似乎無法通過循環遍歷數組來獲取所有值。 所以我的問題是如何獲取所有值並將其視為浮點數或字符串。

這是我的代碼:

 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()

試試這個代碼:

import UIKit

class ViewController: UIViewController {


override func viewDidLoad() {
    super.viewDidLoad()

    self.getJson()
}

func getJson(){

    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
                {
                        //Dic
                        guard let myJson:[String:Any] = try JSONSerialization.jsonObject(with: content, options: JSONSerialization.ReadingOptions.mutableContainers) as? [String:Any] else {return}
                        //print(myJson)

                        for items in myJson {
                            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()
    }
}

控制台中的結果如下所示:
在此處輸入圖片說明

myJson就是你想要的字典。

我強烈建議你使用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()

試試這個:

    if let currency = rates["AUD"] as? NSDictionary{
         for(key,value) in currency {
            // the key will be your currency format and value would be your currency value
         }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM