Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.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
Alamofire是否支持JSON作为有序的值列表进行结构化?参数为[String:Any],仅符合名称/值对的集合_Json_Swift_Alamofire - Fatal编程技术网

Alamofire是否支持JSON作为有序的值列表进行结构化?参数为[String:Any],仅符合名称/值对的集合

Alamofire是否支持JSON作为有序的值列表进行结构化?参数为[String:Any],仅符合名称/值对的集合,json,swift,alamofire,Json,Swift,Alamofire,定义JSON构建在两种结构上: 名称/值对的集合。在各种语言中,这是 实现为对象、记录、结构、字典、哈希表、键控 列表或关联数组 值的有序列表。在大多数语言中,这是作为 数组、向量、列表或序列 我找不到一种方法让Alamofire处理参数为[Any]的post请求,这是我正在使用的端点所需的格式 错误消息实际上有点欺骗,因为它在执行Alamofire.request时声明“在'method'调用中有额外参数”,但实际问题是参数值不一致。Alamofire中名为parameters的参数需要[

定义JSON构建在两种结构上:

  • 名称/值对的集合。在各种语言中,这是 实现为对象、记录、结构、字典、哈希表、键控 列表或关联数组
  • 值的有序列表。在大多数语言中,这是作为 数组、向量、列表或序列
我找不到一种方法让Alamofire处理参数为[Any]的post请求,这是我正在使用的端点所需的格式


错误消息实际上有点欺骗,因为它在执行Alamofire.request时声明“在'method'调用中有额外参数”,但实际问题是参数值不一致。

Alamofire中名为
parameters
的参数需要
[String:Any]
。如果您想通过Alamofire发送
数组
,您可以像这样定义自定义参数编码

struct CustomEncoding: ParameterEncoding {
    var _httpBody: Data?
    func encode(_ urlRequest: Alamofire.URLRequestConvertible, with parameters: Parameters?) throws -> URLRequest {
        var request = try URLEncoding().encode(urlRequest, with: parameters)
        request.setValue("application/json", forHTTPHeaderField: "Content-Type")
        request.httpBody = _httpBody
        return request
    }
}
let body = ... // 'Array' converted to 'Data'
Alamofire.request(...,
                  method: ...,
                  parameters: [:],
                  encoding: CustomEncoding(_httpBody: body),
                  headers: ...)
然后像这样使用它

struct CustomEncoding: ParameterEncoding {
    var _httpBody: Data?
    func encode(_ urlRequest: Alamofire.URLRequestConvertible, with parameters: Parameters?) throws -> URLRequest {
        var request = try URLEncoding().encode(urlRequest, with: parameters)
        request.setValue("application/json", forHTTPHeaderField: "Content-Type")
        request.httpBody = _httpBody
        return request
    }
}
let body = ... // 'Array' converted to 'Data'
Alamofire.request(...,
                  method: ...,
                  parameters: [:],
                  encoding: CustomEncoding(_httpBody: body),
                  headers: ...)

你可以发布一些代码吗?我可以看看你的代码吗?我不认为你可以发送[任何]类型的参数。您需要为[String:Any]创建一个键值对。因此,该值可以通过服务器端的一个键来标识。@Aditya问题是服务器端不需要一个键值对,而是一个有序的值列表。服务器需要[1,2,3,4]},而不是{“numbers”:[1,2,3,4]},这也是一个有效的json。很高兴能为您提供帮助