使用 SwiftyJSON 将 JSON 数组反序列化为 Swift 对象
Deserialize JSON array to Swift objects using SwiftyJSON
鉴于此 JSON:
{
"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)
}
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]
}
我将从每个字典创建一个结构并将结构存储在一个数组中。
结构:
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)
}
现在你有一个 Swift 结构数组(当然可以是 类)反映了 JSON 内容:
for object in objects {
print("ID: \(object.id), NAME: \(object.name), RATING: \(object.rating)")
}
打印:
ID: 1, NAME: Bananas, RATING: 4
ID: 2, NAME: Tacos, RATING: 3
ID: 3, NAME: Apple, RATING: 5
请注意,我使用的是 SwiftyJSON、.intValue
和 .stringValue
的非可选吸气剂,因为我假设这些字段将始终存在.如果你认为可能有 nils,你应该使结构属性可选并使用可选的 getters .int
和 .string
.
鉴于此 JSON:
{
"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)
}
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]
}
我将从每个字典创建一个结构并将结构存储在一个数组中。
结构:
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)
}
现在你有一个 Swift 结构数组(当然可以是 类)反映了 JSON 内容:
for object in objects {
print("ID: \(object.id), NAME: \(object.name), RATING: \(object.rating)")
}
打印:
ID: 1, NAME: Bananas, RATING: 4
ID: 2, NAME: Tacos, RATING: 3
ID: 3, NAME: Apple, RATING: 5
请注意,我使用的是 SwiftyJSON、.intValue
和 .stringValue
的非可选吸气剂,因为我假设这些字段将始终存在.如果你认为可能有 nils,你应该使结构属性可选并使用可选的 getters .int
和 .string
.