1. 程式人生 > >[Xcode10 實際操作]七、檔案與資料-(17)解析JSON文件

[Xcode10 實際操作]七、檔案與資料-(17)解析JSON文件

本文將演示如何解析JSON文件。

專案中已新增一份JSON文件:menu.json

 1 {
 2     "menu":
 3     {
 4         "id": "file",
 5         "value": "File",
 6         "menuitem":
 7         [
 8             {
 9                 "value": "New",
10                 "onclick": "CreateNewDoc()"
11             },
12             {
13 "value": "Open", 14 "onclick": "OpenDoc()" 15 }, 16 { 17 "value": "Close", 18 "onclick": "CloseDoc()" 19 } 20 ] 21 } 22 }

在專案導航區,開啟檢視控制器的程式碼檔案【ViewController.swift】

 1 import UIKit
2 3 //首先引入文件的解析代理協議XMLParserDelegate, 4 //主要的解析工作,都是靠代理來實現的。 5 class ViewController: UIViewController, XMLParserDelegate { 6 7 override func viewDidLoad() { 8 super.viewDidLoad() 9 // Do any additional setup after loading the view, typically from a nib. 10 11
//從專案的目錄結構中,讀取需要解析的文件, 12 let path = Bundle.main.path(forResource: "menu", ofType: "json") 13 //讀取指定位置的檔案,並轉換為二進位制資料 14 if let jsonData = try? Data(contentsOf: URL(fileURLWithPath: path!)) 15 { 16 //新增一條異常捕捉語句,用於將二進位制資料轉換為字典物件 17 do 18 { 19 //將二進位制資料轉換為字典物件 20 if let jsonObj:NSDictionary = try JSONSerialization.jsonObject(with: jsonData, options: JSONSerialization.ReadingOptions()) as? NSDictionary 21 { 22 //根據鍵名,獲得字典物件中的鍵值, 23 //並根據鍵值轉換成為另一個字典物件 24 if let menuDic:NSDictionary = jsonObj["menu"] as? NSDictionary 25 { 26 //根據鍵名,獲得第二個字典物件中的鍵值,並將鍵值轉換成為一個數組物件 27 if let menuItems:NSArray = menuDic["menuitem"] as? NSArray 28 { 29 //遍歷陣列中的元素,並在控制檯列印輸出元素的內容 30 for item in menuItems 31 { 32 print("item: \(item)") 33 } 34 } 35 } 36 } 37 } 38 catch 39 { 40 print("Error.") 41 } 42 } 43 } 44 45 override func didReceiveMemoryWarning() { 46 super.didReceiveMemoryWarning() 47 // Dispose of any resources that can be recreated. 48 } 49 }