2016-05-12 56 views
0

我有一个tableView与Json和完美的工作,但今天我们更新了我们的JSon,现在不工作。我有这样的问题:NSJSONSerialization - 无法将数据转换为Swift上的字符串

错误使用JSON:错误域= NSCocoaErrorDomain代码= 3840“无法 数据转换成字符串在字符5060” 的UserInfo = {NSDebugDescription =无法将数据转换为字符串周围 字符5060}

我发现这个职位,我想工作,但对象 - NSJSONSerialization - Unable to convert data to string

let requestURL: NSURL = NSURL(string: rutaJSon)! 
    let urlRequest: NSMutableURLRequest = NSMutableURLRequest(URL: requestURL) 
    let session = NSURLSession.sharedSession() 
    let task = session.dataTaskWithRequest(urlRequest) { 
     (data, response, error) -> Void in 

     let httpResponse = response as! NSHTTPURLResponse 
     let statusCode = httpResponse.statusCode 

     if (statusCode == 200) { 
      self.arrayNombre.removeAll() 
      self.arrayTel.removeAll() 
      self.arrayMov.removeAll() 


      do{ 

       let json = try NSJSONSerialization.JSONObjectWithData(data!, options:.AllowFragments) 

       //print(json) 

有人能帮助我?谢谢

+1

你得到的错误是什么?你期待什么反应?你实际得到什么回应? – Scriptable

+0

检查JSON响应,你会发现它正是这条消息告诉你的:字符5060无效。检查编码JSON时服务器上会发生什么,问题在某处,而不在客户端。 – Moritz

+0

如果你真正的问题是关于编码:你为什么服务器改变了它?他们应该回到前一个。如果他们不想要,你可以在请求中加入一个参数来给出想要的编码。如果没有,在上次调用时,可以这样做:NSData将NSString与您的服务器响应编码在一起,然后,将该NSString转换为具有8TF8编码的NSData,然后您可以使用“NSJSONSerialization”。 – Larme

回答

1

看起来你的服务器没有使用正确的JSON编码类型之一。从该文档:

的数据必须在JSON说明书中列出的5个支持的编码之一:UTF-8,UTF-16LE,UTF-16BE,UTF-32LE,UTF-32BE。数据可能有也可能没有BOM。用于解析的最有效的编码是UTF-8,所以如果您有编码传递给此方法的数据的选择,请使用UTF-8。

您的服务器需要正确编码数据。