【发布时间】:2020-07-21 04:17:08
【问题描述】:
我需要使用 URLSession 发出 POST 请求,并将下面的确切 JSON 作为 httpBody 发送。 我的问题是正确发送大括号和方括号。
{
"confirm": true,
"booking": [
{
"sendSms": false,
"order": "8724897",
"priority": 2,
"phone": {
"description": "Main phone",
"number": "555444333"
}
}
]
}
下面是我正在使用的,它不起作用,因为它总是发送方括号而不是大括号。 我猜它发送的是数组而不是对象。
let phone = [String:Any]()
phone["description"] = "Main phone"
phone["number"] = "555444333"
let booking = [String:Any]()
booking["sendSms"] = false
booking["order"] = "8724897"
booking["priority"] = 2
booking["phone"] = phone
let json = [String:Any]()
json["confirm"] = true
json["booking"] = [booking]
这里是如何发送的
let bodyData = try JSONSerialization.data(withJSONObject: json, options: [])
request.httpBody = bodyData
你有什么建议? 谢谢
【问题讨论】:
-
在您使用该字典设置 http 正文的位置添加代码
-
当您说“我的问题是正确发送大括号和方括号”时,您是什么意思?使用
JSONSerialization.data(withJSONObject:options:)(正如您在修改后的问题中所包含的那样)可以为您做到这一点。为什么你认为大括号/方括号有问题?只要看看String(data: bodyData, encoding: .utf8)!,你就会发现一切都很好。 -
不相关,但您真的是要发送带有确认信息的预订数组吗?还是你的意思是
json["booking"] = booking? -
服务器接收到的所有括号都是方括号。
-
“服务器接收到的所有括号都是方括号。”不,查看
String(data: bodyData, encoding: .utf8)!,您可以清楚地看到唯一的方括号围绕您的预订数组,我想知道您是否真的打算成为一个预订,而不是它们的数组。