当前位置: 首页 > 面试题库 >

Alamofire:使用字典数组发送JSON

曾典
2023-03-14
问题内容

我有一个在JSON中看起来像这样的数据结构:

[{
    "value": "1",
    "optionId": "be69fa23-6eca-4e1b-8c78-c01daaa43c88"
}, {
    "value": "0",
    "optionId": "f75da6a9-a34c-4ff6-8070-0d27792073df"
}]

基本上,它是一个字典数组。我宁愿使用默认的Alamofire方法,也不想手动构建请求。有没有办法给Alamofire提供我的参数,其余的Alamofire可以吗?

如果我手动创建所有内容,则会从服务器收到错误消息,提示发送数据不正确。

    var parameters = [[String:AnyObject]]()

    for votingOption in votingOptions{

        let type = votingOption.votingHeaders.first?.type

        let parameter = ["optionId":votingOption.optionID,
            "value": votingOption.votingBoolValue
        ]
        parameters.append(parameter)
    }

    let jsonData = try! NSJSONSerialization.dataWithJSONObject(parameters, options: [])
    let json = try! NSJSONSerialization.JSONObjectWithData(jsonData, options: .AllowFragments)


    if let url = NSURL(string:"myprivateurl"){
        let request = NSMutableURLRequest(URL: url)
        request.setValue("application/json", forHTTPHeaderField: "Content-Type")
        request.HTTPMethod = Method.POST.rawValue
        request.HTTPBody = try! NSJSONSerialization.dataWithJSONObject(parameters, options: [])

        AlamofireManager.Configured.request(request)
            .responseJSON { response in
           //Handle result     
        }
    }

问题答案:

您可以执行以下操作:

Alamofire.request(.POST, urlPath, parameters: params).responseJSON{ request, response, data in
    //YOUR_CODE
}

哪里parameters[String:AnyObject]和是Alamofire负责剩下的照顾。

由于您似乎正在使用经理,因此可以执行此操作

YOUR_ALAMOFIRE_MANAGER.request(.POST, url, parameters: params).responseJSON{ request, response, JSON in
   //enter code here
}

这是源代码:

public func request(
    method: Method,
    _ URLString: URLStringConvertible,
    parameters: [String: AnyObject]? = nil,
    encoding: ParameterEncoding = .URL,
    headers: [String: String]? = nil)
    -> Request
{
    let mutableURLRequest = URLRequest(method, URLString, headers: headers)
    let encodedURLRequest = encoding.encode(mutableURLRequest, parameters: parameters).0
    return request(encodedURLRequest)
}

编辑:

由于您的数据是当前数据[[String:AnyObject]],因此您需要对其进行修改,使其形式为[String:AnyObject]。我可以这样做的一种方式是这样做["data":[[String:AnyObject]]]。不过,您可能必须更改api端点。



 类似资料:
  • 问题内容: 我想知道是否可以在POST请求中直接发送一个数组(未包装在字典中)。显然,该参数应获取以下内容的映射:[String:AnyObject]?但我希望能够发送以下示例json: 问题答案: 您可以使用JSON进行编码,然后自行构建。例如,在Swift 3中:

  • 问题内容: 我是使用Swift语言进行iOS开发的初学者。我有一个包含以下数据的JSON文件。 我想解析此文件,并且必须返回包含JSON文件中数据的字典。这是我写的方法。 当我修改此方法以返回字典时,它总是返回nil。如何修改此方法。 问题答案: 您不能执行异步任务。您必须改用回调。 添加这样的回调: 解析器方法签名: 并在您要“返回”的数据可用的地方调用补全: 现在,您可以将此方法与结尾的闭包一

  • 问题内容: 我有一个非常长的数组和字符串,我想通过Alamofire发送,尽管我不知道如何将原始JSON作为参数发送。JSON看起来有点像 除了让它表现得像Swift数组然后进行序列化外,还有什么方法可以将这个JSON作为Alamofire中的参数传递? 谢谢! 编辑: 我能够在文本编辑器中发挥一些魔力来获取以Swift数组样式设置的参数(如所示),因此根据Eric的建议,将和制作成Diction

  • 问题内容: 我在活动A中有一个整数数组: 而且我想将该变量发送到活动B,所以我创建了一个新意图并使用putExtra方法: 在活动BI中获取信息: 但这不是真正发送数组,我只是在arrayB上获得了值“ 0”。我一直在寻找一些例子,但没有发现任何事。 问题答案: 你正在使用数组设置额外内容。然后,你尝试获取单个int。 你的代码应为:

  • 问题内容: 我在获取想要在JSON文件中的数据时遇到了一些麻烦。这是控制台输出的简化版本: 我正在尝试使用内置的JSON解析库来解析文件。这是我的方法中的解析器 : 我想将货币代码(如)与货币词典中包含的其他一些数据一起存储,但是现在我的应用崩溃了。错误代码: 似乎没有任何对象添加到 救命? 编辑:获取键以显示适当的数据填充其他字段显示: 问题答案: 您的数据不包含任何数组,而是所有字典,请尝试上

  • 我尝试使用(version4.0)调用api来提交一些数据。我想请求已经成功了。但我遇到的麻烦是,当进行调用时,我从服务器得到一个0字节失败的响应。 我已经尝试了StackOverflow上当前的许多解决方案,但找不到解决方案。谢谢你的帮助。 以下是我的设置: