目录:[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 }

转载于:https://www.cnblogs.com/strengthen/p/10050129.html

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

  1. python下载图片到文件夹_python实现解析markdown文档中的图片,并且保存到本地~

    背景 前阵子简书好像说是凉了,搞得我有点小慌,毕竟我的大部分博客都是放在简书上面的,虽然简书提供了打包导出功能,但是只能导出文字,图片的话还是存在简书服务器上面,再加上我一直想要重新做一个个人博客,于 ...

  2. java jdom解析xml文件_Java 使用JDOM解析XML文档

    使用JDOM解析XML文档 JDOM是一种使用 XML(标准通用标记语言下的一个子集) 的独特 Java 工具包.下面我们来看一下怎么使用 JDOM来解析XML文档. 首先下载JDOM的jar包,并导 ...

  3. c++ 按行读取txt文件并赋值_python操作txt文件中数据教程[3]python读取文件夹中所有txt文件并将数据转为csv文件...

    觉得有用的话,请点击右下角 推荐给更多小伙伴 neoken_xuAsurada2015Evacloud 参考文献 python 操作 txt 文件中数据教程[1]-使用 python 读写 txt 文 ...

  4. Android数据存储——2.文件存储_C_DOM解析XML文档

    今天学习Android数据存储--文件存储_DOM解析XML文档 位于org.w3c.dom操作XML会比较简单,就是将XML看做是一颗树,DOM就是对这颗树的一个数据结构的描述,但对大型XML文件效 ...

  5. Python 获取接口数据,解析JSON,写入文件

    Python 获取接口数据,解析JSON,写入文件 用于练手的例子,从国家气象局接口上获取JSON数据,将它写入文件中,并解析JSON: 总的来说,在代码量上,python代码量要比java少很多.而 ...

  6. DOM4J解析XML文档、Document对象、节点对象节点对象属性、将文档写入XML文件(详细)...

    Dom4j是一个简单.灵活的开放源代码的库.Dom4j是由早期开发JDOM开发的.与JDOM不同的是,dom4j使用接口和抽象的人分离出来而后独立基类,虽然Dom4j的API相对要复杂一些,但它提供了 ...

  7. C# 操作通过word模板合并N个word文档

    C# 操作通过word模板合并N个word文档 C# 操作通过word模板合并N个word文档.在工作中遇到了这样一个工作场景,客户需要经常对上级上报或者汇报本阶段的工作, 比如:日报.周报.月总结. ...

  8. php 解析word文件,php解析word文档

    (twips) 官方网站: 首先解释一下 PHPWord 最基本的计量单位:"缇"(twips),我们常常 在文件中看到或使用计量单位"缇",它是开源办公软件中 ...

  9. C语言学生管理系统(将数据保存至TXT文档)附源码

    C语言学生管理系统(将数据保存至TXT文档) 在大一学习完C语言之后,回家遇到疫情,便有了用C语言写一个学生管理系统的想法,在家花费了一些时间,刚开始写了一点,后来可能是因为学艺不精就没写完,开学到现 ...

最新文章

  1. Xcode7 真机免证书调试Cocos2D游戏
  2. LeetCode-726. 原子的数量(python2)
  3. 深到骨子里的自律,是每周坚持刷几篇最新论文 | PaperDaily #10
  4. python彩票结果分析_天啦噜!Python多线程居然是骗人的?
  5. 2021-2025年中国电子薄膜开关行业市场供需与战略研究报告
  6. 如何在Go中找到一个对象的类型?
  7. 忽略mysql库的同步
  8. ubuntu 新建用户
  9. 2022年蓝桥杯基础题目合集C语言
  10. html在线取色,JS实现的RGB网页颜色在线取色器完整实例
  11. 速成! | 遗传算法详解及其MATLAB实现
  12. 微慕小程序专业版V3.6.6发布
  13. 常用的软件打包工具Inno Setup和AdvancedInstallerPortable
  14. vnr光学识别怎么打开_SLS46CK4单光束安全传感器原版使用说明-Leuzeelectronic.PDF
  15. qt5的configure选项说明(2)
  16. php实现emoji表情包的数据库存储和展示
  17. yum linux centos安装mysql详细教程
  18. PT2262 单片机解码程序
  19. 【专题】详解Python中的反射机制
  20. 搭建SpringCloud配置中心 Config Server

热门文章

  1. 【HDU - 6203】ping ping ping(lca+贪心思想,对lca排序,树状数组差分)
  2. 【HDU - 5456】Matches Puzzle Game(数位dp,思维)
  3. 【BZOJ - 1305】dance跳舞(拆点网络流,建图,最大流,残留网络上跑最大流)
  4. 【POJ - 2752】Seek the Name, Seek the Fame (KMP,公共前缀后缀长度及个数)
  5. c 语言 while break,26 C 语言中的break和continue - C 语言基础教程
  6. ecshop php升级,升级-安装与升级- ECShop帮助
  7. mysql索引详细介绍简书_Mysql索引介绍
  8. 学习笔记10-C语言-小项目-五子棋
  9. leetcode597. 好友申请 I :总体通过率(SQL)
  10. Git(12)-stash, reflog