使用 alamofire 发布带有字典和字典数组的 JSON 对象

Posted

技术标签:

【中文标题】使用 alamofire 发布带有字典和字典数组的 JSON 对象【英文标题】:post JSON object with a dictionary and an array of dictionaries using alamofire 【发布时间】:2017-03-28 17:51:28 【问题描述】:

我正在尝试像这样发布一个对象:


  "simulation" :  ,
  "simOptions" : [
     ,
     
  ]

并尝试通过调用我的 SimulationRepository 类来发布它:

SimulationsRepository().confirmSimulation(params: parameters)  (response) in
  if let error = checkError(response) 
    self.hideLoading()
    self.showAlert(error)
    return
  

  guard let simsArray = SimulacaoArray(responseObject: response.result.value) else         
    let error = response.error.debugDescription      
    self.hideLoading()
    self.showAlert(error)        
    return
  

  print(simsArray.simulation.count)

我已经尝试过Sending json array via Alamofire 和Alamofire: Send JSON with Array of Dictionaries 的解决方案,但无法正确转换字典数组。

【问题讨论】:

不是真的,因为我需要发布一个字典数组...我可以 GET 就好了。 然后在这里检查:github.com/Alamofire/…,或重复:***.com/questions/36204198/… 或***.com/questions/30394112/… 或查找更多google.se/…*。请确保在提问之前搜索问题。总帐 谢谢,但我已经解决了所有这些问题,这些解决方案都不适合我...... *** 是我的“最后手段”而不是第一个。假设我没有这样做,你太自以为是了。 编辑您的问题并更新它,说明您已阅读文档和副本以及为什么它们对您没有帮助以及您的情况有何不同,那么没有人需要自以为是。您需要至少提出问题以及您尝试过的解决方案、遇到的错误。不要让人们阅读您粘贴的代码并自动猜测您运行它时会发生什么。在这里查看:***.com/help/how-to-ask 这至少会给你一个更高的机会来获得答案。祝你好运。编辑:我收回了重复的标志。 好的,谢谢你的提示...我会这样做的! 【参考方案1】:

好的,我已经通过映射模拟商品数组并将其转换为字典来解决,如下所示:

class SimulationsRepository: BaseRepository 

  init() 
    super.init(url: "/Simulations")
    super.BaseUrl = "http://0.0.0.0:3000/api"
  

  func confirmSimulation(simulation: Simulation, goods: [SimulatedGoods], then: @escaping ThenBlock) 
    let goodsDict = goods.map  (simulatedGoods) -> [String: Any] in
      return simulatedGoods.toDictionary()
    
    let sim = simulation.toDictionary()

    let params: [String: Any] = [
      "simulation": sim,
      "goods": goodsDict
    ]
    super.customPost("/confirm", parameters: params, then: then)
  


顺便说一句,我从书中得到了这样映射数组的想法:https://www.hackingwithswift.com/store/pro-swift

【讨论】:

以上是关于使用 alamofire 发布带有字典和字典数组的 JSON 对象的主要内容,如果未能解决你的问题,请参考以下文章

Alamofire:发送带有字典数组的 JSON

无法在 Alamofire 多格式数据请求中发送字典数组

如何使用新的 Swift 3 和 Alamofire 解析 JSON(字典和数组)

如何在 swift 3 中使用 Alamofire 制作和发送字典数组(JSON 格式)发送到服务器

从嵌套结构(带有其他结构的数组)创建字典 Swift

在 Swift 中使用 Alamofire 发送包含字典对象数组的字典对象时会发生奇怪的行为?