2017-11-23 1 views
0

Ich möchte eine Lösung für die Analyse von JSON-Array finden. Es gibt meinen Code zum Parsen von JSON, aber ich möchte eine Lösung, ohne dass ich array analysieren kann.Parsen von JSON-Array ohne für Anweisung

Code zum Parsen:

func parsigJsonData(resultArray:any?){ 

    if let resultArray = resultDic["trucks"] as? BaseModelData { 
     print(resultArray) 
    } 
} 


    class BaseModel { 
public typealias BaseModelData = (id:String?,title:String?,select:Bool) 

     var id : String? 
     var title : String? 
     var select : Bool = false 

     init(json: [String:Any]) { 
     self.id = json["id"] as? String 
     self.title = json["title"] as? String 
     self.select = false 
     } 
    } 
extension BaseModel { 

    var tableRepresentation: [BaseModelData] { 
    return [(id:id,title:title,select:select)] 
    } 
} 

Ergebnis-Array enthält Liste des Basemodel Objekts. Ich versuche diesen Code zum Parsen, aber das funktioniert nicht und Casting zu BaseModelData ist nicht erfolgreich. Wenn es eine Lösung für das Analysieren von JSON-Array ohne for-Anweisung gibt? Vielen Dank für die Lösungen.

ist mein Json Antwort Beispiel:

{ "Fahrzeuge": [{ "id": "1", "title": "\ u062e \ u0627 \ u0648 \ u0631 \ u062a \ u0627 5 \ u062a \ u0646 \ u0627 \ u062a \ u0627 \ u0642 \ u0686 \ u0648 \ u0628 \ u06cc "}, {" id ":" 2" , "Titel": "\ u062e \ u0627 \ u0648 \ u0631 \ u062a \ u0627 5 \ u062a \ u0646 \ u06a9 \ u0645 \ u067e \ u0631 \ u0633 \ u06cc "}, {" id ":" 3" , "Titel": "\ u062e \ u0627 \ u0648 \ u0631 \ u062a \ u0627 8 \ u062a \ u0646 \ u0627 \ u062a \ u0627 \ u0642 \ u0686 \ u0648 \ u0628 \ u06cc "}, {" id ":" 4" , "Titel": "\ u062e \ u0627 \ u0648 \ u0631 \ u062a \ u0627 8 \ u062a \ u0646 \ u06a9 \ u0645 \ u067e \ u0631 \ u0633 \ u06cc "}, {" id ":" 5 "," title ":" \ u062e \ u0627 \ u0648 \ u0631 \ u096cc \ u062e \ u0686 \ u0627 \ u0644 \ u062f \ u02627 \ u0631 "}]

+0

anzeigen JSON-Daten und der gewünschten Ausgabe. – matt

Antwort

0

Swift 4 können Sie ma ke es sehr einfach. Fügen Sie einfach Dekodierbare Protokoll,

struct BaseModel: Codable { 
     var id : String? 
     var title : String? 
     var select : Bool = false 
} 

Und diese Daten abzurufen verwenden:

func makeRequest(completionHandler: @escaping ([BaseModel]?, Error?) -> Void) { 

var urlRequest = URLRequest(url: url) 
request.httpMethod = "GET" 

let task = URLSession.shared.dataTask(with: request as URLRequest){ 
       (data, response, error) in 
       guard let responseData = data else { 
        print("Error: did not receive data") 
        completionHandler(nil, error) 
        return 
       } 
       guard error == nil else { 
        completionHandler(nil, error) 
        return 
       } 

       let decoder = JSONDecoder() 
       do { 
        let dataObject = try decoder.decode([BaseModel].self, from: responseData) 
        completionHandler(dataObject, nil) 
       } catch { 
        print("error trying to convert data to JSON") 
        print(error) 
        completionHandler(nil, error) 
       } 
} 

task.resume() 
} 
+0

Ich habe mein JSON-Ergebnis hinzugefügt. Ich kann Ihren Vorschlagscode verwenden. weil Wert der LKW-Schlüssel eine Reihe des Grundmodells ist. nicht alle Antwortdaten. – ava