• [Xcode 实际操作]七、文件与数据-(17)解析JSON文档


    目录:[Swift]Xcode实际操作

    本文将演示如何解析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 }
  • 相关阅读:
    expect
    grep
    Python函数
    Python的set
    Python字典
    Python循环
    Python条件判断
    Python列表
    Python字符串
    Python组织代码块的形式
  • 原文地址:https://www.cnblogs.com/strengthen/p/10050129.html
Copyright © 2020-2023  润新知