问题
I want to parse JSON using alamofire and swiftyjson
I try get JSON(value) like this
let headers: HTTPHeaders = [
"Authorization": "Basic Y2tfZTA1ZGNmMDkwNTNmODEyMGQwYTMyOGI4YzJkY2QzOTY5MmE5ZDAyNzpjc18zYzZiYWY2NTM0NDhkNDM4ZDM1ZDNmNDY5Nzg5ZGM2Y2VhZGRiZjNl",
"Accept": "application/json"
]
Alamofire.request("https://woo.demoapp.xyz/wp-json/wc/v2/products?category=15", headers: headers).responseJSON { response in
debugPrint(response)
if let json = response.result.value {
print("JSON: \(json)")
}
}
here is the JSON data from woocommerce api
[
{
"id": 29,
"name": "Sunglasses",
"permalink": "https://woo.demoapp.xyz/product/sunglasses/",
"description": "<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.</p>\n",
"images": [
{
"id": 17,
"src": "https://woo.demoapp.xyz/wp-content/uploads/2017/10/sunglasses.jpg",
"name": "Sunglasses",
}
],
The issue is i am not able to populate an array with what I thought would be correct code to parse a JSON file with swiftyJSON in to tableview.
回答1:
please use this type
let headers: HTTPHeaders = [
"Authorization": "Basic Y2tfZTA1ZGNmMDkwNTNmODEyMGQwYTMyOGI4YzJkY2QzOTY5MmE5ZDAyNzpjc18zYzZiYWY2NTM0NDhkNDM4ZDM1ZDNmNDY5Nzg5ZGM2Y2VhZGRiZjNl",
"Accept": "application/json"
]
Alamofire.request("https://woo.demoapp.xyz/wp-json/wc/v2/products?category=15", headers: headers).responseJSON { response in
debugPrint(response)
if let json = response.result.value {
print("JSON: \(json)")
let swjson = JSON(response.result.value!)
print(swjson)
// callback(swjson,nil)
var myMutableDictionary = [AnyHashable: Any]()
myMutableDictionary["myArray"] = swjson
let sss = JSON(myMutableDictionary as Any)
let arrdata = sss["myArray"].arrayObject
var productArray = NSArray()
productArray = arrdata as! [[String:AnyObject]] as NSArray
print(productArray.count)
yourtableview.reload()
}
}
//table view method
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return productArray.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! CustomeCell
let dic = productArray[indexPath.row] as! NSDictionary
let name = dic.object(forKey: "name") as! String
return cell
}
回答2:
Upload Image With Parameter Using Alamofire
let parameters = ["category":"15" as AnyObject]
let headers: HTTPHeaders = [
"Authorization": "Basic Y2tfZTA1ZGNmMDkwNTNmODEyMGQwYTMyOGI4YzJkY2QzOTY5MmE5ZDAyNzpjc18zYzZiYWY2NTM0NDhkNDM4ZDM1ZDNmNDY5Nzg5ZGM2Y2VhZGRiZjNl",
"Accept": "application/json"
]
Alamofire.upload(multipartFormData: { multipartFormData in
multipartFormData.append(fileUrl , withName: "image" , fileName: yourfilename + ".yourfiletype", mimeType: "yourfiletype")
for (key, value) in parameters {
multipartFormData.append(value.data(using: String.Encoding.utf8.rawValue)!, withName: key)
}
},to: "https://woo.demoapp.xyz/wp-json/wc/v2/products", method: .post, headers: headers ,
encodingCompletion: { encodingResult in
switch encodingResult {
case .success(let upload, _, _):
upload.response { [weak self] response in
guard self != nil else {
return
}
}
upload.responseJSON { response in
let responseJSON = response.result.value as! NSDictionary
}
case .failure(let encodingError):
print("error:\(encodingError)")
}
})
来源:https://stackoverflow.com/questions/46945764/how-to-parsing-json-with-swiftyjson-from-woocommerce-api