2017-07-20 4 views
2

Ich habe gerade Stunden damit verbracht zu versuchen zu verstehen, wie ein JSON funktioniert. Ich gebe auf, könnt ihr mir helfen?swift 3.0 Abfrage in JSON Suchwert Return-Paar zugeordnet

Hier ist was ich brauche. Ich habe eine lokale JSON, die wie folgt aussieht:

[ 
    { 
     "partnumber": "1", 
     "description": "part#1" 
    }, 
    { 
     "partnumber": "2", 
     "description": "part#2" 
    }, 
    { 
     "partnumber": "3", 
     "description": "part#3" 
    } 
] 

und ich versuche, eine Abfrage zu diesem JSON senden, wenn textfield.text ="1" den Wert der Beschreibung zurück.

kann ich die Datei öffnen und es analysieren, aber ich bin es

private func readJson() { 
     do { 
      if let file = Bundle.main.url(forResource: "convertcsv", withExtension: "json") { 
       let data = try Data(contentsOf: file) 
       let json = try JSONSerialization.jsonObject(with: data, options: []) 
       if let object = json as? [Any] { 

       // what to do here ??????????? 
       print(object) 

       } else { 
        print("JSON is invalid") 
       } 
      } else { 
       print("no file") 
      } 
     } catch { 
      print(error.localizedDescription) 
     } 
    } 

Ich habe gesehen, fest, dass wir die JSON filtern können, wäre es in diesem Fall arbeiten, oder müssen wir eine Schleife verwenden?

Antwort

0

Sieht aus wie nur Ihre JSON-Strings enthält, so sollte dies funktioniert:

private func readJson() { 
    do { 
     if let file = Bundle.main.url(forResource: "test", withExtension: "json") { 
      let data = try Data(contentsOf: file) 

      if let jsonResult = try JSONSerialization.jsonObject(with: data, options: []) as? [[String:String]] { 

       for array in jsonResult { 
        if array["partnumber"] == "1" { 
         print(array["description"]) // part#1 
        } 
       } 
      } else { 
       print("JSON is invalid") 
      } 
     } else { 
      print("no file") 
     } 
    } catch { 
     print(error.localizedDescription) 
    } 
} 

Wahrscheinlich nicht der sauberste Weg, es zu tun, Sie könnten einige Bibliothek verwenden möchten (SwiftyJSON ...)

+0

Danke TagTaco, das war einfacher als ich dachte !! – Julien7377