2017-02-08 3 views
1

Derzeit lernen Swift und ich bin neu zu analysieren von json. Ich versuche, Json mit Alamofire mit Swift 3 zu analysieren. Allerdings bekomme ich keine Antwort. Wie soll ich den Wert von Parameter1 oder 2, die verschachtelt wurden, bekommen? Mein json wie folgt aussieht:Nicht möglich, Json mit Alamofire mit Verschlüssen zu analysieren

{ "data":{ 
    "level1":{ 
    "level2":{ 
     "parameter1":"000000", 
     "parameter2":"00/00/00 00:00:00", 
     "parameter3":"00.0", 
    } 

Mein SWIFT-Code wie folgt aussieht,

func downloadDataDetails(completed: @escaping DownloadComplete) { 
    //Get data from URL 
    Alamofire.request("MY_URL").responseJSON { response in 
     let result = response.result 

     if let dict = result.value as? Dictionary<String , AnyObject> { 
      if let data = dict["data"] as? String { 
       if let level1 = dict["level1"] as? String { 
        if let level2 = dict["level2"] as? String? { 
         self._myValue = level2 
        } 
       } 
      } 
     } 
     completed() 
    } 

Antwort

1

ich Ihnen empfehlen, die SwiftJson (https://cocoapods.org/pods/SwiftyJSON)

verwenden, wenn Sie, dass etwas validieren müssen existieren Sie kann .exist() (gibt einen booleschen Wert zurück)

func test() { 
     let json: JSON = [ "data":[ 
      "level1":[ 
       "level2":[ 
        "parameter1":"000000", 
        "parameter2":"00/00/00 00:00:00", 
        "parameter3":"00.0" 
       ] 
      ] 
      ] 
      ] 
      print(json) //Create a breakpoint here 
    } 

Wenn Sie diese JSON und Sie müssen wissen, ob parameter1 existieren:

(einen Haltepunkt in Druck Put (json))

(in der Konsole) (LLDB) po json["data"]["level1"]["level2"]["parameter1"].exists() // response true

In der Code wäre:

if json["data"]["level1"]["level2"]["parameter1"].exists(){ 

     } 

Wenn Sie den Wert wäre bekommen müssen:

if json["data"]["level1"]["level2"]["parameter1"].exists(){ 

      let parameter1 = json["data"]["level1"]["level2"]["parameter1"] 
      print(parameter1) 
     } 

Komplettes Beispiel:

func test() { 
     let json: JSON = [ "data":[ 
      "level1":[ 
       "level2":[ 
        "parameter1":"000000", 
        "parameter2":"00/00/00 00:00:00", 
        "parameter3":"00.0" 
       ] 
      ] 
      ] 
      ] 
     if json["data"]["level1"]["level2"]["parameter1"].exists(){ 

      let parameter1 = json["data"]["level1"]["level2"]["parameter1"] 
      print(parameter1) 
     } 
      print(json["parameter1"]) 
    } 

Das Konsolenprotokoll ist:

000000 
{ 
    "data" : { 
    "level1" : { 
     "level2" : { 
     "parameter1" : "000000", 
     "parameter3" : "00.0", 
     "parameter2" : "00\/00\/00 00:00:00" 
     } 
    } 
    } 
} 
Verwandte Themen