字典值被交换

时间:2017-08-07 08:36:28

标签: ios json swift nsdictionary

我需要将输入json传递为 -

[{"QuestionId":77,"OptionId":297}]

但是,当我执行array.append(dict)时,我得到的数组是包含反转顺序的键值的字典。

[["OptionId": 297, "QuestionId": 77]]

" OptionId"和#34; QuestionId"似乎交换了这个位置。请允许任何人纠正我这个问题。

在调用webservice时,我还需要传递一个json作为输入参数。我是用alamofire做的。我的json输入为 - [{" QuestionId":77," OptionId":297},{" QuestionId":78," OptionId&#34 ;:304}] 我怎样才能做到这一点? 我试过了 func callPostAnswersAPI(参数:Array>){

    var request = URLRequest(url: URL(string: "http://192.168.1.56/OnlineExamPortal/api/Question/PostAnswer")!)        
    request.httpBody = try! JSONSerialization.data(withJSONObject: parameters, options: .prettyPrinted)
    let str = String(data: request.httpBody!, encoding: String.Encoding.utf8)      
    Alamofire.request(str!)
        .responseJSON { response in
            switch response.result {
            case .failure(let error):
                print(error)

                if let data = response.data, let responseString = String(data: data, encoding: .utf8) {
                    print(responseString)
                }
            case .success(let responseObject):
                print(responseObject)
            }
    }

}

at print(str!)我得到了正确的json格式,但是在将它传递给alamofire.request后,它会添加反斜杠。因此,响应进入.failure循环。 我遵循了正确的程序吗?

2 个答案:

答案 0 :(得分:1)

JSON对象在JSON规范中定义为无序集合。

  

对象是一组无序的名称/值对。   (http://json.org/

如果订单对您很重要,那么您应该使用不同的集合类型。

答案 1 :(得分:1)

来自Apple Documentation

  

每个字典都是一组无序的键值对。

它没有订单,因此没有交换。