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

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

4

4 回答 4

12

SwiftyJSON页面中的示例,适用于您的数据:

let json = JSON(data: dataFromNetworking)
for (index, object) in json {
    let name = object["name"].stringValue
    println(name)
}
于 2015-04-20T20:27:53.067 回答
3

假设[{"id":"1", "name":"Kakkad", "cont":"9714494770"},{"id":"2", "name":"Ashish", "cont":"9714494770"}]分配给一个名为 jsonData 的属性。

let sampleJSON = JSON(data: jsonData)

let sampleArray = sampleJSON.arraysampleArray 是 JSON 对象的可选数组。

let firstDict = sampleArray[0]firstDict 是一个可选的 JSON 字典。

let name = firstDict["name"]是一个可选的 JSON 对象

let virtName = name.string是一个可选字符串(在本例中为“Kakkad”)。

let realName = name.stringValuerealName 是字符串或空字符串。

您还可以使用: let longName = sampleJSON[0]["name"].stringValue

使用数据初始化 JSON 对象后,所有元素都是 JSON 类型,直到您将它们转换为 swift 类型。

  • .string 可选(字符串或空)
  • .stringValue 字符串或 "" 空字符串
  • .dict 可选([String: AnyObject] 或 null)
  • .dictValue([字符串:AnyObject] 或字符串:AnyObject)
于 2015-04-20T20:56:41.683 回答
0

Swift 3 或 4代码如下:

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

如果您在代码中的任何位置使用 is,则可以使用index代替_ 如果不使用变量,最好放 _ (XCode 也会给出警告)。

于 2018-08-02T22:49:52.577 回答
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)
                    }
                }
            }
于 2018-03-26T00:33:32.720 回答