swift4--解析json文件

首先添加一个供测试用的JSON文件

menu.json

{
	"menu":
	{
		"id": "file",
		"value": "File",
		"menuitem":
		[
			{
				"value": "New",
				"onclick": "CreateNewDoc()"
			},
			{
				"value": "OPen",
				"onclick": "OPenDoc()"
			},
			{
				"value": "Close",
				"onclick": "CloseDoc()"
			}
		]
	}
}

以下是解析过程

//解析json文档
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
//        从项目的目录结构中读取需要解析的文档
        let path = Bundle.main.path(forResource: "menu", ofType: "json")
//        读取指定位置的文件,并转化为二进制文件
        if let jsonData = try? Data(contentsOf: URL(fileURLWithPath: path!)) {

            do{
//              将二进制数据转换为字典对象
                if let jsonObj:NSDictionary = try JSONSerialization.jsonObject(with: jsonData, options: JSONSerialization.ReadingOptions()) as? NSDictionary
                {
//                    根据键名,获得字典对象中的键值,并将键值转化为另一个字典对象
                    if let menuDic:NSDictionary = jsonObj["menu"] as? NSDictionary
                    {
//                        根据键名获得第二个字典对象的键值,并将键值转化为一个数组对象
                        if let menuItems:NSArray = menuDic["menuitem"] as? NSArray
                        {
//                            遍历数组中的元素,并在控制台打印输出元素内容
                            for item in menuItems{
                                print("item: \(item)")
                            }
                        }
                    }
                }
            } catch{
                print("Error.")
            }
        }
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值