You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift 如何构造适配POST请求的嵌套JSON字典

Swift 嵌套字典构建POST请求Payload的修正方案

现有实现的核心缺口

原有代码在初始化cardholder对应的内层字典时,仅传入了address一个键值对,没有将提前构造完成的shippingDetails字典以接口要求的shipping_address为键整合进去,最终生成的结构自然会缺失该字段。

具体修正方式

保留所有已写好的地址字典构造、单元号非空判断的逻辑不变,仅需修改最后一行初始化嵌套字典的代码,把两个地址字典都挂载到cardholder对应的内层字典下即可。

修正后完整可运行代码

var addressDetails = ["city": self.newCity!, "state": self.newState!,"street": self.newStreet!,"zip_code": self.newZipcode!]
var shippingDetails = ["city": self.newCity!, "state": self.newState!,"street": self.newStreet!,"zip_code": self.newZipcode!]
if self.newUnit != ""{
    addressDetails["unit"] = self.newUnit!
    shippingDetails["unit"] = self.newUnit!
}

// 仅需修改这一行,补全shipping_address字段
var payload: [String:[String:[String:String]]] = [
    "cardholder": [
        "address": addressDetails,
        "shipping_address": shippingDetails
    ]
]

注意事项

  • 所有字典的键名必须和接口要求的JSON键完全匹配,尤其注意shipping_address为下划线命名,不要误写为驼峰格式的shippingAddress,否则序列化后的JSON会不符合接口校验规则
  • 当前使用的三层字典类型标注[String:[String:[String:String]]]完全适配目标结构,不需要调整泛型类型定义
  • 构造完成的字典可直接通过JSONSerialization.data(withJSONObject:options:)转换为POST请求的Body数据,序列化结果和要求的payload结构完全一致

扩展提示:如果后续接口字段持续增加,手写字典容易出现键名拼写错误、类型不匹配的问题,可以改用遵循Codable协议的结构体来组织数据,通过JSONEncoder直接序列化得到符合要求的JSON,减少调试成本。

内容的提问来源于stack exchange,提问作者Eric101

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.01 00:27:02