Swift开发:使用SwiftyJSON解析JSON数据
2017-10-09 17:29
465 查看
1 下载配置SwiftyJSON
GitHub地址:https://github.com/SwiftyJSON/SwiftyJSON使用配置:直接将 SwiftyJSON.swift添加到项目中即
2 解析案例文件
demo.json 放置项目中,json内容如下{ "system": { "id": 754717486, "model": "32C", "max": 32, "max_out": 32, "run": "Run 003:00:31", "temp": "20~35", "wcolor": "#66ff00", "temp_war": false, "mark": 1766, "ahpd": 1, "uhpd": 1, "cont": 1, "ip": "192.168.88.229", "port": 1001, "update": true, "lang": 0 }, "info": { "Sync": false, "port": [{ "io": 1, "pow": 0, "SName": "SYSTEM VGA\n ", "type": 2, "power": 1, "vsw": 7, "Iasw": 7, "Easw": 7, "usw": 0, "flag": false, "hpd": "HPD OFF", "res": "Power off", "vsd": "N/A", "v_hdcp": "N/A", "vmode": 1, "vaudio": 1, "vhdcp": 1, "EName": "SYSTEM EDID\n" }, { "io": 0, "pow": 1, "SName": "SYSTEM EDID\n" }, { "io": 0, "pow": 1, "SName": "SHARP HDMI\n " }, { "io": 0, "pow": 1, "SName": "U28D590\n " }, { "io": 1, "pow": 1, "SName": "Skyworth UHD", "type": 12, "power": 1, "vsw": 7, "Iasw": 7, "Easw": 7, "usw": 0, "flag": false, "hpd": "HPD OFF", "res": "NoSignal", "vsd": "N/A", "v_hdcp": "N/A", "vmode": 1, "vaudio": 0, "vhdcp": 0, "EName": "SYSTEM EDID\n" }, { "io": 0, "pow": 1, "SName": "LG TV\n " }, { "io": 1, "pow": 1, "SName": "SYSTEM EDID\n", "type": 1, "power": 1, "vsw": 7, "Iasw": 7, "Easw": 7, "usw": 0, "flag": false, "hpd": "HPD OFF", "res": "NoSignal", "vsd": "N/A", "v_hdcp": "N/A", "vmode": 1, "vaudio": 1, "vhdcp": 0, "EName": "SYSTEM EDID\n" }, { "io": 0, "pow": 1, "SName": "SYSTEM EDID\n" }, { "io": 0, "pow": 1, "SName": "SYSTEM EDID\n" }, { "io": 0, "pow": 1, "SName": "SYSTEM EDID\n" }, { "io": 0, "pow": 1, "SName": "SYSTEM EDID\n" }, { "io": 2, "pow": 2, "SName": "SYSTEM EDID\n", "type": 4, "power": 1, "vsw": 7, "Iasw": 7, "Easw": 7, "usw": 0, "flag": false, "hpd": "HPD OFF", "res": "Auto off", "vsd": "N/A", "v_hdcp": "N/A", "vmode": 1, "vaudio": 1, "vhdcp": 1, "EName": "NULL\r" }, { "io": 0, "pow": 1, "SName": "SYSTEM EDID\n" }, { "io": 2, "pow": 2, "SName": "SYSTEM EDID\n", "type": 12, "power": 1, "vsw": 7, "Iasw": 7, "Easw": 7, "usw": 0, "flag": false, "hpd": "HPD OFF", "res": "Auto off", "vsd": "N/A", "v_hdcp": "N/A", "vmode": 1, "vaudio": 1, "vhdcp": 1, "EName": "NULL\r" }, { "io": 0, "pow": 1, "SName": "SYSTEM EDID\n" }, { "io": 0, "pow": 1, "SName": "SYSTEM EDID\n" }, { "io": 0, "pow": 1 }, { "io": 0, "pow": 1 }, { "io": 2, "pow": 2, "type": 1, "power": 1, "vsw": 7, "Iasw": 7, "Easw": 7, "usw": 0, "flag": false, "hpd": "HPD OFF", "res": "Auto off", "vsd": "N/A", "v_hdcp": "N/A", "vmode": 1, "vaudio": 1, "vhdcp": 1, "EName": "43PUF6056/T3" }, { "io": 0, "pow": 1 }, { "io": 1, "pow": 0, "type": 4, "power": 1, "vsw": 7, "Iasw": 7, "Easw": 7, "usw": 0, "flag": false, "hpd": "HPD OFF", "res": "Power off", "vsd": "N/A", "v_hdcp": "N/A", "vmode": 1, "vaudio": 1, "vhdcp": 1, "EName": "SYSTEM EDID\n" }, { "io": 0, "pow": 1 }, { "io": 2, "pow": 2, "type": 1, "power": 1, "vsw": 7, "Iasw": 7, "Easw": 7, "usw": 0, "flag": false, "hpd": "HPD OFF", "res": "Auto off", "vsd": "N/A", "v_hdcp": "N/A", "vmode": 1, "vaudio": 1, "vhdcp": 1, "EName": "SYSTEM EDID\n" }, { "io": 0, "pow": 1 }, { "io": 2, "pow": 2, "type": 134, "power": 1, "vsw": 7, "Iasw": 7, "Easw": 7, "usw": 0, "flag": false, "hpd": "HPD OFF", "res": "Auto off", "vsd": "N/A", "vmode": 1, "vaudio": 1, "vhdcp": 1, "EName": "U28E590\n ", "s_res": 1, "s_out": 0, "s_arrt": 0, "s_brightness": 50, "s_contrast": 50, "s_saturability": 50, "s_sharpness": 50, "s_rv": 0, "s_gv": 0, "s_bv": 0 }, { "io": 0, "pow": 1 }, { "io": 0, "pow": 1 }, { "io": 0, "pow": 1 }, { "io": 0, "pow": 1 }, { "io": 0, "pow": 1 }, { "io": 0, "pow": 1 }, { "io": 0, "pow": 1 }] } }
3 开始解析
只有部分解析,其他解析结合demo.json就知道怎么解析了override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. let path = Bundle.main.path(forResource: "demo", ofType: "json"); let jsonData = NSData(contentsOfFile: path!); do{ let json = try JSON(data: jsonData! as Data); //system let system_array = json["system"]; print("id: \((system_array["id"].int)!)"); print("model: \((system_array["model"].string)!)"); //info let info_array = json["info"]; // info sync print("sync: \((info_array["Sync"].bool)!)"); //info port let info_port_array = info_array["port"]; for i in 0..<info_port_array.count { let io = info_port_array[i]["io"].int!; print("io:\(io)"); } } catch{ print("error "); } }
4 效果图
相关文章推荐
- swift:使用NSJSONSerialization解析本地json数据文件(代码详细注释)
- Android开发中使用fastJSON将json格式的数据快速解析生成实体类并附上实体类生成器
- swift开发笔记14 - 解析json数据文件
- Android网络开发中如何使用JSON进行网络通信---Android JSON数据通讯方法解析
- swift:使用NSJSONSerialization和SwiftyJSON两种方法解析网络返回的json格式数据
- iOS开发-使用第三方库AFNetWorking解析JSON和XML数据
- Android网络开发中如何使用JSON进行网络通信---Android_JSON数据通讯方法解析
- Swift-使用NSJSONSerialization生成或解析JSON数据
- Android网络开发中如何使用JSON进行网络通信---Android JSON数据通讯方法解析
- 【Android开发经验】Json数据格式介绍、使用Android自带类库完成Json生成与解析
- iOS开发1-使用NSJSONSerialization解析JSON数据
- iOS网络编程4--使用SwiftyJSON解析JSON数据
- Android开发中使用Gson解析OkHttp传回来的复杂json数据
- 在mvvm 开发模式下使用JSonModel解析数据
- 【Android开发经验】Json数据格式介绍、使用Android自带类库完成Json生成与解析
- iOS开发使用JSON解析网络数据
- 基于Swift的iOS应用程序开发:解析json格式的数据
- Android商城开发系列(六)——使用 OkHttpUtils 请求网络 + 使用 fastjson解析数据
- swift:使用第三方开源库SwiftyJSON解析本地json数据文件
- Java解析JSON数据 使用org.json