PRA*_*MAR 7 json swift alamofire swifty-json
我的JSON数据
{
 "addon_items" : [
                     {
                      "aname" : "",
                      "id" : "2588",
                      "name" : "Plain Nan",
                      "order" : "1",
                      "aid" : "259",
                      "Sub_Add_Items" : "",
                      "icon" : "",
                      "status" : "1",
                      "next" : "0",
                      "price" : "0.60"
                     },
                     {
                      "aname" : "",
                      "id" : "2589",
                      "name" : "Pitta Bread",
                      "order" : "2",
                      "aid" : "259",
                      "Sub_Add_Items" : "",
                      "icon" : "",
                      "status" : "1",
                      "next" : "0",
                      "price" : "0.00"
                    }
                   ],
 "addon" : {
             "description" : "Please choose your Nan bread",
             "aname" : "",
             "id" : "259",
             "icon" : "",
             "limit" : "1",
             "special_addon" : "",
             "next" : "165"
           }
 }
我创建了三个名为AddOnResponse,AddOn,AddOnItems的类模型,如下所示:
AddOnResponse类模型
class AddOnResponse {
var addon: Array<String>?
var addonitems: Array<AnyObject>?
init(addon:Array<String>?,addonitems: Array<AnyObject>?){
    self.addon = addon
    self.addonitems = addonitems
 }
}
AddOn类模型
class AddOn {
var id: Int?
var icon: String?
var desc: String?
var limit: Int?
var next: Int?
var aname: String?
var specialaddon: Int?
init(id: Int?,icon: String?,desc: String?,limit: Int?,next: Int?,aname: String?,specialaddon: Int?){
    self.id = id
    self.icon = icon
    self.desc = desc
    self.limit = limit
    self.next = next
    self.aname = aname
    self.specialaddon = specialaddon
  }
 }
AddOnItems类模型
class AddOnItems {
var id: Int?
var aid: Int?
var name: String?
var price: Int?
var order: Int?
var status: Int?
var next: Int?
var aname: String?
var subaddItems: Int?
var icon: String?
init(id: Int?,aid: Int?,name: String?,price: Int?,order: Int?,status: Int?,next: Int?,aname: String?,subaddItems: Int?,icon: String?){
    self.id = id
    self.aid = aid
    self.name = name
    self.price = price
    self.order = order
    self.status = status
    self.next = next
    self.aname = aname
    self.subaddItems = subaddItems
    self.icon = icon
   }
 }
现在我使用Alamofire获取我的JSON数据,但是当使用对象接受dat到类模型时,我获得了nil值.
    var addonResponses = [AddOnResponse]()
    Alamofire.request(.GET, myAddOnUrl)
        .validate()
        .responseJSON
        {   response in
            switch response.result
            {
            case .Success:
                if let value = response.result.value{
                    let json = JSON(value)
                    print(json)
                    print(json["addon"].arrayValue)
           for(_,content) in json{
               let addOnRes = AddOnResponse(addon:content["addon"].arrayValue,
                               addonitems:content["addon_items"].Arrayobject)
                        print(self.addonResponses.count)
                        print(addOnRes.addon)
                        print(addOnRes.addonitems)
                    }
                }
addon和addonitems数据是零,为什么?
在完成JSON响应之后,我看到的是你得到的对象有两个节点(或属性).首先是"addon_items",它有一个数组,你已经为它创建了一个正确的AddOnItems类.第二个 - "插件":这里的这个键是指'Dictionary'而不是数组.
因此,要将响应存储在AddOnResponse对象中,请尝试以下代码.
Alamofire.request(.GET, myAddOnUrl).validate().reponseJSON { response in
    switch resonse.result {
    case .Success:
       if let value = response.result.value {
           let json = JSON(value)
           let responseDictionary = json.dictionaryValue as? [String: AnyObject]
           let addOnRes = AddOnResponse(addon:responseDictionary["addon"].dictionaryValue, addonitems:responseDictionary["addon_items"].arrayValue)
       }
    case .Failure:
       break
    } 
}
还要更改AddOnResponse类
class AddOnResponse {
    var addon: [String: AnyObject]?
    var addonitems: Array<AnyObject>?
    init(addon:[String: AnyObject]?,addonitems: Array<AnyObject>?){
        self.addon = addon
        self.addonitems = addonitems
    }
}
TL; DR 您的JSON响应与您在应用中所做的模型不完全对应.仔细检查你的json响应的"addon"键,它有一个字典对象,而不是一个ARRAY,因此可以制作你的模型类.
编辑:纠正错误以指出投射错误.我现在建议的是传递`add_on'键的JSON对象.在AddOn类中更改初始化程序,以便它采用JSON对象.然后使用初始化它们. AddOn类初始化程序
init(json: JSON) {
    id = json["id"].intValue
    name = json["name"].stringValue
    // and so on
}
同样地,AddOnItems也是如此.并且在AddOnResponse初始化器中循环迭代AddOnItems的JSON对象.初始化它并附加到addOnItems数组属性.抱歉,目前无法为其编写代码.有时间限制.
import Foundation
import SwiftyJSON
class UserInfo {
    var mobile : Int?
    var userid : Int?
    var email : String?
    var name : String?
    init() {
    }
    init(json : JSON){
        mobile = json["phone_number"].intValue
        userid = json["id"].intValue
        email = json["email"].stringValue
        name = json["name"].stringValue
    }
}
| 归档时间: | 
 | 
| 查看次数: | 29163 次 | 
| 最近记录: |