2016-07-07 59 views
1

我有一个问题从HTTP请求获取JSON。 下面我的代码:奇怪的印刷JSON格式

class RestApiManager: NSObject { 
static let sharedInstance = RestApiManager() 

let baseURL = "url/code.php" 

func getParcheggi() { 
    let request = NSMutableURLRequest(URL: NSURL(string: link1)!) 
    request.HTTPMethod = "POST" 
    let postString = ""//id=13&name=Jack 
    request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding) 
    let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { data, response, error in 
     guard error == nil && data != nil else { 
      print("error=\(error)") 
      return 
     } 

     if let httpStatus = response as? NSHTTPURLResponse where httpStatus.statusCode != 200 { 
      print("statusCode should be 200, but is \(httpStatus.statusCode)") 
      print("response = \(response)") 
     } 

     do{ 
      let json = try NSJSONSerialization.JSONObjectWithData(data!, options: .AllowFragments) 
      print(json) //*** HERE I PRINT THE JSON *** 
     }catch{ 

     } 
    } 
    task.resume() 
}} 

这是我恢复的JSON:

{ 
"qk_response_sa" =  { 
    ErroreResult =   { 
     Codice = 0; 
     Messaggio = ok; 
    }; 
    Siti =   (
        { 
      Descrizione = "Quick Morelli"; 
      IDSito = 1; 
      Indirizzo = "Via Morelli 64"; 
      Localita = Napoli; 
      MaxAbb = 5; 
      MaxPre = 5; 
      Provincia = Na; 
     }, 
        { 
      Descrizione = "Quick Linate "; 
      IDSito = 2; 
      Indirizzo = "Viale Corsica angolo via Terenzio 6"; 
      Localita = Milano; 
      MaxAbb = 0; 
      MaxPre = 300; 
      Provincia = MI; 
     }, 
        { 
      Descrizione = "Quick Stazione Centrale "; 
      IDSito = 4; 
      Indirizzo = "Piazza Nazionale snc"; 
      Localita = Napoli; 
      MaxAbb = 0; 
      MaxPre = 150; 
      Provincia = Na; 
     }, 
        { 
      Descrizione = "Quick Buenos Aires "; 
      IDSito = 5; 
      Indirizzo = "Corso Buenos Aires,21"; 
      Localita = Milano; 
      MaxAbb = 0; 
      MaxPre = 50; 
      Provincia = MI; 
     }, 
        { 
      Descrizione = "Quick Lodi "; 
      IDSito = 6; 
      Indirizzo = "Via Giovanni Balilla Magistri "; 
      Localita = Milano; 
      MaxAbb = 0; 
      MaxPre = 150; 
      Provincia = MI; 
     }, 
        { 
      Descrizione = "Quick Sempione "; 
      IDSito = 7; 
      Indirizzo = "Via Corleone,7 "; 
      Localita = Milano; 
      MaxAbb = 0; 
      MaxPre = 150; 
      Provincia = MI; 
     }, 
        { 
      Descrizione = "Quick Palmanova"; 
      IDSito = 8; 
      Indirizzo = "Via Benadir, 1"; 
      Localita = Milano; 
      MaxAbb = 0; 
      MaxPre = 150; 
      Provincia = MI; 
     }, 
        { 
      Descrizione = "Quick Porta Capuana"; 
      IDSito = 9; 
      Indirizzo = "Piazza San Francesco"; 
      Localita = Napoli; 
      MaxAbb = 0; 
      MaxPre = 80; 
      Provincia = Na; 
     }, 
        { 
      Descrizione = "Quick San Paolo"; 
      IDSito = 11; 
      Indirizzo = "Via Cinthia"; 
      Localita = Napoli; 
      MaxAbb = 0; 
      MaxPre = 0; 
      Provincia = Na; 
     }, 
        { 
      Descrizione = "Quick Porta di Massa"; 
      IDSito = 12; 
      Indirizzo = "Vico degli scoppettieri 47"; 
      Localita = Napoli; 
      MaxAbb = 0; 
      MaxPre = 0; 
      Provincia = NA; 
     }, 
        { 
      Descrizione = "Quick Policlinico"; 
      IDSito = 13; 
      Indirizzo = "Via Zaccherini Alvisi 12"; 
      Localita = Bologna; 
      MaxAbb = 0; 
      MaxPre = 100; 
      Provincia = Bo; 
     }, 
        { 
      Descrizione = "Quick Washington"; 
      IDSito = 14; 
      Indirizzo = "Via Digione, 5"; 
      Localita = Milano; 
      MaxAbb = 0; 
      MaxPre = 100; 
      Provincia = Mi; 
     }, 
        { 
      Descrizione = "Quick Mondadori"; 
      IDSito = 15; 
      Indirizzo = "Largo di Porta Pradella"; 
      Localita = Mantova; 
      MaxAbb = 0; 
      MaxPre = 100; 
      Provincia = Mn; 
     }, 
        { 
      Descrizione = "Quick Mercato"; 
      IDSito = 16; 
      Indirizzo = "Piazza Matteotti"; 
      Localita = Caserta; 
      MaxAbb = 0; 
      MaxPre = 100; 
      Provincia = Ce; 
     }, 
        { 
      Descrizione = "Quick Garage Centrale"; 
      IDSito = 17; 
      Indirizzo = "Via dei Fossi 507r"; 
      Localita = Firenze; 
      MaxAbb = 0; 
      MaxPre = 50; 
      Provincia = Fi; 
     }, 
        { 
      Descrizione = "Quick Aeroporto Palermo "; 
      IDSito = 19; 
      Indirizzo = "Aeroporto Falcone e Borsellino - Cinisi "; 
      Localita = "Palermo "; 
      MaxAbb = 0; 
      MaxPre = 180; 
      Provincia = Pa; 
     }, 
        { 
      Descrizione = "Quick Aeroporto Brindisi"; 
      IDSito = 20; 
      Indirizzo = "Contrada Baroncino, 11/A"; 
      Localita = Brindisi; 
      MaxAbb = 0; 
      MaxPre = 70; 
      Provincia = BR; 
     }, 
        { 
      Descrizione = "Quick Mostra Via Terracina "; 
      IDSito = 22; 
      Indirizzo = "Via Terracina, 197 "; 
      Localita = "Napoli "; 
      MaxAbb = 0; 
      MaxPre = 300; 
      Provincia = Na; 
     }, 
        { 
      Descrizione = "Quick San Francesco Bari "; 
      IDSito = 23; 
      Indirizzo = "Via trevisani,54 A "; 
      Localita = "Bari "; 
      MaxAbb = 0; 
      MaxPre = 150; 
      Provincia = Ba; 
     }, 
        { 
      Descrizione = "Quick Mostra Viale Kennedy "; 
      IDSito = 24; 
      Indirizzo = "Viale Kennedy, 54 "; 
      Localita = "Napoli "; 
      MaxAbb = 0; 
      MaxPre = 50; 
      Provincia = NA; 
     }, 
        { 
      Descrizione = "Quick Ospedale Mazzoni -Ascoli Piceno "; 
      IDSito = 25; 
      Indirizzo = "Via Salaria Inferiore "; 
      Localita = "Ascoli Piceno "; 
      MaxAbb = 0; 
      MaxPre = 60; 
      Provincia = AP; 
     }, 
        { 
      Descrizione = "Quick Centro Happio - Roma "; 
      IDSito = 26; 
      Indirizzo = "Via Cesare Baronio 21-23"; 
      Localita = "Roma "; 
      MaxAbb = 0; 
      MaxPre = 100; 
      Provincia = RM; 
     }, 
        { 
      Descrizione = "Quick Bonola - Milano "; 
      IDSito = 27; 
      Indirizzo = "Via Quarenghi n\U00b0 23 "; 
      Localita = "Milano "; 
      MaxAbb = 0; 
      MaxPre = 150; 
      Provincia = MI; 
     }, 
        { 
      Descrizione = "Quick Aeroporto Verona Sky Parking "; 
      IDSito = 28; 
      Indirizzo = "Via Monte Baldo, 14 - Dossobuono di Villafranca "; 
      Localita = "Verona "; 
      MaxAbb = 0; 
      MaxPre = 100; 
      Provincia = VR; 
     }, 
        { 
      Descrizione = "Quick Yes Parking Aeroporto Milano Malpensa"; 
      IDSito = 29; 
      Indirizzo = "Via Giusti n\U00b0101 - Somma Lombardo (VA)"; 
      Localita = "Milano "; 
      MaxAbb = 0; 
      MaxPre = 600; 
      Provincia = MI; 
     }, 
        { 
      Descrizione = "Sede Napoli"; 
      IDSito = 30; 
      Indirizzo = "Via "; 
      Localita = Napoli; 
      MaxAbb = 0; 
      MaxPre = 0; 
      Provincia = NA; 
     }, 
        { 
      Descrizione = "Sede Milano"; 
      IDSito = 31; 
      Indirizzo = ""; 
      Localita = Milano; 
      MaxAbb = 0; 
      MaxPre = 0; 
      Provincia = MI; 
     } 
    ); 
};} 

为什么我有这种类型的JSON的,而不是一个标准:

{"employees":[{"firstName":"John", "lastName":"Doe"},{"firstName":"Anna", "lastName":"Smith"},{"firstName":"Peter", "lastName"enter code here:"Jones"}]} 

如果我用JSON阅读器在线尝试以正确的方式显示它...

回答

2

因为不打印JSON字符串,要打印的

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

其结果是AnyObject类型。

如果你想看到你的JSON文本,使与数据的字符串:

if let stringJSON = String(data: data!, encoding: NSUTF8StringEncoding) { 
    print(stringJSON) 
} 
0

NSJSONSerialization.JSONObjectWithData返回映射为所有元素的对象:如果你想使用

JSON Array -> NSArray 
JSON Object -> NSDictionary 
JSON Number -> NSNumber (containing number) 
JSON String -> NSString 
JSON Boolean -> NSNumber (containing boolean) 
JSON Null -> NSNull 

从URL中检索的内容,您需要将结果数据转换为一些可以用Swift处理的对象,因此NSJSONSerialization.JSONObjectWithData已经为您完成了。

你可以使用输出json到一些适当的类型,在你的案例,字典。

看到您可以通过在您的print(json)后添加此代码获得什么。

let jsonDict = json as! [String: AnyObject] 
    print(jsonDict["qk_response_sa"])