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

1. 通过CocoaPods安装SwiftyJSON

platform :ios, '10.0'target '<Your Target Name>' douse_frameworks!pod 'SwiftyJSON', '~> 4.0.0'end

2. 初始化

import SwiftyJSONlet 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包含unsupportedTypeindexOutOfBoundselementTooDeepwrongTypenotExistinvalidJSONerrorDomain

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

转载于:https://www.cnblogs.com/metaphors/p/9405432.html

iOS(Swift)学习笔记之SwiftyJSON的使用相关推荐

  1. Swift学习笔记(4)使用UIImagePickerController实现从设备图片库和照相机获取图片

    Swift学习笔记(4)使用UIImagePickerController实现从设备图片库和照相机获取图片 设备图片库和照相机是图像的两个重要来源,使用UIKit中提供的图像选择器UIImagePic ...

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

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

  3. ios开发学习笔记--Core Motion

    iOS开发学习笔记之CoreMotion-运动传感器 官网文档:CoreMotion Framework Reference 一.     简介 现在的苹果手机都基本有运动传感器,能够过获取到设备的加 ...

  4. IOS之学习笔记十五(协议和委托的使用)

    1.协议和委托的使用 1).协议可以看下我的这篇博客 IOS之学习笔记十四(协议的定义和实现) https://blog.csdn.net/u011068702/article/details/809 ...

  5. swift学习笔记《5》- 实用

    title: swift学习笔记<5>- 实用 date: 2016-09-21 21:39:00 categories: 学习笔记 Swift学习 tags: Swift 1.setVa ...

  6. IOS开发学习笔记-----UILabel 详解

    IOS开发学习笔记-----UILabel 详解 01 //创建uilabel 02 UILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMa ...

  7. IOS开发学习笔记(一)

    概述: iOS是苹果开发的手持设备操作系统(iPhone,iPad,iPod touch,iPad mini). 基于UNIX,层次架构:核心操作系统层(Core OS)-> 核心服务层(Cor ...

  8. iOS 疑难杂症 学习笔记

    iOS Learing note 出现问题:虚拟机 Xcode 调试时候发现键盘出不来 错误提示:Xcode 提示: Can't find keyplane that supports type 8 ...

  9. Start Developing iOS Apps (Swift) 学习笔记 (1)

    一.Learn the Essentials of Swift 1.A constant is a value that stays the same after it's declared the ...

最新文章

  1. CASS 7.1 和 AutoCAD 2006的安装使用
  2. mysql事件定时_MySQL事件(定时任务)
  3. 洛谷P1067 多项式输出
  4. vlan为什么能隔离广播域_路由交换技术-VLAN原理及配置
  5. 图论算法(五)--求解割点、割边(JAVA)
  6. 假如程序员面试都说真话
  7. Oracle中一把梭获取对象DDL创建语句
  8. 从FindBugs中学Java【四】
  9. 机器学习:02 特征工程和决策树回归
  10. 内涵图:从明天起,做一个有内涵的人
  11. Wireshark中lua脚本介绍
  12. html5 3d 签到墙,签到小程序/微信签到/扫码签到/3D签到墙
  13. MVT 之 M——模型
  14. FILCO蓝牙CSR4.0驱动安装连接(解决蓝牙连接的终极管理方法,速度极快)
  15. mysql increment_mysql中auto_increment是干什么的?
  16. GPS问题调试—MobileLog中有关GPS关键LOG的释义
  17. VR资讯——局势明朗下的前景展望(V客学院知识分享)
  18. 安卓动态调试七种武器之长生剑 - Smali Instrumentation
  19. IT后端技术学习路线图(初阶)
  20. 计算机丢失d3dx9_27.dll,d3dx9_27.dll

热门文章

  1. 计算机保密检查工具 百度云,计算机系统保密检查工具
  2. FFMPEG 从USB摄像头捕获数据
  3. 模拟房间冲击响应(Room Impulse Response,RIR),AI去混响
  4. Python编程从入门到实践最详细教程
  5. STM32CubeIDE属于一站式工具,本文带你体验它的强大
  6. python 因果推断_因果推断书Causal inference:What if简介(附:因果推断书单推荐)...
  7. 服务器市场混乱,信息安全是关键
  8. 变频器按启动没反应_变频器通电无反应故障是什么情况?
  9. 台达DVP ES系列plc与3台台达MS300变频器通讯程序 实现频率设定,启停控制,实际频率读取等
  10. 【全套资料.zip下载】数电课设-数字频率计Multisim仿真设计【Multisim仿真+报告+讲解视频.zip下载】