【发布时间】:2026-02-21 09:10:02
【问题描述】:
我有这个正文要发送给后端`{
"cart":
{
"products": [
{
"id": 3,
"quantity": 2
},
{
"id": 6,
"quantity": 1
}
],
"card":
{
"id": "card_21378921w"
}
}
}`
我尝试使用可编码对象创建:
struct Cart: Codable {
var id: Int!
var quantity: Int!
private enum CodingKeys: String, CodingKey {
case id = "id"
case quantity = "quantity"
}
}
var cart: [Cart]!
然后尝试将字典创建为字符串,但是当我尝试使用时
试试吧! JSONSerialization.data(withJSONObject:参数,选项:.prettyPrinted) 我无法创建正确的 json 文件来发送给我的后端,服务器返回状态码 422
我该如何解决?我是使用 swift 4 和可编码的新手
功能
static func createCheckout(accessToken: String, buildingId: Int,products:[Cart], card_id: String,completion: @escaping (CommonResponse?, _ error: Int?) -> ()) {
let url = Url.createCheckout(buildingId: buildingId)
let parameters = Params.createCheckout(products: products, card_id: card_id)
if (!JSONSerialization.isValidJSONObject(parameters)) {
print(parameters)
print("is not a valid json object")
return
}
let encodedParameters = try! JSONSerialization.data(withJSONObject: parameters, options: .prettyPrinted)
var request = URLRequest(url: URL(string: url)!)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("Bearer \(accessToken)", forHTTPHeaderField: "Authorization")
request.httpBody = encodedParameters
Alamofire.request(request).responseDecodableObject(decoder: JSONDecoder()) { (response: DataResponse<CommonResponse>) in
let repo = response.result.value
let error = response.response?.statusCode
completion(repo, error)
}
参数
static func createCheckout(products:[Cart], card_id: String) -> Dictionary<String, Any> {
let products: [String: Any] = ["products": products]
let card_number: [String: Any] = ["id": card_id]
return ["cart" : products, "card": card_number]
}
【问题讨论】:
-
您是如何在代码中调用 JSONSerialization 的?您可以将其添加到您的帖子中吗?
-
@ChristianAbella 我更新了更多详细信息的答案,抱歉
标签: json swift serialization swift4