arrays - 如何以实际格式在服务器上发布数据?
问题描述
我在服务器上发布我的参数数据,如下所示。
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}}
解决方案
您似乎正在创建 aJSON
并将其转换为 a String
,然后将其转换为数据以作为 发送httpBody
。如下修改您的createJSONParameterString
方法以解决问题。
func createJSONParameterString(postBody: [String: Any]) -> Data? {
try? JSONSerialization.data(withJSONObject: postBody)
}
用法:
request.httpBody = createJSONParameterString(postBody: parameters)
推荐阅读
- gtsummary - 使用 gtsummary 显示多个模型的 r 平方、aic、bic 和偏差
- python - 我有一个由 numpy 数组组成的图形,包括五个折线图,如何为每个图形添加趋势线?
- python - 无法获取页数。poppler 是否已安装并在 PATH 中?
- python - python中包含转义序列的字符串的清理列表
- ansible - 仅对属于某个组的主机运行任务
- flutter - 使用 Flutter 在 null.Realtime Database 上调用了方法“[]”
- sql-server - 如何在 SSIS 表达式中编写 NULL
- windows - 批处理脚本回显另一个批处理脚本
- rust - 如何解决条件依赖和 cfg_attr() 的问题
- c# - 使用一个 API 获取所有用户和邮箱