如何使用 woocommerce api 中的 SwiftyJson 解析 Json?
how to parsing Json with SwiftyJson from woocommerce api?
我想使用 alamofire 和 swiftyjson 解析 JSON
我尝试像这样获取 JSON(value)
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)")
}
}
这是来自 woocommerce api
的 JSON 数据
[
{
"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",
}
],
问题是我无法用我认为正确的代码填充一个数组,以将带有 swiftyJSON 的 JSON 文件解析到表视图中。
请使用此类型
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查看方式
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
}
使用 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)")
}
})
我想使用 alamofire 和 swiftyjson 解析 JSON
我尝试像这样获取 JSON(value)
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)")
}
}
这是来自 woocommerce api
的 JSON 数据[
{
"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",
}
],
问题是我无法用我认为正确的代码填充一个数组,以将带有 swiftyJSON 的 JSON 文件解析到表视图中。
请使用此类型
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查看方式
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
}
使用 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)")
}
})