如何为以下JSON数据创建模型类并解析它?

前端之家收集整理的这篇文章主要介绍了如何为以下JSON数据创建模型类并解析它?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的 JSON数据
  1. {
  2. "addon_items" : [
  3. {
  4. "aname" : "","id" : "2588","name" : "Plain Nan","order" : "1","aid" : "259","Sub_Add_Items" : "","icon" : "","status" : "1","next" : "0","price" : "0.60"
  5. },{
  6. "aname" : "","id" : "2589","name" : "Pitta Bread","order" : "2","price" : "0.00"
  7. }
  8.  
  9. ],"addon" : {
  10. "description" : "Please choose your Nan bread","aname" : "","id" : "259","limit" : "1","special_addon" : "","next" : "165"
  11. }
  12. }

我创建了三个名为AddOnResponse,AddOn,AddOnItems的类模型,如下所示:

AddOnResponse类模型

  1. class AddOnResponse {
  2.  
  3. var addon: Array<String>?
  4. var addonitems: Array<AnyObject>?
  5.  
  6. init(addon:Array<String>?,addonitems: Array<AnyObject>?){
  7. self.addon = addon
  8. self.addonitems = addonitems
  9. }
  10. }

AddOn类模型

  1. class AddOn {
  2.  
  3.  
  4. var id: Int?
  5. var icon: String?
  6. var desc: String?
  7. var limit: Int?
  8. var next: Int?
  9. var aname: String?
  10. var specialaddon: Int?
  11.  
  12. init(id: Int?,icon: String?,desc: String?,limit: Int?,next: Int?,aname: String?,specialaddon: Int?){
  13.  
  14. self.id = id
  15. self.icon = icon
  16. self.desc = desc
  17. self.limit = limit
  18. self.next = next
  19. self.aname = aname
  20. self.specialaddon = specialaddon
  21.  
  22. }
  23. }

AddOnItems类模型

  1. class AddOnItems {
  2.  
  3.  
  4. var id: Int?
  5. var aid: Int?
  6. var name: String?
  7. var price: Int?
  8. var order: Int?
  9. var status: Int?
  10. var next: Int?
  11. var aname: String?
  12. var subaddItems: Int?
  13. var icon: String?
  14.  
  15. init(id: Int?,aid: Int?,name: String?,price: Int?,order: Int?,status: Int?,subaddItems: Int?,icon: String?){
  16. self.id = id
  17. self.aid = aid
  18. self.name = name
  19. self.price = price
  20. self.order = order
  21. self.status = status
  22. self.next = next
  23. self.aname = aname
  24. self.subaddItems = subaddItems
  25. self.icon = icon
  26. }
  27. }

现在我使用Alamofire获取我的JSON数据,但是当使用对象接受dat到类模型时,我获得了nil值.

  1. var addonResponses = [AddOnResponse]()
  2.  
  3. Alamofire.request(.GET,myAddOnUrl)
  4. .validate()
  5. .responseJSON
  6. { response in
  7. switch response.result
  8. {
  9. case .Success:
  10. if let value = response.result.value{
  11. let json = JSON(value)
  12. print(json)
  13. print(json["addon"].arrayValue)
  14.  
  15.  
  16. for(_,content) in json{
  17. let addOnRes = AddOnResponse(addon:content["addon"].arrayValue,addonitems:content["addon_items"].Arrayobject)
  18.  
  19. print(self.addonResponses.count)
  20. print(addOnRes.addon)
  21. print(addOnRes.addonitems)
  22. }
  23. }

addon和addonitems数据是零,为什么?

解决方法

在完成JSON响应之后,我看到的是你得到的对象有两个节点(或属性).
首先是“addon_items”,它有一个数组,你已经为它创建了一个正确的AddOnItems类.
第二个 – “插件”:这里的这个键是指’Dictionary’而不是数组.

因此,要将响应存储在AddOnResponse对象中,请尝试以下代码.

  1. Alamofire.request(.GET,myAddOnUrl).validate().reponseJSON { response in
  2. switch resonse.result {
  3. case .Success:
  4. if let value = response.result.value {
  5. let json = JSON(value)
  6. let responseDictionary = json.dictionaryValue as? [String: AnyObject]
  7. let addOnRes = AddOnResponse(addon:responseDictionary["addon"].dictionaryValue,addonitems:responseDictionary["addon_items"].arrayValue)
  8. }
  9. case .Failure:
  10. break
  11. }
  12. }

还要更改AddOnResponse类

  1. class AddOnResponse {
  2. var addon: [String: AnyObject]?
  3. var addonitems: Array<AnyObject>?
  4.  
  5. init(addon:[String: AnyObject]?,addonitems: Array<AnyObject>?){
  6. self.addon = addon
  7. self.addonitems = addonitems
  8. }
  9. }

TL; DR
您的JSON响应与您在应用中制作的模型不完全对应.仔细检查你的json响应的“addon”键,它有一个字典对象,而不是一个ARRAY,因此可以制作你的模型类.

编辑:纠正错误以指出投射错误.
我现在建议的是传递`add_on’键的JSON对象.在AddOn类中更改初始化程序,以便它采用JSON对象.然后使用初始化它们.
AddOn类初始化程序

  1. init(json: JSON) {
  2. id = json["id"].intValue
  3. name = json["name"].stringValue
  4. // and so on
  5. }

同样地,AddOnItems也是如此.并且在AddOnResponse初始化器中循环迭代AddOnItems的JSON对象.初始化它并附加到addOnItems数组属性.抱歉,目前无法为其编写代码.有时间限制.

猜你在找的JavaScript相关文章