SwiftyJSON looping through an array of JSON objects

眉间皱痕 提交于 2019-12-05 02:58:42

Example from the SwiftyJSON page, adapted to your data:

let json = JSON(data: dataFromNetworking)
for (index, object) in json {
    let name = object["name"].stringValue
    println(name)
}

Assuming [{"id":"1", "name":"Kakkad", "cont":"9714494770"},{"id":"2", "name":"Ashish", "cont":"9714494770"}] is assigned to a property named jsonData.

let sampleJSON = JSON(data: jsonData)

let sampleArray = sampleJSON.array sampleArray is an optional array of JSON objects.

let firstDict = sampleArray[0] firstDict is an optional JSON dict.

let name = firstDict["name"] is an optional JSON object

let virtName = name.string is a optional string (In this case "Kakkad").

let realName = name.stringValue realName is a string or an empty string.

You could also use: let longName = sampleJSON[0]["name"].stringValue

After you initialize the JSON object with data all of the elements are JSON types until you convert them to a swift type.

  • .string optional (string or null)
  • .stringValue string or "" empty string
  • .dict optional ([String: AnyObject] or null)
  • .dictValue ([String: AnyObject] or String: AnyObject)

For Swift4 I have updated the code from Moritz answer

    if let path : String = Bundle.main.path(forResource: "tiles", ofType: "json") {
                if let data = NSData(contentsOfFile: path) {
                    let optData = try? JSON(data: data as Data)
                    guard let json = optData else {
                        return
                    }
//If it is a JSON array of objects
                    for (_, object) in json {
                        let name = object["name"].stringValue
                        print(name)
                    }
                }
            }

Swift 3 or 4 code like this:

let json = JSON(yourData)
for (_, object) in json {
    let cont = object["cont"].stringValue
    print(cont)
}

You can put index instead of _ if you use is anywhere in your code. If you don't use a variable, it's better to put _ (XCode also gives warnings).

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!