如何将JSON数组发送到Swift 3 iOS的POST请求?

问题描述 投票:0回答:1

我正在使用以下post方法发送JSON数组,请帮助我解决以下问题?

我需要发布json数据,如下所示;

key = punchdata

{
    "maids" : "649",
    "misReason" : "test",
    "uId" : "20",
    "aDate" : "2020-04-24",
    "punchArray" : [
      {
        "in_time" : "14:10:00",
        "in_date" : "2020-04-24",
        "out_date" : "2020-04-24",
        "out_time" : "19:00:00"
      }
    ]
  }

[我附上邮递员的要求和答复,请检查;

enter image description here

func sendJSONArrayToPost()   {

        let params2 = ["punchdata" : ["uId": "20",
                      "aDate":"2020-04-24",
                      "maids":"649",
                      "misReason":"test",
                      "punchArray": [
                        [
                            "in_date": "2020-05-07",
                            "in_time": "10:00:00",
                            "out_date": "2020-05-07",
                            "out_time": "13:00:00"
                        ]]]] as [String : Any]

        let url = "https://iiplccr.hrgird.com/owner/hrmessapi/applymissingPunch"

        Alamofire.request(url, method: .post, parameters: params2, encoding:JSONEncoding.default, headers: nil)
            .responseJSON { response in
                debugPrint(response)
                if let data = response.result.value{
                    if  (data as? [String : AnyObject]) != nil{
                        if let dictionaryArray = data as? Dictionary<String, AnyObject?> {
                            if dictionaryArray.count > 0 {
                                var resCode = Int()
                                var resMessage = ""

                                if let success = dictionaryArray["success"] as? Int{
                                    resCode = success
                                }
                                if let Msg = dictionaryArray["Msg"] as? String{
                                    resMessage = Msg
                                }
                            }
                        }
                    }
                }
        }
}

Other Way:

let jsonDataDict: NSMutableDictionary = NSMutableDictionary()

            let arrObj: NSMutableDictionary = NSMutableDictionary()
            let jsonArrayDict: NSMutableArray = NSMutableArray()

            jsonDataDict.setValue("\(mLoginUserId)", forKey: "uId")
            jsonDataDict.setValue(dateArray[0], forKey: "aDate")
            jsonDataDict.setValue(maidStr, forKey: "maids")
            jsonDataDict.setValue(resason, forKey: "misReason")

            for item in self.MissingPunchListArray {
                arrObj.setValue(item.inDate, forKey: "in_date")
                arrObj.setValue(item.inTime, forKey: "in_time")
                arrObj.setValue(item.outDate, forKey: "out_date")
                arrObj.setValue(item.outTime, forKey: "out_time")
                jsonArrayDict.add(arrObj)
            }
            jsonDataDict.setValue(jsonArrayDict, forKey: "punchArray")

下面是我要执行的另一个功能;

let url = "https://iiplccr.hrgird.com/owner/hrmessapi/applymissingPunch"
var request = URLRequest(url: NSURL(string: url)! as URL)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")  
request.httpBody = try! JSONSerialization.data(withJSONObject: ["punchdata": jsonDataDict])

Alamofire.request(request)
    .responseJSON { response in
        switch response.result {
        case .failure(let error):
            print("error: \(error)")

            if let data = response.data, let responseString = String(data: data, encoding: .utf8) {
                print("responseString: \(responseString)")
            }
        case .success(let responseObject):
            print("responseObject: \(responseObject)")
        }
}

我遇到以下错误:

[Data]: 37025 bytes
[Result]: FAILURE: responseSerializationFailed(reason: Alamofire.AFError.ResponseSerializationFailureReason.jsonSerializationFailed(error: Error Domain=NSCocoaErrorDomain Code=3840 "Invalid value around character 0." UserInfo={NSDebugDescription=Invalid value around character 0.}))
arrays json swift post alamofire
1个回答
0
投票

您可以尝试这种方式

var JsonDic = [String:Any]()

JsonDic["maids"] = "649"
JsonDic["misReason"] = "test"
JsonDic["uId"] = "20"
JsonDic["aDate"] = "2020-04-24"

let arr = [[String: String]]()
var obj = [String: String]()
obj["in_time"] = "14:10:00"
obj["to_city_id"] = "2020-04-24"
obj["out_date"] = "2020-04-24"
obj["out_time"] = "19:00:00"
arr.append(obj)


JsonDic["punchArray"] = arr
© www.soinside.com 2019 - 2024. All rights reserved.