如何将Raw Json传递给Swift中的post请求?

时间:2015-03-27 06:58:30

标签: objective-c swift

嗨,我是新来的,请饶恕我。

我需要发布到特定的API,但api不是key value的粉丝,api期望raw json作为发布数据

我使用此库here发帖请求。

这是我的代码

func postItem(itemname: String, itemnumber: Int, itemcode:String, url:String, baseURL:String, completion: (result: Dictionary<String, AnyObject>) -> ()){
        var dict: Dictionary<String, AnyObject>!


        var params: Dictionary<String,AnyObject> =  ["parentItem": ["itemname":itemname,"itemnumber":itemnumber,"itemcode":code]]
        let data = NSJSONSerialization.dataWithJSONObject(params, options: NSJSONWritingOptions.PrettyPrinted, error: nil)
        let string = NSString(data: data!, encoding: NSUTF8StringEncoding)

        var request = HTTPTask()
        request.requestSerializer = JSONRequestSerializer()
        request.requestSerializer.headers[headerKey] = getToken() //example of adding a header value


        request.POST(url, parameters: params, success: {(response: HTTPResponse) in

            if response.responseObject != nil {
                let data = response.responseObject as NSData
                var error: NSError?
                dict = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &error) as Dictionary<String, AnyObject>;

                completion(result: dict)
            }

            },failure: {(error: NSError, response: HTTPResponse?) in
                dict = ["error" : "error" ]
                completion(result: dict)

        })

    }

我需要在api中传递这种原始json

例如。 {"parentItem": {"itemname":"Cocoa","itemnumber":123,"itemcode":"cocoa-12-A"}}

但是当我打印我的params因为它是字典时会生成类似

的内容
["parentItem": ["itemname"="Cocoa"; "itemnumber"=123; "itemcode"="cocoa-12-A"]]

我无法将params转换为JSON,因为我正在使用的库正在使用字典,而且我很难创建自己的类。

有谁可以帮助我?任何意见和建议都可以。提前谢谢。

1 个答案:

答案 0 :(得分:1)

为什么不使用Alamofire框架?它非常好并发送标准的json