2015-11-29 89 views
0

我一直在試圖在項目內部使用SwiftyJSON作爲我的虛擬JSON文件。用SwiftyJSON解析json

但我只能得到「空」或「零」,而不是JSON文件中的數據。我可能會在這裏要求一點幫助。

這是我得到的迴應:空 的1名:無製作1 :空

這裏是虛擬JSON文件;

{ 
    "Cars": [ 

     { 
      "Name": "111", 
      "Make": "2000" 
     },  

     { 
      "Name": "222", 
      "Make": "2010" 
     } 

    ] 

} 

這裏是我試圖解析的地方;

import UIKit 

class ViewController: UIViewController { 

    var numberOfRows = 0 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     parseJSON() 

    } 

    func parseJSON() { 

     let path : String = NSBundle.mainBundle().pathForResource("jsonfile", ofType: "json") as String! 
     let jsonDATA = NSData(contentsOfFile: path) as NSData! 

     let readableJSON = JSON(data: jsonDATA, options: NSJSONReadingOptions.MutableContainers, error: nil) 

     let allList = readableJSON["Cars"] 

     numberOfRows = readableJSON["Cars"].count 

     print("\(numberOfRows)") 

     print("\(allList)") 

     let name1 = readableJSON["Cars"][0]["Name"].string 
     let make1 = readableJSON["Cars",0,"Make"] 

     print("Name of 1 : \(name1)") 
     print("Make of 1: \(make1)") 

    } 


} 
+0

傳遞'NSError'實例作爲錯誤參數來獲取一些錯誤信息。 'as String!'是一種非常不尋常的語法。或者使用'as!字符串或可選的綁定(最好)'如果讓...作爲?字符串{...' – vadian

+0

我得到了 - >可選(錯誤域= NSCocoaErrorDomain代碼= 3840「垃圾在結束。」UserInfo = {NSDebugDescription =垃圾在末端}) –

+1

JSON字符串可能以\ 0終止符結束,錯誤或JSON編碼不正確。由於JSON文本在文件中,請刪除所有空間字符,這些字符只能是人類可讀的語法糖。 – vadian

回答

0

希望這個解決方案能幫助你。

func parseJson() { 

    if let path = NSBundle.mainBundle().pathForResource("jsonfile", ofType: "json") 
    { 
     if let jsonData = try? NSData(contentsOfFile: path, options: .DataReadingMappedIfSafe) 
     { 
      let originalJson = JSON(data: jsonData) 
      for (_, subJson) in originalJson["Cars"] { 
       print(subJson["Name"]) 
       print(subJson["Make"]) 
      } 
     } 
    } 
}