- Swift Tutorial
- Swift - Home
- Swift - Overview
- Swift - Environment
- Swift - Basic Syntax
- Swift - Variables
- Swift - Constants
- Swift - Literals
- Swift - Comments
- Swift Operators
- Swift - Operators
- Swift - Arithmetic Operators
- Swift - Comparison Operators
- Swift - Logical Operators
- Swift - Assignment Operators
- Swift - Bitwise Operators
- Swift - Misc Operators
- Swift Advanced Operators
- Swift - Operator Overloading
- Swift - Arithmetic Overflow Operators
- Swift - Identity Operators
- Swift - Range Operators
- Swift Data Types
- Swift - Data Types
- Swift - Integers
- Swift - Floating-Point Numbers
- Swift - Double
- Swift - Boolean
- Swift - Strings
- Swift - Characters
- Swift - Type Aliases
- Swift - Optionals
- Swift - Tuples
- Swift - Assertions and Precondition
- Swift Control Flow
- Swift - Decision Making
- Swift - if statement
- Swift - if...else if...else Statement
- Swift - if-else Statement
- Swift - nested if statements
- Swift - switch statement
- Swift - Loops
- Swift - for in loop
- Swift - While loop
- Swift - repeat...while loop
- Swift - continue statement
- Swift - break statement
- Swift - fall through statement
- Swift Collections
- Swift - Arrays
- Swift - Sets
- Swift - Dictionaries
- Swift Functions
- Swift - Functions
- Swift - Nested Functions
- Swift - Function Overloading
- Swift - Recursion
- Swift - Higher-Order Functions
- Swift Closures
- Swift - Closures
- Swift-Escaping and Non-escaping closure
- Swift - Auto Closures
- Swift OOps
- Swift - Enumerations
- Swift - Structures
- Swift - Classes
- Swift - Properties
- Swift - Methods
- Swift - Subscripts
- Swift - Inheritance
- Swift-Overriding
- Swift - Initialization
- Swift - Deinitialization
- Swift Advanced
- Swift - ARC Overview
- Swift - Optional Chaining
- Swift - Error handling
- Swift - Concurrency
- Swift - Type Casting
- Swift - Nested Types
- Swift - Extensions
- Swift - Protocols
- Swift - Generics
- Swift - Access Control
- Swift - Function vs Method
- Swift - SwiftyJSON
- Swift - Singleton class
- Swift Random Numbers
- Swift Opaque and Boxed Type
- Swift Useful Resources
- Swift - Compile Online
- Swift - Quick Guide
- Swift - Useful Resources
- Swift - Discussion
Swift - SwiftyJSON
What is JSON Data?
JSON is known as JavaScript Object Notation. It is a lightweight and most commonly used data interchange format that is easy to read and write. It is generally used to transmit data between a server and an application. JSON data is generally represented in key-value pairs. For example −
{ "name": "Monika", "age": 23, "city": "Delhi" }
Here name, age and city are the keys and Monika, 23 and Delhi are their respective values. In Swift, we can work with JSON data using the SwiftyJSON library.
SwiftyJSON
SwiftyJSON is a very important and powerful Swift library to handle JSON data in Swift programming language. It is commonly used to read and process JSON data returned by the APIs. It simplifies the process of parsing and working with JSON data in Swift easily by providing subscript syntax. It also provides various data types.
Before SwiftyJSON the developer faced various problems while working with JSON data in Swift and the problems were −
Verbose Syntax − Before the SwiftyJSON library the JSON data in Swift was handled by the JSONSerialization class which provides verbose syntaxes. Developers had to work with nested casting and a significant amount of optional unwrapping which makes code more complex and hard to read.
Type Safety − While handling JSON data Swift doesn't provide any direct way to handle optional values or nested structures in a type-safe manner. The user has to either use conditional casting or manually check the presence of keys.
Readability − Reading and extracting values from the JSON was less readable. Swift doesn't provide easy and clean syntax to work with JSON data.
Error-handling − The developer had to use the do-catch block to handle errors manually because Swift does not provide any straightforward method to handle errors for JSON parsing and extracting.
Lack of Convenience − Before SwiftyJSON developers had to write more boilerplate code to pars JSON data which makes the parsing more time-consuming.
These issues are later solved by the SwiftJSON library. It provides more expressive and straightforward methods to deal with JSON data in Swift.
How to use SwiftyJSON?
To use the SwiftyJSON library in your project you have to follow the following steps −
Step 1 − Install SwiftyJSON.
To install SwiftyJSON you can use either CocoaPods or Swift Package Manager. Here we will use Swift Package Manager. So Open Xcode project → go to File → Swift Packages → Add Package Dependency and then enter the following SwiftyJSON GitHub repository URL −
https://github.com/SwiftyJSON/SwiftyJSON.git
Now follow the prompts to add the package.
Step 2 − Now to use SwiftyJSON import the library at the top of the code using the import keyword.
import SwiftyJSON
Creating JSON Object: To create a JSON object SwiftyJSON provides the following initialiser.
let object = JSON(data: dataObject) Or let obj = JSON(jsonObj)
Accessing data − You can use subscripts to access JSON data.
// Getting string from JSON dictionary let stdName = json[“name”].stringValue // Getting int from JSON array let value = json[1].int=
Iterating over an array or dictionary − SwiftyJSON supports a for-in loop to iterate over the elements of an array or dictionary.
// For array for(index, element):(String, JSON) in json{ Write something } // For dictionary for(key, element):(String, JSON) in json{ Write something }
Example
import SwiftyJSON // JSON string let inputJsonString = """ { "name": "Mohan", "age": 40, "branch": "CSE" }""" if let jsonObj = inputJsonString.data(using: .utf8) { let x = try? JSON(data: jsonObj) // Accessing values using SwiftyJSON subscript syntax let name = x?["name"].stringValue let age = x?["age"].intValue let branch = x?["branch"].stringValue // Perform operations print("Name: \(name ?? "N/A")") print("Age: \(age ?? 0)") print("Branch: \(branch ?? "N/A")") }
Output
This code will work on Xcode. It will not work on an online Swift compiler. −
Name: Mohan Age: 40 Branch: CSE