ios - Swift Dictionary 在键后为 [String] 类型的值添加方括号

标签 ios swift dictionary alamofire

我有一个序列化程序方法,可以将我的 swift 对象转换为字典,以便我可以在 http 请求中发送它们。

这个特殊的方法是给我带来问题的方法

class func toDictionary ( _ order: Order ) -> Dictionary<String, Any> {
    return [
        "products" : NSArray(array:order.getProducts()),
        "owning_user" : NSString(string: order.getOwningUser()),
        "restaurant" : NSString(string: order.getRestaurantId())
    ]
}

order.getProducts() 返回一个 [String] 类型的数组

当我在 http 请求中发送它时,它被发送为

{"products[]":["...","..."],
 "restaurant":"sdfsdf"
}

显然,我的服务器期望产品作为键,因此它没有获得正确的值。

知道为什么要添加方括号吗?

注意:

我的 http 请求是通过 alamofire 完成的

编辑:

原来是 alamofire 的问题

请看下面的解决方案

最佳答案

事实证明,当将字典作为 httpBody 传递时,这是一个与 alamofire 编码有关的问题。

遇到同样问题的人:

通过将以下属性添加到您的 Alamofire 发布请求来解决此问题

encoing: JSONEncoding.default

最终请求如下所示

Alamofire.request( requestURL, method: .post, parameters: orderJson, encoding: JSONEncoding.default)

它会生成以下正在发布的 JSON

{ restaurant: '580e33ee65b84973ffbc7beb',
  products: [ '580f5cdafaa1067e55be696d' ],
  owning_user: '580e2d174e93b0734e9a04cb'
}

正如我最初想要的那样。

关于ios - Swift Dictionary 在键后为 [String] 类型的值添加方括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40725926/

相关文章:

javascript - React - 仅切换一个按钮,而不是全部

javascript - 如何在 swift 4 的 WKWebView 中从网页中删除 DIV 标签?

swift - 如何为 swift 字典实现观察者模式

ios - 如何在ios中点击手机附件时获取数据

swift - 如何快速添加/更新字典中的键/值?

python - 如何将Python列表中的数据聚合到字典中?

ios - 是否可以以编程方式启用 airplay 镜像?

ios - UIToolbar精确尺寸

iphone - 子对象初始化为父对象

swift - 我正在使用导入的日历,但不确定如何使用其功能之一(链接到下面的读我文件)