2016-03-10 51 views
0

可以任何人建议我如何删除“{”{\ n“在发送请求之前。我的API不接受我的参数值的鳕鱼张贴像{'{\ n键:值}:‘’}如何删除额外{大括号在json字符串中快速

这里我的示例代码:

let configuration = NSURLSessionConfiguration .defaultSessionConfiguration() 
    let session = NSURLSession(configuration: configuration) 

    self.profieImage = UIImage(named: "calendar.png") 

    let imageData = UIImageJPEGRepresentation(self.profieImage, 1) 

    let params = ["fname":"Martin","lname":"Raj","gender":"Male","dob":"1997-9-14","email":"[email protected]","mobileNumber":"00000","pancard":"vvvv","profileImg":imageData!] as Dictionary! 

    let jsonData = try! NSJSONSerialization.dataWithJSONObject(params, options: NSJSONWritingOptions.PrettyPrinted) 

    let theJSONText = NSString(data: jsonData,encoding: NSASCIIStringEncoding) 
    print("JSON string = \(theJSONText!)") 


    let urlString = NSString(format:"http://my.api.call"); 
    print("url string is \(urlString)") 
    let request : NSMutableURLRequest = NSMutableURLRequest() 
    request.URL = NSURL(string: NSString(format: "%@", urlString)as String) 
    request.HTTPMethod = "POST" 
    request.timeoutInterval = 30 
    request.addValue("mobile", forHTTPHeaderField: "true") 
    request.addValue("token", forHTTPHeaderField: "") 
    request.HTTPBody = theJSONText!.dataUsingEncoding(NSUTF8StringEncoding) 



    let dataTask = session.dataTaskWithRequest(request) 
     { 
      (let data: NSData?, let response: NSURLResponse?, let error: NSError?) -> Void in 
      // 1: Check HTTP Response for successful GET request 
      guard let httpResponse = response as? NSHTTPURLResponse, receivedData = data 
       else { 
        print("error: not a valid http response") 
        return 
      } 

      switch (httpResponse.statusCode){ 
      case 200: 
       let response = NSString (data: receivedData, encoding: NSUTF8StringEncoding) 

       print("response==\(response)") 

       default: 
       break 
      }  
    } 

我的后台日志打印此声明:

{ '{\n "dob" : "1997",\n "validatedId" : "sdfdfdf",\n "pancard" : "rrrrr",\n "email" : "[email protected]",\n "sameGender" : "1",\n "profileImg" : "mobileNumber" : "123",\n "fname" : "Martin"\n}': '' } 

,但我必须在此位置信息发送值这样

{ 
"dob" : "1997", 
"validatedId" : "dfdsfdsf", 
"pancard" : "vvvvv", 
"email" : "[email protected]", 
"sameGender" : "1" 
} 
+1

您必须通过电话联系您的后端团队才能获得正确的json响应,而不是从您身边移除。这是后端Web服务开发者的错误。你也可以使用这个测试json:http://jsonlint.com/ –

+0

感谢你的回复,但是你能否告诉我输入正确的方式 – user3458924

+0

而且兄弟我的后端是亚马逊,所以他们不会改变条件 – user3458924

回答

0

let params = ["fname":"Martin","lname":"Raj","gender":"Male","dob":"1997-9-14","email":"[email protected]","mobileNumber":"00000","pancard":"vvvv","profileImg":imageData!] as Dictionary! 

用不着这个

let jsonData = try! NSJSONSerialization.dataWithJSONObject(params, options: NSJSONWritingOptions.PrettyPrinted) 

let theJSONText = NSString(data: jsonData,encoding: NSASCIIStringEncoding) 
print("JSON string = \(theJSONText!)") 

原因已经你creted的dictioanry,并再次要转换为新的JSON字符串,使您得到合并的字典,使用单字典的理由是足够或使用字符串和你的字符串

使用直接转换成JSON字符串像

let params = ["fname":"Martin","lname":"Raj","gender":"Male","dob":"1997-9-14","email":"[email protected]","mobileNumber":"00000","pancard":"vvvv","profileImg":imageData!] as Dictionary! 
request.HTTPMethod = "POST" 
request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type") 
var err: NSError? 
request.HTTPBody = NSJSONSerialization.dataWithJSONObject(params, options: NSJSONWritingOptions.allZeros, error: &err) 
+0

原因你创造另一个JSOn字符串,而不是params,' –

+0

感谢兄弟工作正常,但另一个疑问如何将图像转换为文件类型 – user3458924