本文为原创文章,转载请标明出处

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. 循环遍历

不管JSON是数组类型还是字典类型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. 原始数据

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"
]
]

iOS(Swift)学习笔记之SwiftyJSON的使用的更多相关文章

  1. iOS(Swift)学习笔记之SnapKit+自定义UI组件

    本文为原创文章,转载请标明出处 1. 通过CocoaPods安装SnapKit platform :ios, '10.0' target '<Your Target Name>' do u ...

  2. iOS(Swift)学习笔记之去除UINavigationBar下方横线

    本文为原创文章,转载请标明出处 // 去除UINavigationBar下方横线 navigationController.navigationBar.shadowImage = UIImage() ...

  3. Swift学习笔记(一)搭配环境以及代码运行成功

    原文:Swift学习笔记(一)搭配环境以及代码运行成功 1.Swift是啥? 百度去!度娘告诉你它是苹果最新推出的编程语言,比c,c++,objc要高效简单.能够开发ios,mac相关的app哦!是苹 ...

  4. 【swift学习笔记】二.页面转跳数据回传

    上一篇我们介绍了页面转跳:[swift学习笔记]一.页面转跳的条件判断和传值 这一篇说一下如何把数据回传回父页面,如下图所示,这个例子很简单,只是把传过去的数据加上了"回传"两个字 ...

  5. swift学习笔记1——基础部分

    之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...

  6. swift学习笔记5——其它部分(自动引用计数、错误处理、泛型...)

    之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...

  7. swift学习笔记4——扩展、协议

    之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...

  8. swift学习笔记3——类、结构体、枚举

    之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...

  9. swift学习笔记2——函数、闭包

    之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...

随机推荐

  1. CEO、COO、CFO、CTO、CIO是什么意思/?

    CEO Chief Executive Officer 首席执行官 COO Chief Operating Officer 首席运营官 CFO Chief Financial Officer 首席财务 ...

  2. win10环境下pyinstaller打包pytorch遇到的问题及解决方案

    pytorch-python源码生成windows的应用程序(.exe),报错OSError: could not get source code Failed to execute script h ...

  3. fread 和fgets 函数的使用

    两个函数都是对FILE *fp 文件进行读取信息,fgets是每次读取一行,fread是一下子读完所有的文件内容. //一.fread的使用 FILE *fp; int nread; ] fp = f ...

  4. 初次运行Git前的配置

    初次运行Git前的配置 一.初次运行 Git 前的配置 一般在新的系统上,我们都需要先配置下自己的 Git 工作环境.配置工作只需一次,以后升级时还会沿用现在的配置.当然,如果需要,你随时可以用相同的 ...

  5. 给Office文档添加水印效果【测试有效】

    private void button1_Click(object sender, EventArgs e) { string test1 = "C:\\test.docx";// ...

  6. Spring 连接MySQL报错java.sql.SQLException: Unknown system variable 'tx_isolation'

    先是报错255,这个时候需要把 jdbc:mysql://localhost:3306/projUse 写成 jdbc:mysql://localhost:3306/projUse?useUnicod ...

  7. jenkins推送docker镜像到远程仓库

    参考链接:https://blog.csdn.net/qq_34252622/article/details/92791262

  8. [SDOI2019]世界地图(kruskal重构树+虚树)

    通过子任务1.3十分显然,子任务4实际上就是线段树,和我下午写的[SDOI2015]道路修建一模一样,堪称“我抄我自己”,不会的可以先做一下这个题. 然后考虑正解,参考了zhoushuyu的博客,首先 ...

  9. poj-3665 iCow(暴力吧)

    http://poj.org/problem?id=3665 题目描述 Fatigued by the endless toils of farming, Farmer John has decide ...

  10. 基础篇七:默认配置语法(/etc/nginx/nginx.conf)

    首选我们 vim nginx.conf 参照上图,我们看看nginx.conf 的个参数含义 我们再看看 /etc/nginx/conf.d/default.conf