Swift - JSON

Swift - JSON 首页 / Swift入门教程 / Swift - JSON

SwiftyJSON是一个开放源代码库,可帮助开发人员在Swift中轻松使用 JSON 。 Swift对类型非常严格,因此在Swift中使用JSON非常困难。 SwiftyJSON提供了一种更好的方法来处理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 {
    //现在,您可以使用bookName
}

您可以看到上面的代码很复杂并且很难阅读。

无涯教程网

通过使用SwiftyJSON,它将得到高度简化,如下所示:

let json = JSON(data: data)
if let bookName = json[0]["book"]["name"].string {
    //现在,您可以使用bookName
}

SwiftyJSON消除了检查每个字段的要求,因为如果其中任何一个无效,它将返回nil。

下载SwiftJSON

您可以直接从GitHub下载或克隆SwityJSON: https://github.com/swiftyjson/swiftyjson

使用SwiftJSON

要使用SwiftyJSON,您必须从Git存储库下载正确的版本。只需将"SwiftyJSON.swift"拖到您的项目中,然后导入到您的类中:

import SwiftyJSON

您可以使用初始化程序创建自己的JSON对象。有两种创建自己的JSON对象的方法:

let jsonObject = JSON(data: dataObject)

或者

let jsonObject = JSON(jsonObject) //例如,这可能是 JSON 格式的字符串

您可以使用下标来访问您的数据。

let firstObjectInAnArray = jsonObject[0]
let nameOfFirstObject = jsonObject[0]["name"]

您可以将您的值解析为某个数据类型,这将返回可选值:

let nameOfFirstObject = jsonObject[0]["name"].string //这会将名称作为字符串返回
let nameOfFirstObject = jsonObject[0]["name"].double //这将返回 null

您还可以将路径编译为快速数组:

let convolutedPath = jsonObject[0]["name"][2]["lastName"]["firstLetter"].string 

它与:

let convolutedPath = jsonObject[0, "name", 2, "lastName", "firstLetter"].string

SwiftyJSON具有打印错误的函数:

链接:https://www.learnfk.comhttps://www.learnfk.com/swift/swiftyjson.html

来源:LearnFk无涯教程网

if let name = json[1337].string {
    //您可以使用该值 - 它是有效的
} else {
    print(json[1337].error)//“Array[1337] 超出范围” - 您不能使用该值
}

如果您需要写入您的JSON对象,可以再次使用下标:

var originalJSON:JSON = ["name": "Jack", "age": 18]
originalJSON["age"] = 25 //这会将年龄更改为 25
originalJSON["surname"] = "Smith" //这将创建一个名为“surname”的新字段并将值添加到其中。

如果您想要JSON的原始字符串,例如如果您需要将其写入文件,则可以获得原始值。

if let string = json.rawString() { //这是一个字符串对象
    //如果您愿意,将字符串写入文件
}
if let data = json.rawData() { //这是一个 NSData 对象
    //如果您愿意,可以将数据发送到您的服务器
}

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

技术领导力实战笔记 -〔TGO鲲鹏会〕

技术管理实战36讲 -〔刘建国〕

Flutter核心技术与实战 -〔陈航〕

深入浅出云计算 -〔何恺铎〕

微信小程序全栈开发实战 -〔李艺〕

实用密码学 -〔范学雷〕

陶辉的网络协议集训班02期 -〔陶辉〕

去无方向的信 -〔小麥〕

Vue 3 企业级项目实战课 -〔杨文坚〕

好记忆不如烂笔头。留下您的足迹吧 :)