2017-07-20 46 views
2

我剛花了幾個小時試圖瞭解JSON的工作原理。我放棄了,你們能幫我嗎?swift 3.0查詢json搜索值返回對關聯

這是我需要的。我有一個本地JSON看起來像這樣:

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

,我試圖發送一個查詢到JSON如果textfield.text ="1"返回描述的價值。

我可以打開該文件,並解析它,但我堅持有

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) 
     } 
    } 

我已經看到,我們可以過濾JSON,它會在這種情況下工作,或者我們必須使用一個循環?

回答

0

看起來你的JSON只包含字符串所以這應該工作:

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) 
    } 
} 

可能不是做最徹底的方法,你可能需要使用一些庫(SwiftyJSON ...)

+0

謝謝TagTaco,這比我想象的容易! – Julien7377