2016-08-08 25 views
1

Ich habe dieses Problem, wo ich nicht Werte aus JSON-Antwort zugreifen kann,Json mit Swift 2, Extrahieren von Daten

die Antwort: { "Ergebnis": [true]}

und wenn die JSON wird es mit diesem Code

  do{ 

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


       let result:String = json["result"] 

        print(result) 


      }catch { 
       print("Error with Json: \(error)") 
      } 

ich einen Fehler, und das, wenn ich die Debug-tat, sah ich, dass json die folgende

hatte

how json is stored

gibt es sowieso, um auf das Ergebnis von json zuzugreifen? es funktionierte nicht, es als ein Array noch als Wörterbuch zu behandeln

irgendwelche Ideen?

dank

Antwort

1

result ist nicht String es eine Array von Bool (durch die Klammern dargestellt) ist.

Grundsätzlich nicht kommentieren Typen, es sei denn, der Compiler benötigt sie.

Konvertieren Sie den JSON in den richtigen Typ, und verwenden Sie die nativen Schnelltypen von Swift. Es wird auch empfohlen, optionale Bindungen zu verwenden, um unerwartete Abstürze zu vermeiden.

do { 
    if let json = try NSJSONSerialization.JSONObjectWithData(data!, options:.AllowFragments) as? [String:AnyObject], 
      result = json["result"] as? [Bool] where !result.isEmpty { 
     print(result[0]) 
    } 

} catch { 
    print("Error with Json: \(error)") 
} 
+0

Danke, es hat funktioniert! –

0

Versuchen Sie, wie dieses

do{ 

      let json = try NSJSONSerialization.JSONObjectWithData(data!, options:.AllowFragments) as! NSDictionary 
      let result = json["result"] as! NSArray 
       print(result) 

      let boole = result[0]; 

     }catch { 
      print("Error with Json: \(error)") 
     }