Swift 向服务器发送Array集合数据

关于在swift中向服务器请求数据的时候,有时候需要向服务器传递很长的数据才行,而且数据还得是Array集合的形式,这让我开始的时候一脸懵逼,根本不会写,也是搞了好久才弄好,这里记录一下,以备后用

1、首先我们肯定意见有了集合数据,这里我的集合数据形式是:

let schArray:Array<SchoolDataModel> = 这里是你的集合数据

可以看出我是泛型的集合

下面我通过JSONEncoder处理一下

        //把array<> 转json
        let jsonEncoder = JSONEncoder()
        let jsonData = try? jsonEncoder.encode(schArray)
        let json = String(data: jsonData!, encoding: String.Encoding.utf8)
        print(json ?? "")
        self.requestMessage(json:json!)

上面拿到jsong格式的数据之后,就可以用了

    
    //请求报修数据数量
    func requestMessage(json : String){
        let session = URLSession.init(configuration: .default)
        let url = URL(string: WebUrlUtil.operatMainUrl)  //WebUrlUtil.operatMainUrl是我的请求地址
        var request = URLRequest(url: url!)
        request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
        request.httpMethod = "POST"
        //这里要向服务端传递json对象,且json为对象或者集合数据,这里我就把上面处理好的惊悚格式集合拿过来拼接到下面,然后下面处理完就可以一起作为参数项服务器请求了
        let postParams = """
                {
                    "sta" : "1",
                    "schoolDb" : \(json)
                }
            """
       
        let jsonData = "info=\(postParams)"
        print(jsonData)
        request.httpBody = jsonData.data(using: .utf8)

        let task = session.dataTask(with: request) { (data,response,error) in

            do{
                // 将二进制数据转换为字典对象
                if let jsonObj:NSDictionary = try JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions()) as? NSDictionary{
                    print("未解码数据:\(jsonObj)")

                }
                if data == nil{
                    DispatchQueue.main.async {
                        //下面是我的一个toast提示,
                        EWToast.showBottomWithText(text: "暂无数据")
                    }
                    return
                }
                let dict = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)
                //JSON 是用的SwiftJSON 解析
                let jsonObject = JSON(parseJSON: dict! as String)
                print("解码数据:-----> \(jsonObject)")

            }catch{
                print("Error.----------------------")
                DispatchQueue.main.async {
                    EWToast.showBottomWithText(text: "异常:\(error)")
                }
            }

        }
        task.resume()
    }

就是上面的写法可以了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值