SwiftyJSON looping through an array of JSON objects

随声附和 提交于 2019-12-06 23:32:18

问题


[
    {
        "cont": 9714494770,
        "id": "1",
        "name": "Kakkad"
    },
    {
        "cont": 9714494770,
        "id": "2",
        "name": "Ashish"
    }
]

The one above is a json array filled with JSON objects. I don't know how to parse through this with SwiftyJSON


回答1:


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



回答2:


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)



回答3:


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



回答4:


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



来源:https://stackoverflow.com/questions/29757540/swiftyjson-looping-through-an-array-of-json-objects

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