【问题标题】:how to parsing Json with SwiftyJson from woocommerce api?如何从 woocommerce api 使用 SwiftyJson 解析 Json?
【发布时间】:2018-04-07 07:56:44
【问题描述】:

我想用 alamofire 和 swiftyjson 解析 JSON

我尝试像这样获取 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)")

        }

    }

这是来自 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 文件解析到 tableview。

【问题讨论】:

  • 请搜索:There are many related questions并学习阅读JSON。这很简单:{} 是字典,[] 是数组。所有的键都是字符串。双引号中的值为String,不带双引号的值为Int
  • 您想在表格视图中填充吗?还是简单?
  • 我已经发布了答案,请使用此代码,我还测试了计数为 4。
  • @BHAVIKPANCHAL 我想填充表格视图。如何实施?
  • 你能看到我发布的答案吗?

标签: swift3 alamofire swifty-json


【解决方案1】:

使用 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)")

    }


})

【讨论】:

    【解决方案2】:

    请使用这种类型

    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()
        }
    
    }
    

    //表格查看方法

    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
    }
    

    【讨论】:

    • 如何在图片上解析“src”?
    • 还有另一种上传图片的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多