鉴于此JSON:
{
"id" : 1,
"name" : "Bananas",
"rating" : 4
},
{
"id" : 2,
"name" : "Tacos",
"rating" : 3
},
{
"id" : 3,
"name" : "Apple",
"rating" : 5
}
如何使用SwiftyJSON创建一个Swift对象数组?
答案 0 :(得分:7)
我会从每个字典创建一个结构并将结构存储在一个数组中。
结构:
struct MyObject {
let id: Int
let name: String
let rating: Int
}
用于存储struct实例的数组:
var objects: [MyObject] = []
让SwiftyJSON解析您的JSON数据:
let jsonArray = JSON(data: myData)
创建结构并将它们附加到新数组:
for (index, dict) in jsonArray {
let thisObject = MyObject(id: dict["id"].intValue, name: dict["name"].stringValue, rating: dict["rating"].intValue)
objects.append(thisObject)
}
现在你有一个反映JSON内容的Swift结构数组(当然可以是类):
for object in objects {
print("ID: \(object.id), NAME: \(object.name), RATING: \(object.rating)")
}
打印:
ID:1,NAME:Bananas,RATING:4
ID:2,NAME:Tacos,评分:3
ID:3,NAME:Apple,RATING:5
请注意,我使用了SwiftyJSON的非可选getter,.intValue
和.stringValue
,因为我假设这些字段始终存在。如果您认为可能存在nils,则应将struct属性设为Optional,并使用可选的getter .int
和.string
。
答案 1 :(得分:2)
var jsonObjectArray = JSON(swiftStr).array!
var swiftArray = []
for jsonObject in jsonObjectArray {
var swiftObject = SwiftObject()
swiftObject.propetyName = jsonObject["propertyName"].string!
swiftArry.append(swiftObject)
}
答案 2 :(得分:1)
let jsonString = "[{\"id\" : 1,\"name\" : \"Bananas\",\"rating\" : 4},{\"id\" : 2,\"name\" : \"Tacos\",\"rating\" : 3},{\"id\" : 3,\"name\" : \"Apple\",\"rating\" : 5}]"
if let dataFromString = jsonString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false) {
let json = JSON(data: dataFromString)
let element1 = json[0]
let element2 = json[1]
let element3 = json[2]
}