我想在请求中传递这样的数组:
{
"ids": ["5ed7603ab05efe0004286d19", "5ed7608ab05efe0004286d1a"]
}
我确实喜欢这样,但是我不确定服务器是否按预期进行了操作
request.httpBody = try JSONSerialization.data(withJSONObject: ids, options: .prettyPrinted)
答案 0 :(得分:1)
为此,您应该使用Dictionary
。方法如下:
let dictionary = ["ids": ["5ed7603ab05efe0004286d19", "5ed7608ab05efe0004286d1a"]]
request.httpBody = try JSONSerialization.data(withJSONObject: dictionary, options: .prettyPrinted)
建议:现代方法是使用JSONEncoder()
。你可以用谷歌搜索,在线有很多解决方案。如果您仍在挣扎,可以在评论中询问方法,我会帮助您解决。
更新:如何在代码中实现Swift的JSONEncoder
API。
let dictionary = ["ids": ["5ed7603ab05efe0004286d19", "5ed7608ab05efe0004286d1a"]]
request.httpBody = try JSONEncoder().encode(dictionary)
使用结构会更安全。方法如下:
typealias ID = String
struct MyRequestModel: Codable { var ids: [ID] }
let myRequestModel = MyRequestModel(ids: ["5ed7603ab05efe0004286d19", "5ed7608ab05efe0004286d1a"])
request.httpBody = try JSONEncoder().encode(myRequestModel)
注意:类型别名的使用是可选的,它只会增加代码的可读性,就像JSONDecoder
的用法一样。
答案 1 :(得分:0)
您可以使用JSONEncoder
;
let yourList = ["5ed7603ab05efe0004286d19", "5ed7608ab05efe0004286d1a"]
struct DataModel: Encodable {
var ids: [String]
}
let data = DataModel(ids: yourList)
let encodedData = try! JSONEncoder().encode(data)
// JSON string value
let jsonString = String(data: encodedData, encoding: .utf8)