2016-11-06 2 views
0

Ich versuche, einen JSON von einem Server zu bekommen und deserialisieren, aber ich probeile Sonelas mit unausgeführten Steuerzeichen. Mein Code ist wie folgt ...swift Unescaped Steuerzeichen

let urlFinal = "http://000.0000.000.000:8080" 
     let jsonUrl = urlFinal 
     let session = NSURLSession.sharedSession() 
     let shotsUrl = NSURL(string: jsonUrl) 

     let task = session.dataTaskWithURL(shotsUrl!) {data, response, error in 
      guard data != nil else { 
       falha() 
       return 
      } 

      //let json = JSON(data: data!) 
      //print(json["ServicoCliente"][0]["id"]) 

      do { 
       let jsonData = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) 
       let J = jsonData as! NSDictionary 
       print(jsonData) 
       let us = J["ServicoCliente"] 
       print(us) 
       dispatch_async(dispatch_get_main_queue(),{ 
        sucesso() 
       }); 
      } catch _ { 
       falha() 
      } 
     } 
     task.resume() 

und ich habe auch versucht, dies mit Alamofire 3.0:

Alamofire.request(.GET, "http://000.000.000.000/", parameters: nil) 
    .responseJSON { response in 
     debugPrint(response)  // prints detailed description of all response properties 

     print(response.request) // original URL request 
     print(response.response) // URL response 
     print(response.data)  // server data 
     print(response.result) // result of response serialization 

     if let JSON = response.result.value { 
      print("JSON: \(JSON)") 
     } 
} 

Und diesen Fehler:

Unescaped control character around character 263

Wie kann ich Zeichen entfernen, ohne Flucht?

Ich benutze X-Kodex 7.3.1 und Swift 2.3

UPDATE: Json

{"ServicoCliente":[{"id":"195","cliente":"247","enderecoFavoritos":"48","servicoProfissional":"194","ind_estado_cliente":"A","ind_estado_profissional":"","profissional_id":"240","profissional_nome":"PetMax","servicotipo_nome":"Petshop","servicosubtipo_nome":"Tosa ","dta_inc_alt":"2016-11-05 22:56:19.333","ind_finalizado":"N"}]} 
+0

Ich denke, dass Ihr JSON nicht gültig ist, versuchen Sie, diesen Objc-Code in Swift http://StackOverflow.com/a/11192483/6366256 –

+0

umzuwandeln, bitte fügen Sie hier Ihren JSON-String ein, der uns helfen würde, Ihr Problem zu untersuchen. – Enix

+0

Ich habe mit JSON aktualisiert, aber in einem meiner Tests habe ich den JSON in TextField kopiert und eingefügt und so funktioniert. Ich denke, der Charakter wurde in der Kopie verloren oder automaticamet konvertiert in ein Textfeld @ Enix –

Antwort

2

Um dies zu beheben, müssen Sie die Daten für die Zeichenfolge, entfernen Zeichen umwandeln und konvertieren dann zu dataonly dann deserialisieren

let urlFinal = "http://000.0000.000.000:8080" 
let jsonUrl = urlFinal 
let session = NSURLSession.sharedSession() 
let shotsUrl = NSURL(string: jsonUrl) 

let task = session.dataTaskWithURL(shotsUrl!) {data, response, error in 
guard data != nil else { 
    falha() 
    return 
} 

var dataToString = String(data: data!, encoding: NSUTF8StringEncoding) 
dataToString = stringByRemovingControlCharacters2(dataToString!) 
let ndata = dataToString!.dataUsingEncoding(NSUTF8StringEncoding) 

do { 
    let jsonData = try NSJSONSerialization.JSONObjectWithData(ndata!, options: NSJSONReadingOptions.MutableContainers) 
    let J = jsonData as! NSDictionary 
    print(jsonData) 
    let us = J["ServicoCliente"] 
    print(us) 
    dispatch_async(dispatch_get_main_queue(),{ 
     sucesso() 
    }); 
} catch _ { 
    falha() 
} 
} 
task.resume() 

und fügen Sie die Funktion

func stringByRemovingControlCharacters2(string: String) -> String { 
let controlChars = NSCharacterSet.controlCharacterSet() 
var range = string.rangeOfCharacterFromSet(controlChars) 
var mutable = string 
while let removeRange = range { 
    mutable.removeRange(removeRange) 
    range = mutable.rangeOfCharacterFromSet(controlChars) 
} 

return mutable 
} 
Verwandte Themen