How to loop through JSON with SwiftyJSON?

后端 未结 5 1940
一向
一向 2020-12-13 08:59

I have a json that I could parse with SwiftyJSON :

if let title = json[\"items\"][2][\"title\"].string {
     println(\"title : \\(title)\")
}
相关标签:
5条回答
  • 2020-12-13 09:40

    If you want loop through json["items"] array, try:

    for (key, subJson) in json["items"] {
        if let title = subJson["title"].string {
            println(title)
        }
    }
    

    As for the second method, .arrayValue returns non Optional array, you should use .array instead:

    if let items = json["items"].array {
        for item in items {
            if let title = item["title"].string {
                println(title)
            }
        }
    }
    
    0 讨论(0)
  • 2020-12-13 09:40

    you can iterate through the json by:

    for (_,subJson):(String, JSON) in json {
    
       var title = subJson["items"]["2"]["title"].stringValue
    
       print(title)
    
    }
    

    have a look at the documentation of SwiftyJSON. https://github.com/SwiftyJSON/SwiftyJSON go through the Loop section of the documentation

    0 讨论(0)
  • 2020-12-13 09:42

    Please check the README

    //If json is .Dictionary
    for (key: String, subJson: JSON) in json {
       //Do something you want
    }
    
    //If json is .Array
    //The `index` is 0..<json.count's string value
    for (index: String, subJson: JSON) in json {
        //Do something you want
    }
    
    0 讨论(0)
  • 2020-12-13 09:59

    In the for loop, the type of key can't be of the type "title". Since "title" is a string, go for : key:String. And then Inside the Loop you can specifically use "title" when you need it. And also the type ofsubJson has to be JSON.

    And Since a JSON file can be considered as a 2D array, the json["items'].arrayValue will return multiple objects. It is highly advisable to use : if let title = json["items"][2].arrayValue.

    Have a look at : https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Types.html

    0 讨论(0)
  • 2020-12-13 10:03

    I Find it a bit strange explained myself, because actually using:

    for (key: String, subJson: JSON) in json {
       //Do something you want
    }
    

    gives syntax errors (in Swift 2.0 atleast)

    correct was:

    for (key, subJson) in json {
    //Do something you want
    }
    

    Where indeed key is a string and subJson is a JSON object.

    However I like to do it a little bit different, here is an example:

    //jsonResult from API request,JSON result from Alamofire
       if let jsonArray = jsonResult?.array
        {
            //it is an array, each array contains a dictionary
            for item in jsonArray
            {
                if let jsonDict = item.dictionary //jsonDict : [String : JSON]?
                {
                    //loop through all objects in this jsonDictionary
                    let postId = jsonDict!["postId"]!.intValue
                    let text = jsonDict!["text"]!.stringValue
                    //...etc. ...create post object..etc.
                    if(post != nil)
                    {
                        posts.append(post!)
                    }
                }
            }
       }
    
    0 讨论(0)
提交回复
热议问题