Ios 使用SwiftyJSON将JSON数组反序列化为Swift对象

Ios 使用SwiftyJSON将JSON数组反序列化为Swift对象,ios,json,swift,swifty-json,Ios,Json,Swift,Swifty Json,考虑到这一点: { "id" : 1, "name" : "Bananas", "rating" : 4 }, { "id" : 2, "name" : "Tacos", "rating" : 3 }, { "id" : 3, "name" : "Apple", "rating" : 5 } 如何使用SwiftyJSON创建Swift对象数组?我将从每个字典创建一个结构,并将结构存储在数组中 var

考虑到这一点:

  {
    "id" : 1,
    "name" : "Bananas",
    "rating" : 4
  },
  {
    "id" : 2,
    "name" : "Tacos",
    "rating" : 3
  },
  {
    "id" : 3,
    "name" : "Apple",
    "rating" : 5
  }

如何使用SwiftyJSON创建Swift对象数组?

我将从每个字典创建一个结构,并将结构存储在数组中

var jsonObjectArray = JSON(swiftStr).array!
var swiftArray = []
for jsonObject in jsonObjectArray {
   var swiftObject = SwiftObject()
   swiftObject.propetyName = jsonObject["propertyName"].string!
   swiftArry.append(swiftObject)
}
结构:

struct MyObject {
    let id: Int
    let name: String
    let rating: Int
}
存储结构实例的数组:

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,名称:香蕉,等级:4
ID:2,名称:玉米饼,等级:3
ID:3,名称:苹果,评级:5

注意,我使用的是SwiftyJSON的非可选getter,
.intValue
.stringValue
,因为我假设这些字段总是存在的。如果您认为可能存在nils,那么应该将struct属性设置为可选的,并使用可选的getter
.int
.string

for object in objects {
    print("ID: \(object.id), NAME: \(object.name), RATING: \(object.rating)")
}