Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 为JSON创建嵌套字典_Ios_Json_Swift_Dictionary_Mobile - Fatal编程技术网

Ios 为JSON创建嵌套字典

Ios 为JSON创建嵌套字典,ios,json,swift,dictionary,mobile,Ios,Json,Swift,Dictionary,Mobile,我试图为POST请求复制json格式,但在Swift中使用以下2D字典时遇到问题 payload = {"cardholder": { "address": { "city": "city", "state": "MA", "street": "street", &q

我试图为POST请求复制json格式,但在Swift中使用以下2D字典时遇到问题

payload = {"cardholder": {
    "address": {
        "city": "city",
        "state": "MA",
        "street": "street",
        "zip_code": "11111"
    },
    "shipping_address": {
        "city": "city",
        "state": "MA",
        "street": "street",
        "zip_code": "11111"
    }
}}
有没有办法设置addressDetails和shippingDetails

            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!
            }
            
            var test: [String:[String:[String:String]]] = ["cardholder": ["address": addressDetails]]

回答你的问题:是的。您需要做的一切就是将
shippingDetails
添加到
测试[“持卡人”]
dict:

var测试:[字符串:[字符串:[字符串:字符串]]=[“持卡人”:[“地址”:地址详细信息,“发货地址”:发货详细信息]]
然而,我完全同意@Paulw11,你不应该那样摆弄字典。使用符合
Codable
的结构:

结构地址:可编码{
var城市:字符串
变量状态:字符串
华尔街:字符串
var-zipCode:String
变量单位:字符串?
枚举编码键:字符串,编码键{
案例城市、州、街道、zipCode=“邮政编码”,单位
}
}
结构持卡人:可编码{
变量地址:地址
var shippingAddress:地址
枚举编码键:字符串,编码键{
案例地址,shippingAddress=“发货地址”
}
}
结构有效负载:可编码{
var持卡人:持卡人
}
...
让addressDetails=地址(城市:self.newCity!、州:self.newState!、街道:self.newStreet!、zipCode:self.newZipcode!、单位:self.newUnit==“”?无:self.newUnit)
let shippingDetails=地址(城市:self.newCity!、州:self.newState!、街道:self.newStreet!、zipCode:self.newZipcode!、单位:self.newUnit==“”?无:self.newUnit)
var测试=有效载荷(持卡人:持卡人(地址:addressDetails,shippingAddress:shippingDetails))

在使用JSON和Swift时,应始终尝试将
Codable
与适当的结构一起使用。它比尝试处理原始集装箱更简单、更可靠。
装运地址是
持卡人的属性
-您需要将该键/值添加到与
持卡人相关的字典中