swift:使用第三方开源库SwiftyJSON解析本地json数据文件

来源:互联网 发布:vb 调用bartender模板 编辑:程序博客网 时间:2024/05/17 01:03

本文解析的json文件的数据和在我的博客 swift:使用NSJSONSerialization解析本地json数据文件(代码详细注释)中的数据的一样,不同的是工程名称不一样,还有ViewController.swift文件里面的内容变化了

1 创建工程:打开xcode 选择ios平台下的sing view application ,选择swift语言,创建工程

2 在项目中新建data.json文件,用于存储json格式的文件

3 下载第三方开源库SwiftyJSON,GitHub地址:https://github.com/SwiftyJSON/SwiftyJSON

4 将SwiftyJSON工程中的SwiftyJSON.swift文件复制到项目中,工程目录如下:


 ViewController.swift 文件内容如下:

import UIKit

class ViewController:UIViewController {

   override func viewDidLoad() {

       super.viewDidLoad()

        // Do any additional setup after loading the view, typically from a nib.

        //1 data.json文件路径

       let path = NSBundle.mainBundle().pathForResource("data", ofType:"json")

        //2 data.json文件内容

       let jsonData=NSData(contentsOfFile: path!)

        //3 通过JSON函数初始化jsonData 初始化常用三种方式,根据jsonData的类型来选择

        //第一种  jsonDataNSData类型这里用这种

       let json = JSON(data:jsonData!)

        //第二种  jsonDatajsonObject类型

//        let json = JSON(jsonData)

        //第三种  jsonData是字符串类型

//        if let jsonString = jsonSData.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false) {

//            let json = JSON(data: jsonString)

//        }

        // a 解析最外层的 "name"

       let name = json["name"]

       print(name)

        // b 解析  "province" 的所有内容

       let provinces = json["province"]

       for i in 0..<provinces.count{

           print("\(i+1)个省的信息是\(provinces[i])")

        }

        //c假设要得到第二个省的城市中的第三个城市:广州的珠海

       //讲解

//       因为json中的province是数组类型,所以["province"][1]表示取第二个省,省是字典类型,所以["province"][1]["cities"]表示取的省中 keycities的城市列表,cities又是字典类型,所以又取citieskeycity的值,city又是数组类型,所以取第三个城市,则是[2]

        let city=json["province"][1]["cities"]["city"][2]

       print("city的名称是\(city)")

    }

   override func didReceiveMemoryWarning() {

        super.didReceiveMemoryWarning()

        // Dispose of any resources that can be recreated.

    }

}

6 实验结果:


0 0