首页 > 解决方案 > 如何以实际格式在服务器上发布数据?

问题描述

我在服务器上发布我的参数数据,如下所示。

let parameters : [String : Any] = [
        
        "cartdata" : cartArr,            //cartArr is an array 
        "previewcart" : previewcart,
        "json" : json,
        "video" : video,
        "token" : token,
        "user_id" : userID,
        "flag" : true
        
    ]
    
        
        print(parameters) 
        

        
       let postBody = createJSONParameterString(postBody: parameters as NSDictionary)       //The issue is here. Here the cartArr is converting into string.
        print(postBody)
        
        URLSession.shared.dataTask(with: request) { (data, response, error) in
            guard let data = data else {
                if error == nil{
                    print(error?.localizedDescription ?? "Unknown Error")
                }
                return
            }
            
            if let response = response as? HTTPURLResponse{
                guard (200 ... 299) ~= response.statusCode else{
                    print("Status code :- \(response.statusCode)")
                    print(response)
                    return
                }
            }

在 postBody 中,数据是这样的

{"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjQ5MzE3Y2MxZmMyYjMzOWNkNTMzNDFiYTU1ZjBmMjc5MmY1NTI2YWVjYTI4YjllMjQ0OWVjM2VhMGY4NTM0ZWYwYTZmNDFlMjQyNWUxN2M5In0.eyJhdWQiOiIxIiwianRpIjoiNDkzMTdjYzFmYzJiMzM5Y2Q1MzM0MWJhNTVmMGYyNzkyZjU1MjZhZWNhMjhiOWUyNDQ5ZWMzZWEwZjg1MzRlZjBhNmY0MWUyNDI1ZTE3YzkiLCJpYXQiOjE1OTI4OTU4NjUsIm5iZiI6MTU5Mjg5NTg2NSwiZXhwIjoxNjI0NDMxODY1LCJzdWIiOiIzNjMiLCJzY29wZXMiOltdfQ.QbUbOwiDLNLrcJoP56sTz7-U9X3znJu9q3H9TQLjBJG2w6FHl_6s7em0veqcRA8tMLJBVkWu3kz1NFYzuhAzU1KDaUdajiPFyu7bqfAMQowaEweZOI6gEHr6OqGf4Br6poERZJrnj3N9OXBrT3Z2PSyL_q9oex9oWeag48LdeKeyPql5UtyXvDzATePBkfbt1l704tpuNGQ-ZIjUtAXDK-h2ZoDLl_oxxdZ3I4cLAL027BGmPCz_K1h2OjjJ8adDeJfD3RrOdeKwc-fE11O5dVq7cpDO4luNFveFTpe_ekM7xlLBv7JGhfNauEnlui2OhI_AuTGoa79YPt8Q-XLGHcUCQiTqsiJf9TYEGbuRrHz4ZjmCmr0mWoyfcizeWUTiQ5nfHMxRKsVU0E4eUW1D87Dw5XMi4QeRdjcIVvNJPnQnqg5WlPOp82bP8XdEgC75M0eAzawgyRfvSosdzj-9BvyNZfPZZ4aK3vsTw7KYkRER2UKooEnOZlTJMRksBby3QyHhRyY6pxPl1AkJIWMamE_tRq7EYBXDUTfhBUF9Usg2I_4EbWwv1aJ2A6kSLGIZpTFHvqgWyVjKQdF9xRg5gM2x02LFNY6YHIDqAfgEiXQp3N5pCXnFYm2yIz9_--C-08VfNWnuDSv9Cj6aZeWE6tKMwarm1VpIuNW-kzqqaYo","flag":true,"json":{"duration":20,"slottime":2,"type":"selected"},"video":{"name":"uploadlater"},"user_id":363,"cartdata":["{\n  \"id\" : \"37\",\n  \"slots\" : [\n    {\n      \"maxSlot\" : 90,\n      \"total\" : 20,\n      \"type\" : \"NORMAL\",\n      \"time\" : \"04:00 PM\",\n      \"location_id\" : 31,\n      \"bookdate\" : \"2020-06-25\",\n      \"price\" : \"10\",\n      \"quantity\" : 2,\n      \"tv_position\" : 1,\n      \"device_id\" : 8,\n      \"id\" : 37\n    }\n  ],\n  \"building\" : \"GIP Mall\",\n  \"image\" : \"https:\\\/\\\/hifyapp.com\\\/dashboard\\\/public\\\/images\\\/LocationGallery\\\/5ee21c7ae214e.jpg\",\n  \"site_name\" : 31,\n  \"solt_price\" : \"10\",\n  \"landmark\" : \"Sector 38, Noida, Uttar Pradesh 201301\",\n  \"booking_date\" : \"2020-06-25\"\n}"],"previewcart":{"totalsites":1,"price":20,"subtotal":"23.6","quantity":2}}

在这个 cartArr 数据正在转换为字符串,但我必须像下面这样发送它。

{"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjQ5MzE3Y2MxZmMyYjMzOWNkNTMzNDFiYTU1ZjBmMjc5MmY1NTI2YWVjYTI4YjllMjQ0OWVjM2VhMGY4NTM0ZWYwYTZmNDFlMjQyNWUxN2M5In0.eyJhdWQiOiIxIiwianRpIjoiNDkzMTdjYzFmYzJiMzM5Y2Q1MzM0MWJhNTVmMGYyNzkyZjU1MjZhZWNhMjhiOWUyNDQ5ZWMzZWEwZjg1MzRlZjBhNmY0MWUyNDI1ZTE3YzkiLCJpYXQiOjE1OTI4OTU4NjUsIm5iZiI6MTU5Mjg5NTg2NSwiZXhwIjoxNjI0NDMxODY1LCJzdWIiOiIzNjMiLCJzY29wZXMiOltdfQ.QbUbOwiDLNLrcJoP56sTz7-U9X3znJu9q3H9TQLjBJG2w6FHl_6s7em0veqcRA8tMLJBVkWu3kz1NFYzuhAzU1KDaUdajiPFyu7bqfAMQowaEweZOI6gEHr6OqGf4Br6poERZJrnj3N9OXBrT3Z2PSyL_q9oex9oWeag48LdeKeyPql5UtyXvDzATePBkfbt1l704tpuNGQ-ZIjUtAXDK-h2ZoDLl_oxxdZ3I4cLAL027BGmPCz_K1h2OjjJ8adDeJfD3RrOdeKwc-fE11O5dVq7cpDO4luNFveFTpe_ekM7xlLBv7JGhfNauEnlui2OhI_AuTGoa79YPt8Q-XLGHcUCQiTqsiJf9TYEGbuRrHz4ZjmCmr0mWoyfcizeWUTiQ5nfHMxRKsVU0E4eUW1D87Dw5XMi4QeRdjcIVvNJPnQnqg5WlPOp82bP8XdEgC75M0eAzawgyRfvSosdzj-9BvyNZfPZZ4aK3vsTw7KYkRER2UKooEnOZlTJMRksBby3QyHhRyY6pxPl1AkJIWMamE_tRq7EYBXDUTfhBUF9Usg2I_4EbWwv1aJ2A6kSLGIZpTFHvqgWyVjKQdF9xRg5gM2x02LFNY6YHIDqAfgEiXQp3N5pCXnFYm2yIz9_--C-08VfNWnuDSv9Cj6aZeWE6tKMwarm1VpIuNW-kzqqaYo","flag":true,"json":{"duration":20,"slottime":2,"type":"selected"},"video":{"name":"uploadlater"},"user_id":363,"cartdata":["{"id" : "37", "slots" : [ { "maxSlot" : 90,      "total" : 20, "type" : "NORMAL", "time" : "04:00 PM", "location_id" : 31, "bookdate" : "2020-06-25", "price" : "10", "quantity" : 2, "tv_position" : 1, "device_id" : 8, "id" : 37 }],  "building" : "GIP Mall", "image" : "https:\\\/\\\/hifyapp.com\\\/dashboard\\\/public\\\/images\\\/LocationGallery\\\/5ee21c7ae214e.jpg", "site_name" : 31,"solt_price" : "10", "landmark" : "Sector 38, Noida, Uttar Pradesh 201301","booking_date" : "2020-06-25"}"],"previewcart":{"totalsites":1,"price":20,"subtotal":"23.6","quantity":2}}

标签: arraysswiftxcodeswift4swifty-json

解决方案


您似乎正在创建 aJSON并将其转换为 a String,然后将其转换为数据以作为 发送httpBody。如下修改您的createJSONParameterString方法以解决问题。

func createJSONParameterString(postBody: [String: Any]) -> Data? {
    try? JSONSerialization.data(withJSONObject: postBody)
}

用法:

request.httpBody = createJSONParameterString(postBody: parameters)

推荐阅读