发送包含数组的数组 json 主体(Alamofire、Swift、iOS)

Posted

技术标签:

【中文标题】发送包含数组的数组 json 主体(Alamofire、Swift、iOS)【英文标题】:Sending array json body with arrays inside of it (Alamofire, Swift, iOS) 【发布时间】:2018-09-24 22:09:54 【问题描述】:

我想将 json 正文发送到我的中间件。起初,它运行良好(注意“tema”和“emailGroup”不是一个数组)。但是在我的后端进行了一些更改之后,我必须发送这种类型的 json

[
    "ID": "",
    "Name": "Artikel BU CE - Visit HoB Topic",
    "ChannelType": 0,
    "PublishDate": "2018-09-21T01:00:00Z",
    "Headline": null,
    "Content": null,
    "EmailSubject": null,
    "EmailUrl": null,
    "Mention": null,
    "PostLink": null,
    "ChannelActivityMobileId": null,
    "HashTag": null,
    "Tema": [
        
            "Value": 6
        
    ],
    "EmailGroup": [
        
            "ID": "2c53ea1f-6ebe-e811-a977-000d3aa00fc2",
            "Name": "TV Broadcast",
            "List_EmailListModels": null
        
    ],
    "ApprovalStatus": 0,
    "ApprovalNote": null,
    "EmployeeId": null,
    "EmployeeLevel": 0
]

这是我的代码

let parameters = [["ID" : "", SerializationKeys.channelMobileId : channel.mobileId, SerializationKeys.name : activity.activityName, "ApprovalStatus" : channel.channelStatus, SerializationKeys.channelType : channel.channelType, SerializationKeys.publish_date : channel.publishDate, SerializationKeys.content : channel.content,  SerializationKeys.emailSubject : channel.emailSubject, SerializationKeys.emailURL : channel.emailURL, SerializationKeys.hashtag : channel.hastag, SerializationKeys.mention : channel.mention, SerializationKeys.note : channel.note, SerializationKeys.postLink : channel.postLink, SerializationKeys.tema : [tema]] as [[String : Any]]

主题在哪里

var tema = [String : Int]()

我收到一个错误提示

[Any] 不能转换为 '[[String : Any]]';你的意思是用作!强制沮丧?

在我把“as”改成“as!”之后,它说

应为“;”分隔符

分号应该放在“SerializationKeys.tema : [tema]”附近的位置。请帮助我。谢谢

编辑

【问题讨论】:

【参考方案1】:

我认为你错误地添加了 ] 附近

, SerializationKeys.postLink : channel.postLink],

你可能想要这个

let parameters:[[String:Any]] = [["ID" : "",
                   SerializationKeys.channelMobileId : channel.mobileId,
                   SerializationKeys.name : activity.activityName,
                  "ApprovalStatus" : channel.channelStatus,
                   SerializationKeys.channelType : channel.channelType,
                   SerializationKeys.publish_date : channel.publishDate, 
                   SerializationKeys.content : channel.content,  
                   SerializationKeys.emailSubject : channel.emailSubject,
                   SerializationKeys.emailURL : channel.emailURL,
                   SerializationKeys.hashtag : channel.hastag, 
                   SerializationKeys.mention : channel.mention, 
                   SerializationKeys.note : channel.note, 
                   SerializationKeys.postLink : channel.postLink,
                   SerializationKeys.tema : [tema]
               ]]

注意:我强烈建议您将Codablestruct 模型一起用于您的案例

【讨论】:

您好,感谢您发现我的错误。无论如何,我仍然收到错误“预期”;“分隔符”。可以给我代码吗? 您能否在出现错误时截屏并临时附加有问题的然后删除它 看看我更新的问题。另一个词是“变量在它自己的初始值内” 之前有 3 个 ]]] 而不是 2 个 ]]

以上是关于发送包含数组的数组 json 主体(Alamofire、Swift、iOS)的主要内容,如果未能解决你的问题,请参考以下文章

带有包含数组的 Json 的 C# POST 请求

通过 Alamofire 发送 json 数组

发送 JSON 数组作为参数 Alamofire

如何将值输入到 Gatling 的 json 数组中的字段中?

如何在邮递员中发送包含数组列表的对象

如何在 Swift 3 中使用 Alamofire 在 POST 请求中将给定的 JSON 作为参数发送?