swift、Alamofire、SwiftyJSON:如何解析 arrayObject
Posted
技术标签:
【中文标题】swift、Alamofire、SwiftyJSON:如何解析 arrayObject【英文标题】:swift, Alamofire, SwiftyJSON : How to parsing arrayObject 【发布时间】:2017-05-31 23:21:23 【问题描述】:我不知道如何使用 SwiftyJSON.JSON 制作 Array 我可以使用 SwiftyJSON.JSON 解析结构,但我无法解析对象数组。 请帮帮我。
JSON
"result":
"list": [
"categoryId": 1,
"categoryNm": "main_1",
"subCategoryList": [
"categoryId": 2,
"categoryNm": "sub_1_1"
,
"categoryId": 4,
"categoryNm": "sub_1_2"
,
"categoryId": 5,
"categoryNm": "sub_1_3"
,
"categoryId": 6,
"categoryNm": "sub_1_4"
,
"categoryId": 28,
"categoryNm": "sub_1_5"
]
,
"categoryId": 7,
"categoryNm": "main_2",
"subCategoryList": [
"categoryId": 9,
"categoryNm": "sub_2_1"
,
"categoryId": 10,
"categoryNm": "sub_2_2"
,
"categoryId": 11,
"categoryNm": "sub_2_3"
]
]
模型.swift
struct Model
public let list: Array<Category>
public init?(json: JSON)
self.list = json["list"].arrayObject as! Array<Category>
struct Category
public let categoryId: NSInteger
public let categoryNm: NSString
public let subCategoryList: Array<SubCategory>
public init?(json: JSON)
self.categoryId = json["categoryId"].intValue as NSInteger
self.categoryNm = json["categoryNm"].stringValue as NSString
self.subCategoryList = json["subCategoryList"].arrayObject as! Array<SubCategory>
struct SubCategory
public let categoryId: NSInteger
public let categoryNm: NSString
public init?(json: JSON)
self.categoryId = json["categoryId"].intValue as NSInteger
self.categoryNm = json["categoryNm"].stringValue as NSString
ViewController.swift
override func viewDidLoad()
super.viewDidLoad()
...
switch response.result
case .success(let value):
let json = JSON(value)
let resultModel = Model.init(json: json["result"])
case .failure(let error):
print(error)
我不知道如何使用 SwiftyJSON.JSON 制作 Array 我可以使用 SwiftyJSON.JSON 解析结构,但我无法解析对象数组。 请帮帮我。
【问题讨论】:
【参考方案1】:以下代码将 my.json 文件解析为一个类别和子类别的数组
声明categories
数组
var categories = [Category]()
打开您的文件并创建一个JSON
对象
let path = Bundle.main.path(forResource: "my", ofType: "json")!
let jsonData = NSData.init(contentsOfFile: path)
let json = JSON(data: jsonData! as Data)
创建categories
并将它们附加到数组中
for categoryArray in json["result"]["list"].array!
guard let category = Category(json: categoryArray) else continue
categories.append(category)
print(categories)
声明Category
结构如下
struct Category
public let categoryId: NSInteger
public var subCategories = [SubCategory]()
public init?(json: JSON)
self.categoryId = json["categoryId"].intValue as NSInteger
self.categoryNm = json["categoryNm"].stringValue as NSString
for subCategory in json["subCategoryList"].array!
subCategories.append(SubCategory(json: subCategory)!)
【讨论】:
以上是关于swift、Alamofire、SwiftyJSON:如何解析 arrayObject的主要内容,如果未能解决你的问题,请参考以下文章
Alamofire 自定义响应从 Alamofire v1.3 迁移到 3.0(和 Swift 2 语法)
Alamofire 在 Swift 3、Xcode 8 中出现错误