本文概述
- Swift中JSON的问题
- 下载SwiftJSON
- 如何使用SwiftyJSON
SwiftyJSON是一个Swift框架, 旨在消除普通JSON序列化中对可选链接的需求。
Swift中JSON的问题在使用SwiftyJSON之前, 让我们看看用户在Swift中处理JSON时可能会遇到的麻烦。例如, 如果你在JSON对象中找到第一本书的名称, 则代码将如下所示:
if let jsonObject = try NSJSONSerialization.JSONObjectWithData(data, options: .AllowFragments) as? [[String: AnyObject]], let bookName = (jsonObject[0]["book"] as? [String: AnyObject])?["name"] as? String {//Now, you can use the book name}
你可以看到上面的代码很复杂并且很难阅读。
通过使用SwiftyJSON, 它将得到高度简化, 如下所示:
let json = JSON(data: data)if let bookName = json[0]["book"]["name"].string {//Now, you can use the book name}
SwiftyJSON消除了检查每个字段的要求, 因为如果其中任何一个无效, 则返回nil。
下载SwiftJSON你可以直接从GitHub下载或克隆SwityJSON:
https://github.com/SwiftyJSON/SwiftyJSON
如何使用SwiftyJSON要使用SwiftyJSON, 你必须从Git存储库下载正确的版本。只需将” SwiftyJSON.swift” 拖到你的项目中, 然后导入到你的类中:
import SwiftyJSON
你可以使用初始化程序创建自己的JSON对象。有两种创建自己的JSON对象的方法:
let jsonObject = JSON(data: dataObject)
Or
let jsonObject = JSON(jsonObject) //This could be a string in a JSON format for example
你可以使用下标访问数据。
let firstObjectInAnArray = jsonObject[0]let nameOfFirstObject = jsonObject[0]["name"]
你可以将值解析为某种数据类型, 这将返回一个可选值:
let nameOfFirstObject = jsonObject[0]["name"].string //This will return the name as a stringlet nameOfFirstObject = jsonObject[0]["name"].double //This will return null
你还可以将路径编译为快速数组:
let convolutedPath = jsonObject[0]["name"][2]["lastName"]["firstLetter"].string
与以下内容相同:
let convolutedPath = jsonObject[0, "name", 2, "lastName", "firstLetter"].string
SwiftyJSON具有打印自己的错误的功能:
if let name = json[1337].string {//You can use the value - it is valid} else {print(json[1337].error) // "Array[1337] is out of bounds" - You cant use the value}
如果需要写入JSON对象, 则可以再次使用下标:
var originalJSON:JSON = ["name": "Jack", "age": 18]originalJSON["age"] = 25 //This changes the age to 25originalJSON["surname"] = "Smith" //This creates a new field called "surname" and adds the value to it.
【SwiftyJSON介绍和开发示例详解】如果想要JSON的原始String, 例如, 如果需要将其写入文件, 则可以获取原始值。
if let string = json.rawString() { //This is a String object//Write the string to a file if you like}if let data = http://www.srcmini.com/json.rawData() { //This is an NSData object//Send the data to your server if you like}
推荐阅读
- Swift可选链介绍和用法示例
- Swift中的计时器解释和用法示例
- Swift 4类型转换介绍和用法示例
- Swift 4初始化介绍和用法示例
- Swift反初始化介绍和用法
- Swift 4下标用法示例
- Swift中的继承介绍和使用示例
- Swift 4方法介绍和用法详细示例
- 笔记本声音小怎样办,本文教您笔记本电脑声音小怎样办