🪞 Formatter JSON delightfully.

Overview

SwiftJSONFormatter

🪞 Formatter JSON delightfully.

CI

Highlights

  1. Beautify and minify JSON strings.
  2. Keep dictionary key order stable.
  3. Work with invalid JSON strings.
  4. 100% pure Swift.
  5. Lightweight and performant.

Compatibility

  • macOS 10.13+
  • iOS 12+
  • tvOS 12+
  • watchOS 5+

Install

Add https://github.com/luin/SwiftJSONFormatter in the “Swift Package Manager” tab in Xcode.

Usage

After import SwiftJSONFormatter, you can access two static methods for beautifying and minifying.

Beautify

import SwiftJSONFormatter

SwiftJSONFormatter.beautify("{\"name\":\"Bob\"}")

// String output:
// {
//   "name": "Bob"
// }

By default, each level is indented by two spaces. You can customize it with the indent option:

import SwiftJSONFormatter

SwiftJSONFormatter.beautify("{\"name\":\"Bob\"}", indent: "    ")

// String output:
// {
//     "name": "Bob"
// }

Minify

import SwiftJSONFormatter

SwiftJSONFormatter.minify("""
{
  "name": "Bob"
}
""")

// String output:
// {"name":"Bob"}

FAQ

Why another JSON formatter?

In some cases, you can leverage a JSON parser to parse your JSON string to a Swift data structure and then encode it to a string with JSONEncoder and the .prettyPrinted option.

However, it comes with two drawbacks:

  1. Dictionary key order are changed randomly everytime.

    Swift dictionary, by nature, are not designed to be ordered. That means everytime you encode your JSON data back to a string, the result may be much different from the original one.

    Whereas this libaray guarantees the dictionary key orders are not changed after formatting.

  2. Doesn't work with invalid JSON data.

    This library makes a best effort to format invalid JSON data. It handles cases such as unterminated strings, trailing commas without issues.

These two drawbacks are non trivial when you are, for example, writing a JSON editor that accepts user inputs. You don't want dictionary key orders change on each formatting, nor the formatter suddenly doesn't work at all when users enter a trailing commas.

Can I use this as a JSON parser?

No. This library is not a JSON parser so here are what it cannot do:

  1. Parse JSON strings into AST or Swift data structures.
  2. Validate JSON strings.

You'll need to find a real one like SwiftyJSON if those are what you need.

You might also like...
Elevate is a JSON parsing framework that leverages Swift to make parsing simple, reliable and composable

Elevate is a JSON parsing framework that leverages Swift to make parsing simple, reliable and composable. Elevate should no longer be used for

Reflection based (Dictionary, CKRecord, NSManagedObject, Realm, JSON and XML) object mapping with extensions for Alamofire and Moya with RxSwift or ReactiveSwift

EVReflection General information At this moment the master branch is tested with Swift 4.2 and 5.0 beta If you want to continue using EVReflection in

Freddy - A reusable framework for parsing JSON in Swift.
Freddy - A reusable framework for parsing JSON in Swift.

Why Freddy? Parsing JSON elegantly and safely can be hard, but Freddy is here to help. Freddy is a reusable framework for parsing JSON in Swift. It ha

[Deprecated] A shiny JSON parsing library in Swift :sparkles: Loved by many from 2015-2021
[Deprecated] A shiny JSON parsing library in Swift :sparkles: Loved by many from 2015-2021

🚨 Deprecation Notice 🚨 Gloss has been deprecated in favor of Swift's Codable framework. The existing Gloss source is not going away, however updates

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

Himotoki (紐解き) is a type-safe JSON decoding library written purely in Swift.

Himotoki Himotoki (紐解き) is a type-safe JSON decoding library written purely in Swift. This library is highly inspired by the popular Swift JSON parsin

JASON is a faster JSON deserializer written in Swift.
JASON is a faster JSON deserializer written in Swift.

JASON is a faster JSON deserializer written in Swift. JASON is the best framework we found to manage JSON at Swapcard. This is by far the fastest and

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

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

Releases(2.0.0)
Owner
Zihua Li
Web developer and designer, technical book author. I build tools that help people do things better.
Zihua Li
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
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
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-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
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
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
Functional JSON Parser - Linux Ready

Functional JSON Parser Feature Linux Ready Type-safe JSON parsing Functional value transformation Easy to parse nested value Dependency free No define

Ryo Aoyama 117 Sep 9, 2022
Argo is a library that lets you extract models from JSON or similar structures in a way that's concise, type-safe, and easy to extend

Argo is a library that lets you extract models from JSON or similar structures in a way that's concise, type-safe, and easy to extend. Using Argo

thoughtbot, inc. 3.5k Dec 20, 2022
Arrow 🏹 Parse JSON with style

Arrow ?? Parse JSON with style

Fresh 376 Nov 8, 2022