SwiftyJSON makes it easy to deal with JSON data in Swift.

Overview

SwiftyJSON

Carthage compatible CocoaPods Platform Reviewed by Hound

SwiftyJSON makes it easy to deal with JSON data in Swift.

Platform Build Status
*OS Travis CI
Linux Build Status
  1. Why is the typical JSON handling in Swift NOT good
  2. Requirements
  3. Integration
  4. Usage
  5. Work with Alamofire
  6. Work with Moya
  7. SwiftyJSON Model Generator

Why is the typical JSON handling in Swift NOT good?

Swift is very strict about types. But although explicit typing is good for saving us from mistakes, it becomes painful when dealing with JSON and other areas that are, by nature, implicit about types.

Take the Twitter API for example. Say we want to retrieve a user's "name" value of some tweet in Swift (according to Twitter's API).

The code would look like this:

if let statusesArray = try? JSONSerialization.jsonObject(with: data, options: .allowFragments) as? [[String: Any]],
    let user = statusesArray[0]["user"] as? [String: Any],
    let username = user["name"] as? String {
    // Finally we got the username
}

It's not good.

Even if we use optional chaining, it would be messy:

if let JSONObject = try JSONSerialization.jsonObject(with: data, options: .allowFragments) as? [[String: Any]],
    let username = (JSONObject[0]["user"] as? [String: Any])?["name"] as? String {
        // There's our username
}

An unreadable mess--for something that should really be simple!

With SwiftyJSON all you have to do is:

let json = JSON(data: dataFromNetworking)
if let userName = json[0]["user"]["name"].string {
  //Now you got your value
}

And don't worry about the Optional Wrapping thing. It's done for you automatically.

let json = JSON(data: dataFromNetworking)
let result = json[999999]["wrong_key"]["wrong_name"]
if let userName = result.string {
    //Calm down, take it easy, the ".string" property still produces the correct Optional String type with safety
} else {
    //Print the error
    print(result.error)
}

Requirements

  • iOS 8.0+ | macOS 10.10+ | tvOS 9.0+ | watchOS 2.0+
  • Xcode 8

Integration

CocoaPods (iOS 8+, OS X 10.9+)

You can use CocoaPods to install SwiftyJSON by adding it to your Podfile:

platform :ios, '8.0'
use_frameworks!

target 'MyApp' do
    pod 'SwiftyJSON', '~> 4.0'
end

Carthage (iOS 8+, OS X 10.9+)

You can use Carthage to install SwiftyJSON by adding it to your Cartfile:

4.0 ">
github "SwiftyJSON/SwiftyJSON" ~> 4.0

If you use Carthage to build your dependencies, make sure you have added SwiftyJSON.framework to the "Linked Frameworks and Libraries" section of your target, and have included them in your Carthage framework copying build phase.

Swift Package Manager

You can use The Swift Package Manager to install SwiftyJSON by adding the proper description to your Package.swift file:

// swift-tools-version:4.0
import PackageDescription

let package = Package(
    name: "YOUR_PROJECT_NAME",
    dependencies: [
        .package(url: "https://github.com/SwiftyJSON/SwiftyJSON.git", from: "4.0.0"),
    ]
)

Then run swift build whenever you get prepared.

Manually (iOS 7+, OS X 10.9+)

To use this library in your project manually you may:

  1. for Projects, just drag SwiftyJSON.swift to the project tree
  2. for Workspaces, include the whole SwiftyJSON.xcodeproj

Usage

Initialization

import SwiftyJSON
let json = JSON(data: dataFromNetworking)

Or

let json = JSON(jsonObject)

Or

if let dataFromString = jsonString.data(using: .utf8, allowLossyConversion: false) {
    let json = JSON(data: dataFromString)
}

Subscript

// Getting a double from a JSON Array
let name = json[0].double
// Getting an array of string from a JSON Array
let arrayNames =  json["users"].arrayValue.map {$0["name"].stringValue}
// Getting a string from a JSON Dictionary
let name = json["name"].stringValue
// Getting a string using a path to the element
let path: [JSONSubscriptType] = [1,"list",2,"name"]
let name = json[path].string
// Just the same
let name = json[1]["list"][2]["name"].string
// Alternatively
let name = json[1,"list",2,"name"].string
// With a hard way
let name = json[].string
// With a custom way
let keys:[JSONSubscriptType] = [1,"list",2,"name"]
let name = json[keys].string

Loop

// If json is .Dictionary
for (key,subJson):(String, JSON) in json {
   // Do something you want
}

The first element is always a String, even if the JSON is an Array

// If json is .Array
// The `index` is 0..
for (index,subJson):(String, JSON) in json {
    // Do something you want
}

Error

SwiftyJSON 4.x

SwiftyJSON 4.x introduces an enum type called SwiftyJSONError, which includes unsupportedType, indexOutOfBounds, elementTooDeep, wrongType, notExist and invalidJSON, at the same time, ErrorDomain are being replaced by SwiftyJSONError.errorDomain. Note: Those old error types are deprecated in SwiftyJSON 4.x and will be removed in the future release.

SwiftyJSON 3.x

Use a subscript to get/set a value in an Array or Dictionary

If the JSON is:

  • an array, the app may crash with "index out-of-bounds."
  • a dictionary, it will be assigned to nil without a reason.
  • not an array or a dictionary, the app may crash with an "unrecognised selector" exception.

This will never happen in SwiftyJSON.

let json = JSON(["name", "age"])
if let name = json[999].string {
    // Do something you want
} else {
    print(json[999].error!) // "Array[999] is out of bounds"
}
let json = JSON(["name":"Jack", "age": 25])
if let name = json["address"].string {
    // Do something you want
} else {
    print(json["address"].error!) // "Dictionary["address"] does not exist"
}
let json = JSON(12345)
if let age = json[0].string {
    // Do something you want
} else {
    print(json[0])       // "Array[0] failure, It is not an array"
    print(json[0].error!) // "Array[0] failure, It is not an array"
}

if let name = json["name"].string {
    // Do something you want
} else {
    print(json["name"])       // "Dictionary[\"name"] failure, It is not an dictionary"
    print(json["name"].error!) // "Dictionary[\"name"] failure, It is not an dictionary"
}

Optional getter

// NSNumber
if let id = json["user"]["favourites_count"].number {
   // Do something you want
} else {
   // Print the error
   print(json["user"]["favourites_count"].error!)
}
// String
if let id = json["user"]["name"].string {
   // Do something you want
} else {
   // Print the error
   print(json["user"]["name"].error!)
}
// Bool
if let id = json["user"]["is_translator"].bool {
   // Do something you want
} else {
   // Print the error
   print(json["user"]["is_translator"].error!)
}
// Int
if let id = json["user"]["id"].int {
   // Do something you want
} else {
   // Print the error
   print(json["user"]["id"].error!)
}
...

Non-optional getter

Non-optional getter is named xxxValue

// If not a Number or nil, return 0
let id: Int = json["id"].intValue
// If not a String or nil, return ""
let name: String = json["name"].stringValue
// If not an Array or nil, return []
let list: Array = json["list"].arrayValue
// If not a Dictionary or nil, return [:]
let user: Dictionary<String, JSON> = json["user"].dictionaryValue

Setter

json["name"] = JSON("new-name")
json[0] = JSON(1)
json["id"].int =  1234567890
json["coordinate"].double =  8766.766
json["name"].string =  "Jack"
json.arrayObject = [1,2,3,4]
json.dictionaryObject = ["name":"Jack", "age":25]

Raw object

let rawObject: Any = json.object
let rawValue: Any = json.rawValue
//convert the JSON to raw NSData
do {
	let rawData = try json.rawData()
  //Do something you want
} catch {
	print("Error \(error)")
}
//convert the JSON to a raw String
if let rawString = json.rawString() {
  //Do something you want
} else {
	print("json.rawString is nil")
}

Existence

// shows you whether value specified in JSON or not
if json["name"].exists()

Literal convertibles

For more info about literal convertibles: Swift Literal Convertibles

// StringLiteralConvertible
let json: JSON = "I'm a json"
/ /IntegerLiteralConvertible
let json: JSON =  12345
// BooleanLiteralConvertible
let json: JSON =  true
// FloatLiteralConvertible
let json: JSON =  2.8765
// DictionaryLiteralConvertible
let json: JSON =  ["I":"am", "a":"json"]
// ArrayLiteralConvertible
let json: JSON =  ["I", "am", "a", "json"]
// With subscript in array
var json: JSON =  [1,2,3]
json[0] = 100
json[1] = 200
json[2] = 300
json[999] = 300 // Don't worry, nothing will happen
// With subscript in dictionary
var json: JSON =  ["name": "Jack", "age": 25]
json["name"] = "Mike"
json["age"] = "25" // It's OK to set String
json["address"] = "L.A." // Add the "address": "L.A." in json
// Array & Dictionary
var json: JSON =  ["name": "Jack", "age": 25, "list": ["a", "b", "c", ["what": "this"]]]
json["list"][3]["what"] = "that"
json["list",3,"what"] = "that"
let path: [JSONSubscriptType] = ["list",3,"what"]
json[path] = "that"
// With other JSON objects
let user: JSON = ["username" : "Steve", "password": "supersecurepassword"]
let auth: JSON = [
  "user": user.object, // use user.object instead of just user
  "apikey": "supersecretapitoken"
]

Merging

It is possible to merge one JSON into another JSON. Merging a JSON into another JSON adds all non existing values to the original JSON which are only present in the other JSON.

If both JSONs contain a value for the same key, mostly this value gets overwritten in the original JSON, but there are two cases where it provides some special treatment:

  • In case of both values being a JSON.Type.array the values form the array found in the other JSON getting appended to the original JSON's array value.
  • In case of both values being a JSON.Type.dictionary both JSON-values are getting merged the same way the encapsulating JSON is merged.

In a case where two fields in a JSON have different types, the value will get always overwritten.

There are two different fashions for merging: merge modifies the original JSON, whereas merged works non-destructively on a copy.

let original: JSON = [
    "first_name": "John",
    "age": 20,
    "skills": ["Coding", "Reading"],
    "address": [
        "street": "Front St",
        "zip": "12345",
    ]
]

let update: JSON = [
    "last_name": "Doe",
    "age": 21,
    "skills": ["Writing"],
    "address": [
        "zip": "12342",
        "city": "New York City"
    ]
]

let updated = original.merge(with: update)
// [
//     "first_name": "John",
//     "last_name": "Doe",
//     "age": 21,
//     "skills": ["Coding", "Reading", "Writing"],
//     "address": [
//         "street": "Front St",
//         "zip": "12342",
//         "city": "New York City"
//     ]
// ]

String representation

There are two options available:

  • use the default Swift one
  • use a custom one that will handle optionals well and represent nil as "null":
let dict = ["1":2, "2":"two", "3": nil] as [String: Any?]
let json = JSON(dict)
let representation = json.rawString(options: [.castNilToNSNull: true])
// representation is "{\"1\":2,\"2\":\"two\",\"3\":null}", which represents {"1":2,"2":"two","3":null}

Work with Alamofire

SwiftyJSON nicely wraps the result of the Alamofire JSON response handler:

Alamofire.request(url, method: .get).validate().responseJSON { response in
    switch response.result {
    case .success(let value):
        let json = JSON(value)
        print("JSON: \(json)")
    case .failure(let error):
        print(error)
    }
}

We also provide an extension of Alamofire for serializing NSData to SwiftyJSON's JSON.

See: Alamofire-SwiftyJSON

Work with Moya

SwiftyJSON parse data to JSON:

let provider = MoyaProvider<Backend>()
provider.request(.showProducts) { result in
    switch result {
    case let .success(moyaResponse):
        let data = moyaResponse.data
        let json = JSON(data: data) // convert network data to json
        print(json)
    case let .failure(error):
        print("error: \(error)")
    }
}

SwiftyJSON Model Generator

Tools to generate SwiftyJSON Models

Comments
  • SwitfyJSON breaks with update to iOS 8.3 & Xcode 6.3

    SwitfyJSON breaks with update to iOS 8.3 & Xcode 6.3

    Hi,

    I am developing an app in Swift and I have ported SwitfyJSON and it worked fine in iOS 8.2. Once I upgraded my iOS to 8.3 and Xcode to 6.3, I got lot of compile errors in Swifty and most of them are warnings to change "as" with "as?" optional. There was one error in function rawString which complained "NSString? is not convertible to String?"

    I have modified the code from

    return NSString(data: data, encoding: encoding)

    to

    return NSString(data: data, encoding: encoding) as? String

    Then the code compiled successfully but all data retrieval statements are not working now.For example, response["myname"] returned the value in 8.2 but the same line returning null in 8.3 after fixing compilation errors

    opened by slysid 44
  • Segmentation faults when using SwiftyJSON as a subproject

    Segmentation faults when using SwiftyJSON as a subproject

    If you add SwiftyJSON by dragging in the SwiftyJSON.xcodeproj then linking the framework and add a class like the following:

    import SwiftyJSON
    
    class Object {
    func method(json: JSON) {
    }
    }
    

    You'll get a segmentation fault

    discuss 
    opened by Noobish1 42
  • Use of unresolved identifier 'JSON' if installed via Cocoapods

    Use of unresolved identifier 'JSON' if installed via Cocoapods

    Hi there,

    I was wondering if this is a bug or if I'm doing something wrong. I'm working with Cocoapods 0.36, Xcode 6.2 and followed the steps in the README of SwiftyJSON.

    My Podfile looks like this

    source 'https://github.com/CocoaPods/Specs.git'
    platform :ios, '8.0'
    use_frameworks!
    
    pod 'Alamofire', '~> 1.1'
    pod 'SwiftyJSON', '>= 2.1.3'
    

    I've updated my pods via pod install This resulted in following output, so I guess everything is OK

    pod install
    Analyzing dependencies
    Downloading dependencies
    Using Alamofire (1.1.4)
    Using SwiftyJSON (2.1.3)
    Generating Pods project
    Integrating client project
    

    Now I tried the following code

    Alamofire.request(.GET, "http://localhost/devine/students.json")
         .responseJSON { (request, response, data, error) in
    
             // Convert received JSON data to SwiftyJSON object
             let studentData = JSON(data) -> Got 'Use of unresolved identifier JSON here'
    }
    

    When I just drag and drop the SwiftyJSON files in my project (the 'manual' way) it does work, but I would like to use Cocoapods!

    Kind regards, Frederik

    opened by frederik-jacques 35
  • Any plan to update to Xcode 7 with latest Swift syntax?

    Any plan to update to Xcode 7 with latest Swift syntax?

    When I switch to Xcode 7-beta, it shows some suggestion to convert my current project to Latest Swift Syntax.

    Also, I see there are a lot Syntax change in the new version like this below: Before conversion private subscript(#index: Int) -> JSON { After conversion private subscript(index: Int) -> JSON {

    opened by coolgeng 23
  • Fix incompatibility with Carthage

    Fix incompatibility with Carthage

    Carthage tries to build the framework targets in the first project it finds. It finds Example.xcodeproj first, so no frameworks are built, or at least not all the time. See https://github.com/Carthage/Carthage/issues/532.

    This PR moves the example project into a subdirectory and makes SwiftyJSON work with Carthage again.

    opened by Thomvis 19
  • Add Swift 3 Compatibility

    Add Swift 3 Compatibility

    With the upcoming release of Swift 3 (and the newly introduced incompatibility to Swift 2.2 and older in Xcode 8) it would be great to have a separate branch with Swift 3 compatibility.

    Please consider also adding a Swift 2.3 branch for people who can’t migrate to Swift 3, because of other dependencies.

    opened by rbugajewski 17
  • '++' is deprecated: it will be removed in Swift 3

    '++' is deprecated: it will be removed in Swift 3

    The following code triggers this warning when building with Swift 3:

        public mutating func next() -> JSONGenerator.Element? {
            switch self.type {
            case .Array:
                if let o = self.arrayGenerate!.next() {
                    return (String(self.arrayIndex++), JSON(o)) // *** This is the line with the warning
                } else {
                    return nil
                }
            case .Dictionary:
                if let (k, v): (String, AnyObject) = self.dictionayGenerate!.next() {
                    return (k, JSON(v))
                } else {
                    return nil
                }
            default:
                return nil
            }
        }
    
    opened by mlaster 17
  • Memory leak in XCode 7.1 beta

    Memory leak in XCode 7.1 beta

    I use Alamofire to make an API call and use SwiftyJSON to wrap around the json response. XCode Instrument shows that there's memory leak created by Alamofire library. Here's the code (pretty simple) :

    Alamofire.request(service.method, service.url, parameters: nil, encoding: ParameterEncoding.URL,
    headers: headers).responseJSON(completionHandler: { (req, res, result) -> Void in
    
           // This line leak the memory
           let json = JSON(result.value!)
        })
    

    If i comment out the line let json = JSON(result.value!) then no more memory leak.

    bug 
    opened by namanhams 16
  • Get 'command failed due to signal segmentation fault 11' when I use JSON as parameter type

    Get 'command failed due to signal segmentation fault 11' when I use JSON as parameter type

    I just create a simple function like this func foo(j:JSON) { }

    When Xcode 6.2 compiler throws out error 'command failed due to signal segmentation fault 11' . But if I remove it, it compiles properly.

    Thanks Jake

    opened by JakeLin 16
  • Represent JSON as string even if Swift can't do it

    Represent JSON as string even if Swift can't do it

    Swift cannot represent dictionaries with nil values as json (http://stackoverflow.com/questions/13908094/how-to-include-null-value-in-the-json-via-nsjsonserialization) and the current SwiftyJSON string representation that relies on the default swift JSON string representation will fail as way.

    Here I created a custom string representation that doesn't doesn't rely on the built in one, and can handle things with nil or values. I also added a few tests.

    discuss 
    opened by gsabran 15
  • How to access a key in a json object?

    How to access a key in a json object?

    For example:

    {
        response =     {
            docs =         (
                            {
                    "_version_" = 15352wqwd18967678812160;
                    active =                 (
                        1
                    );
                    email =                 (
                        "[email protected]"
                    );
                    firstName =                 (
                        Nehlo
                    );
                    id = NehloTestUser1464098899306;
                    lastName =                 (
                        Test
                    );
                    mode =                 (
                        User
                    );
                    password =                 (
                        wear21zero
                    );
                }
            );
            numFound = 1;
            start = 0;
        };
        responseHeader =     {
            QTime = 1;
            params =         {
                indent = true;
                q = "mode:* AND active:true AND email:([email protected]) AND password:(wear21zero)";
                rows = 10;
                wt = json;
            };
            status = 0;
        };
    }
    

    is a json I am receiving from the server. How do I check for the "numFound" value? Like if it is 1, i should push the user to the main screen else ask him to input correct username/password. Help please?? I am using Alamofire.

    opened by Dershowitz011 15
  • How to test if a property exists on a JSON object?

    How to test if a property exists on a JSON object?

    Xcode 13.4.1 with SwiftUI

    Given a simple JSON object (hash) How can I check if an optional property exists?

    Ex: JSON object is of type SwiftyJSON:

    if(JSON.exists("myOptionalProperty") { //DO SOMETHING }

    Either I'm missing this or it's a lacking feature.

    opened by RTSMikeM 1
  • What is SwiftJSON latest version as per current date(20/06/022 stable version only) which supports iOS 15+  AND what is Alamofire version which supports iOS 15+, both should supports iOS 15 and it's Above version.

    What is SwiftJSON latest version as per current date(20/06/022 stable version only) which supports iOS 15+ AND what is Alamofire version which supports iOS 15+, both should supports iOS 15 and it's Above version.

    What is SwiftJSON latest version as per current date(20/06/022 stable version only) which supports iOS 15+ AND what is Alamofire version which supports iOS 15+, both should supports iOS 15 and it's Above version. Please me with links, thanks Advance :) :)

    Originally posted by @ReddyInd in https://github.com/SwiftyJSON/SwiftyJSON/issues/1108#issuecomment-1159968475

    opened by ReddyInd 0
  • Set Example project Deployment Target to same as SwiftJSON project

    Set Example project Deployment Target to same as SwiftJSON project

    Example project failed to compile since SwiftyJSON for iOS requires 9.0 deployment target while Example project had 8.0.

    Also adds CI step to ensure Example project compiles

    opened by Dahlgren 0
  • Please assist urgent

    Please assist urgent

    Hi guys, My current project has been using swiftyjson Facebook login I have to convert them to remove Facebook token and convert to normal token please assist

    opened by arvobrendon 1
  • Crash on iOS 15

    Crash on iOS 15

    What did you do?

    XCode organizer pointed me to a crash happening exclusively for iOS 15 devices.

    Environment

    • SwiftyJSON: 5.0.1
    • Xcode Version: 12.5.1
    • Swift Version: 5
    • Cocoapods: 1.11.2
    image
    opened by olegtatarciuc 3
Releases(5.0.0)
Owner
SwiftyJSON
SwiftyJSON
SwiftyJSON decoder for Codable

SwiftyJSONDecoder 功能 继承自 JSONDecoder,在标准库源码基础上做了改动,与其主要区别如下 使用 SwiftyJSON 解析数据,使用其类型兼容功能 废弃 nonConformingFloatDecodingStrategy 属性设置,Double 及 Float 默认解

null 2 Aug 10, 2022
ObjectMapper is a framework written in Swift that makes it easy for you to convert your model objects to and from JSON.

ObjectMapper is a framework written in Swift that makes it easy for you to convert your model objects (classes and structs) to and from J

Tristan Himmelman 9k Jan 2, 2023
Magical Data Modeling Framework for JSON - allows rapid creation of smart data models. You can use it in your iOS, macOS, watchOS and tvOS apps.

JSONModel - Magical Data Modeling Framework for JSON JSONModel allows rapid creation of smart data models. You can use it in your iOS, macOS, watchOS

JSONModel 6.9k Dec 8, 2022
Magical Data Modeling Framework for JSON - allows rapid creation of smart data models. You can use it in your iOS, macOS, watchOS and tvOS apps.

JSONModel - Magical Data Modeling Framework for JSON JSONModel allows rapid creation of smart data models. You can use it in your iOS, macOS, watchOS

JSONModel 6.8k Nov 19, 2021
JSEN (JSON Swift Enum Notation) is a lightweight enum representation of a JSON, written in Swift.

JSEN /ˈdʒeɪsən/ JAY-sən JSEN (JSON Swift Enum Notation) is a lightweight enum representation of a JSON, written in Swift. A JSON, as defined in the EC

Roger Oba 8 Nov 22, 2022
Swift-json - High-performance json parsing in swift

json 0.1.4 swift-json is a pure-Swift JSON parsing library designed for high-per

kelvin 43 Dec 15, 2022
JSON-Practice - JSON Practice With Swift

JSON Practice Vista creada con: Programmatic + AutoLayout Breve explicación de l

Vanesa Giselle Korbenfeld 0 Oct 29, 2021
Ss-json - High-performance json parsing in swift

json 0.1.1 swift-json is a pure-Swift JSON parsing library designed for high-per

kelvin 43 Dec 15, 2022
Swift parser for JSON Feed — a new format similar to RSS and Atom but in JSON.

JSONFeed Swift parser for JSON Feed — a new format similar to RSS and Atom but in JSON. For more information about this new feed format visit: https:/

Toto Tvalavadze 31 Nov 22, 2021
JSONNeverDie - Auto reflection tool from JSON to Model, user friendly JSON encoder / decoder, aims to never die

JSONNeverDie is an auto reflection tool from JSON to Model, a user friendly JSON encoder / decoder, aims to never die. Also JSONNeverDie is a very important part of Pitaya.

John Lui 454 Oct 30, 2022
AlamofireObjectMappe - An Alamofire extension which converts JSON response data into swift objects using ObjectMapper

AlamofireObjectMapper An extension to Alamofire which automatically converts JSON response data into swift objects using ObjectMapper. Usage Given a U

Tristan Himmelman 2.6k Dec 29, 2022
Developed with use Swift language. As a third party library used SDWebImage. JSON parsing using URLSession with TMDB API. This app provide by the Core Data structure.

Capstone Project ?? About Developed with use Swift language. As a third party library used SDWebImage. JSON parsing using URLSession with TMDB API. Ad

Ensar Batuhan Unverdi 9 Aug 22, 2022
JSONHelper - ✌ Convert anything into anything in one operation; JSON data into class instances, hex strings into UIColor/NSColor, y/n strings to booleans, arrays and dictionaries of these; anything you can make sense of!

JSONHelper Convert anything into anything in one operation; hex strings into UIColor/NSColor, JSON strings into class instances, y/n strings to boolea

Baris Sencan 788 Jul 19, 2022
From JSON to Core Data and back.

Groot Groot provides a simple way of serializing Core Data object graphs from or into JSON. It uses annotations in the Core Data model to perform the

Guille Gonzalez 533 Nov 3, 2022
An extension for Alamofire that converts JSON data into Decodable objects.

Swift 4 introduces a new Codable protocol that lets you serialize and deserialize custom data types without writing any special code and without havin

Nikita Ermolenko 749 Dec 5, 2022
Coding Challenge using NYC JSON data

Coding Challenge using NYC JSON data This was my submission to JPMorgan's code challenge prior to an interview. It represents my solution to asyncrono

null 0 Dec 9, 2021
Nikolai Saganenko 1 Jan 9, 2022
HandyJSON is a framework written in Swift which to make converting model objects to and from JSON easy on iOS.

HandyJSON To deal with crash on iOS 14 beta4 please try version 5.0.3-beta HandyJSON is a framework written in Swift which to make converting model ob

Alibaba 4.1k Dec 29, 2022
The easy to use Swift JSON decoder

Unbox is deprecated in favor of Swift’s built-in Codable API and the Codextended project. All current users are highly encouraged to migrate to Codable as soon as possible.

John Sundell 2k Dec 31, 2022