SwiftyJSON循环遍历JSON对象数组

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

上面的是一个由JSON对象填充的JSON数组。我不知道如何使用SwiftyJSON解析它。


JSON 不使用排版引号 “ ... ” :) - Martin R
请假设这些是普通引用。 - gwhiz
4个回答

12

SwiftyJSON页面示例,根据您的数据进行调整:

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

为什么不能只是在json中使用“for object in json”?“for (index, object) in json”有什么不同之处,使其能够正常工作?我以前从未见过这种用法。谢谢。 - vikzilla
你可以使用下划线 _ 代替索引,但在某些情况下,索引可能会有所帮助,特别是当你需要知道自己在数组中的位置时。或者你可以在字典中使用键和对象 key, object。 - Stu P.

3
假设[{"id":"1", "name":"Kakkad", "cont":"9714494770"},{"id":"2", "name":"Ashish", "cont":"9714494770"}]被赋值给名为jsonData的属性。 let sampleJSON = JSON(data: jsonData) let sampleArray = sampleJSON.array,sampleArray是一个可选的JSON对象数组。 let firstDict = sampleArray[0],firstDict是一个可选的JSON对象字典。 let name = firstDict["name"] 是一个可选的JSON对象。 let virtName = name.string 是一个可选的字符串(在本例中是"Kakkad")。 let realName = name.stringValue,realName是一个字符串或空字符串。
您也可以使用:let longName = sampleJSON[0]["name"].stringValue 初始化JSON对象后,所有元素都是JSON类型,直到将它们转换为Swift类型。
  • .string 可选的(字符串或null)
  • .stringValue 字符串或""空字符串
  • .dict 可选的([String:AnyObject]或null)
  • .dictValue ([String:AnyObject]或String:AnyObject)

0

对于Swift4,我已经更新了Moritz答案中的代码

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

0

Swift 3或4 类似这样的代码:

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

如果你在代码中使用index,可以将其替换为_。如果你不使用一个变量,最好使用_(XCode也会发出警告)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接