日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SwiftyJSON

發布時間:2023/12/14 javascript 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SwiftyJSON 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

描述:SwiftyJSON是一個swift編寫的對json數據進行解析的類庫,SwiftyJSON的使用極其方便,而且不用擔心數組越界等問題

GitHub地址:https://github.com/SwiftyJSON/SwiftyJSON

在本文寫作時,SwiftyJSON在GitHub上的star已經達到了14899,光看star就知道,這個庫,還是比較值得用的。

1.cocoapods導入并安裝

pod "SwiftyJSON"

2.在使用的文件中導入頭文件

import SwiftyJSON

3.獲取要解析的數據(此時為寫死的假數據,實際使用的應該是通過API獲取的數據或者其他途徑獲取的數據,此數據的結構為真實項目的數據結構,所以,解析方式也會以該項目的后續解析方式進行解析,基本能滿足一般的項目的數據解析需求)

var jsonData: [String: Any] = [:] jsonData["code"] = 200 jsonData["result"] = true jsonData["message"] = "數據加載成功" jsonData["data"] = [["id" : "資訊1_id","title" : "資訊1_標題","pictrueUrl" : "資訊1_圖片","description" : "資訊1_描述","categoryTitle": "資訊1_分類標題","tagArray" : [["id":"yyy0bb1d82beb084718bbd88d45c39710d8","title":".net1"],["id":"eee0bb1d82beb084718bbd88d45c39710d8","title":".net1"]],"shareNumber" : 1,"clickNumber" : 1],["id" : "資訊2_id","title" : "資訊2_標題","pictrueUrl" : "資訊2_圖片","description" : "資訊2_描述","categoryTitle": "資訊2_分類標題","tagArray" : [["id":"yyy0bb1d82beb084718bbd88d45c39710d8","title":".net2"],["id":"eee0bb1d82beb084718bbd88d45c39710d8","title":".net2"]],"shareNumber" : 2,"clickNumber" : 2]]

4.創建JSON對象

let jsonObj = JSON.init(jsonData)

5.先判斷code與result

if jsonObj["result"].boolValue == false {print("獲取失敗")return } if jsonObj["code"].intValue != 200 { /// 此處應該是根據服務器返回的code值進行判斷然后進行后續操作,現在只是簡單的打印服務器返回的messageprint(jsonObj["message"].stringValue)return }

6.解析數據主體,暫時將解析的數據均打印出來,實際使用中會對數據進行其他操作

for dic in jsonObj["data"].arrayValue {print("id: ", dic["id"].stringValue)print("title: ", dic["title"].stringValue)print("pictrueUrl: ", dic["pictrueUrl"].stringValue)print("description: ", dic["description"].stringValue)print("categoryTitle: ", dic["categoryTitle"].stringValue)print("shareNumber: ", dic["shareNumber"].intValue)print("clickNumber: ", dic["clickNumber"].intValue)print("tagArray: ", dic["tagArray1"].arrayValue)for arr in dic["tagArray"].arrayValue {print("\t\ttagid: ", arr["id2"].stringValue)print("\t\ttitle: ", arr["title"].stringValue)} }

7.打印的結果

?

打印結果

8.總結
SwiftyJSON的使用很簡單
首先根據要解析的數據進行創建對象,然后解析數據

創建JSON對象的方式有很多,如下

/**方法一: 使用data數據創建一個JSON對象- parameter data: 用來解析的數據,data類型- parameter opt: JSON解析的選項. 默認`.AllowFragments`.- parameter error: 用來返回錯誤的NSErrorPointer. 默認為`nil`.- returns: 創建的JSON對象*/public init(data:Data, options opt: JSONSerialization.ReadingOptions = .allowFragments, error: NSErrorPointer = nil)/**方法二:使用json字符串創建一個JSON對象- parameter string: 一個正常的json字符串,例如 '{"a":"b"}'- returns: 創建的JSON對象*/public static func parse(_ string:String) -> JSON/**方法三:使用一個對象創建一個JSON對象- parameter object: 這個對象必須有以下特性: 所有的對象是 NSString/String, NSNumber/Int/Float/Double/Bool, NSArray/Array, NSDictionary/Dictionary, 或 NSNull; 所有的字典的鍵是 NSStrings/String; NSNumbers 不允許是 NaN 或者 infinity.- returns: 創建的JSON對象*/public init(_ object: Any)/**方法四:用一個JSON對象的數組創建一個JSON對象- parameter jsonArray: 一個Swift數組,數組的元素為JSON對象- returns: 創建的JSON對象*/public init(_ jsonArray:[JSON])/**方法五:用一個值為JSON對象的字典創建一個JSON對象- parameter jsonDictionary: 一個Swif字典,字典的值是JSON對象- returns: 創建的JSON對象*/public init(_ jsonDictionary:[String: JSON])

解析的數據類型包括(除了URL與null,其余的每種數據類型都包括有可選值和默認值,如果需要自定義默認值,可以使用解析結果為可選的類型,如果不需要,可以直接使用默認值,所有帶有默認值的類型,都是在以Value為后綴。例如,string獲取的就是可選的字符串,而stringValue獲取的就是帶有默認值的字符串,非可選):

public var double: Double? public var doubleValue: Double public var float: Float? public var floatValue: Float public var int: Int? public var intValue: Int public var uInt: UInt? public var uIntValue: UInt public var int8: Int8? public var int8Value: Int8 public var uInt8: UInt8? public var uInt8Value: UInt8 public var int16: Int16? public var int16Value: Int16 public var uInt16: UInt16? public var uInt16Value: UInt16 public var int32: Int32? public var int32Value: Int32 public var uInt32: UInt32? public var uInt32Value: UInt32 public var int64: Int64? public var int64Value: Int64 public var uInt64: UInt64? public var uInt64Value: UInt64public var URL: URL?public var null: NSNull?public var numberValue: NSNumber public var number: NSNumber?public var stringValue: String public var string: String?public var boolValue: Bool public var bool: Bool?public var dictionaryObject: [String : Any]? public var dictionaryValue: [String : JSON] public var dictionary: [String : JSON]?public var arrayObject: [Any]? public var arrayValue: [JSON] public var array: [JSON]?

結束:
在文章的結束,放上一段我練習用的代碼,基本就是把上面的步驟結合在一起

import UIKit import SwiftyJSONclass SwiftyJSONViewController: UIViewController {override func viewDidLoad() {super.viewDidLoad()view.backgroundColor = UIColor.whitetitle = "SwiftyJSON"}private var jsonData: [String: Any] = [:]@IBAction func prepareJsonData(_ sender: UIButton) {jsonData["code"] = 200jsonData["result"] = truejsonData["message"] = "數據加載成功"jsonData["data"] = [["id" : "資訊1_id","title" : "資訊1_標題","pictrueUrl" : "資訊1_圖片","description" : "資訊1_描述","categoryTitle": "資訊1_分類標題","tagArray" : [["id":"yyy0bb1d82beb084718bbd88d45c39710d8","title":".net1"],["id":"eee0bb1d82beb084718bbd88d45c39710d8","title":".net1"]],"shareNumber" : 1,"clickNumber" : 1],["id" : "資訊2_id","title" : "資訊2_標題","pictrueUrl" : "資訊2_圖片","description" : "資訊2_描述","categoryTitle": "資訊2_分類標題","tagArray" : [["id":"yyy0bb1d82beb084718bbd88d45c39710d8","title":".net2"],["id":"eee0bb1d82beb084718bbd88d45c39710d8","title":".net2"]],"shareNumber" : 2,"clickNumber" : 2]]}@IBAction func analysisJsonData(_ sender: UIButton) {let jsonObj = JSON.init(jsonData)if jsonObj["result"].boolValue == false {print("獲取失敗")return}if jsonObj["code"].intValue != 200 {print(jsonObj["message"].stringValue)return}print(jsonObj["message"].stringValue)for dic in jsonObj["data"].arrayValue {print("id: ", dic["id"].stringValue)print("title: ", dic["title"].stringValue)print("pictrueUrl: ", dic["pictrueUrl"].stringValue)print("description: ", dic["description"].stringValue)print("categoryTitle: ", dic["categoryTitle"].stringValue)print("shareNumber: ", dic["shareNumber"].intValue)print("clickNumber: ", dic["clickNumber"].intValue)print("tagArray: ", dic["tagArray1"].arrayValue)for arr in dic["tagArray"].arrayValue {print("\t\ttagid: ", arr["id2"].stringValue)print("\t\ttitle: ", arr["title"].stringValue)}}} }

各位,別人為我們造了輪子,我們可以直接拿來用,但是,我們不應該只是會拿來用,在自己不忙的時候,研究一下別人寫的好代碼,嘗試著寫一點自己的輪子,我相信,那會比學會使用輪子更讓人興奮!!!


鏈接:https://www.jianshu.com/p/293c16132d0a

總結

以上是生活随笔為你收集整理的SwiftyJSON的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。