本文為原創(chuàng)文章,轉(zhuǎn)載請標明出處
1. 通過CocoaPods安裝SwiftyJSON
platform :ios, '10.0'
target '<Your Target Name>' do
use_frameworks!
pod 'SwiftyJSON', '~> 4.0.0'
end
2. 初始化
import SwiftyJSON
let json = JSON(data: dataFromNetworking)
let json = JSON(jsonObject)
if let dataFromString = jsonString.data(using: .utf8, allowLossyConversion: false) {
let json = JSON(data: dataFromString)
}
3. 下標訪問
// 方式1
let name = json[1]["list"][2]["name"].string
//方式2
let name = json[1,"list",2,"name"].string
//方式3
let keys:[JSONSubscriptType] = [1,"list",2,"name"]
let name = json[keys].string
let arrayNames = json["users"].arrayValue.map({$0["name"].stringValue})
4. 循環(huán)遍歷
不管JSON是數(shù)組類型還是字典類型key
的類型都為String
盆顾。
for (key,subJSON) in json {
...
}
5. 錯誤處理
枚舉類型SwiftyJSONError
包含unsupportedType
诬像、indexOutOfBounds
屋群、elementTooDeep
、wrongType
坏挠、notExist
芍躏、invalidJSON
、errorDomain
降狠。
6. 可選值獲取
通過.number
对竣、.string
、.bool
喊熟、.int
等方法獲取到的是可選值柏肪。
if let id = json["user"]["name"].string {
...
} else {
...
print(json["user"]["name"].error!)
}
7. 非可選值獲取
通過.xxxValue
方法獲取到的是非可選值姐刁。
// 若不是String或為nil芥牌,返回“”
let name: String = json["name"].stringValue
8. 設置值
json["name"] = JSON("new-name")
json[0] = JSON(1)
json["name"].string = "Jack"
json.arrayObject = [1,2,3,4]
json.dictionaryObject = ["name":"Jack", "age":25]
9. 原始數(shù)據(jù)
let rawObject: Any = json.object
let rawValue: Any = json.rawValue
do {
let rawData = try json.rawData()
} catch {
print("Error \(error)")
}
if let rawString = json.rawString() {
...
} else {
print("json.rawString is nil")
}
10. 其他方法
exists
// 判斷是否存在
if json["name"].exists()
merge
let original: JSON = [
"first_name": "Theo",
"age": 20,
"skills": ["Coding", "Reading"],
"address": [
"street": "Software St",
"zip": "210046",
]
]
let update: JSON = [
"last_name": "Tsao",
"age": 22,
"skills": ["Writing"],
"address": [
"zip": "210012",
"city": "Nanjing"
]
]
let updated = original.merge(with: update)
輸出:
[
"first_name": "Theo",
"last_name": "Tsao",
"age": 22,
"skills": ["Coding", "Reading", "Writing"],
"address": [
"street": "Software St",
"zip": "210012",
"city": "Nanjing"
]
]