Swift 为什么反序列化JSON会给每个值0
我正在使用Alamofire进行GET请求-它给我状态代码200,结果很好,但是在我将json反序列化到数组中,然后我尝试将值签名到自定义对象中之后,它总是给我0 json看起来像:Swift 为什么反序列化JSON会给每个值0,swift,swift3,alamofire,Swift,Swift3,Alamofire,我正在使用Alamofire进行GET请求-它给我状态代码200,结果很好,但是在我将json反序列化到数组中,然后我尝试将值签名到自定义对象中之后,它总是给我0 json看起来像: { "user" : [ { "name" : "Jack", "lastname" : Sparrow }, { "name" : "John", "lastname" : Smith } ], "count" : 2
{
"user" : [
{
"name" : "Jack",
"lastname" : Sparrow
},
{
"name" : "John",
"lastname" : Smith
}
],
"count" : 2
}
Alamofire.request(BREADCRAMB_URL, method: .get, parameters: parameters).responseJSON { response in
print("Get default graph request \(response.request!)")
print("Get default graph response \(response.response!)")
guard response.result.value != nil else {
completion(nil, 0)
return
}
var objects: [User] = []
let jsonArray = JSON(data: response.data!)
let count = jsonArray["count"].intValue
print(jsonArray.count)
for(_ , dict) in jsonArray {
print(dict.count)
let thisObject = User.init(name: dict["name"].stringValue, lastname: dict["lastname"].stringValue)
print(thisObject)
objects.append(thisObject)
}
completion(objects, count)
print(objects.count)
for o in objects {
print(o.name)
print(o.lastname)
}
}
然后在我的模型中,我有属性name和lastname,initname:String,lastname:String{self.name=name self.lastname=lastname}
GET请求如下所示:
{
"user" : [
{
"name" : "Jack",
"lastname" : Sparrow
},
{
"name" : "John",
"lastname" : Smith
}
],
"count" : 2
}
Alamofire.request(BREADCRAMB_URL, method: .get, parameters: parameters).responseJSON { response in
print("Get default graph request \(response.request!)")
print("Get default graph response \(response.response!)")
guard response.result.value != nil else {
completion(nil, 0)
return
}
var objects: [User] = []
let jsonArray = JSON(data: response.data!)
let count = jsonArray["count"].intValue
print(jsonArray.count)
for(_ , dict) in jsonArray {
print(dict.count)
let thisObject = User.init(name: dict["name"].stringValue, lastname: dict["lastname"].stringValue)
print(thisObject)
objects.append(thisObject)
}
completion(objects, count)
print(objects.count)
for o in objects {
print(o.name)
print(o.lastname)
}
}
提前谢谢 使用库。它使映射对象变得容易
//内部视图控制器
var objects = [User]()
var serverResponse : ServerResponce
private func downloadMainViewData(){
let params = ["":""]
Alamofire.request(serverUrl, method: .get, parameters: params, encoding: JSONEncoding.default, headers: nil)
.responseObject{ (response: DataResponse<ServerResponse>) in
self.serverResponse = response.result.value
if(self.serverResponse != nil){
self.objects = (response.result.value?.slideShow)!
}
}
}
//类服务器响应一次
import ObjectMapper
class ServerResponse : Mappable{
var slideShow : [Show]?
required init?(map: Map) {
}
func mapping(map: Map) {
objects <- map["user"]
}
}
//类用户
import ObjectMapper
class Uesr: Mappable{
var name : String?
var lastName : String?
required init(map: Map){
}
func mapping(map: Map) {
let transform = TransformOf<Int, String>(fromJSON: { (value: String?) -> Int? in
// transform value from String? to Int?
return Int(value!)
}, toJSON: { (value: Int?) -> String? in
// transform value from Int? to String?
if let value = value {
return String(value)
}
return nil
})
name <- map["name"]
lastName <- map["lastname"]
}
}
因为您提供的JSON是一个字典,而不是顶级数组?让jsonDict=JSONdata:response.data!;让jsonUserArray=jsonDict[user]//然后使用jsonUserArray进行循环