How to loop through JSON with SwiftyJSON?

Cherif picture Cherif · Feb 6, 2015 · Viewed 35.9k times · Source

I have a json that I could parse with SwiftyJSON :

if let title = json["items"][2]["title"].string {
     println("title : \(title)")
}

Works perfectly.

But I couldn't loop through it. I tried two methods, the first one is

// TUTO :
//If json is .Dictionary
for (key: String, subJson: JSON) in json {
    ...
}
// WHAT I DID :
for (key: "title", subJson: json["items"]) in json {
    ...
}

XCode didn't accept the for loop declaration.

The second method :

// TUTO :
if let appArray = json["feed"]["entry"].arrayValue {
     ...
}
// WHAT I DID :
if let tab = json["items"].arrayValue {
     ...
}

XCode didn't accept the if statement.

What am I doing wrong ?

Answer

rintaro picture rintaro · Feb 6, 2015

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