Skip to content

GJSON vs SwiftyJSON

Which should you use? A side-by-side look at what each one does, who it suits, what it costs, how hard it is to set up, and where each falls short.

GJSON

Open source · MIT

A fast Go library for pulling values out of JSON using simple dot-style paths.

SwiftyJSON

Open source · MIT

A Swift library that makes reading JSON data simpler and safer than Foundation's built-in parsing.

The short answer

Choose GJSON if you need…

  • Go developers who need a few fields from a JSON response without writing struct definitions
  • Services that read large JSON payloads and want to avoid full unmarshalling for simple lookups
  • Developers who want to filter array elements with short query expressions
  • Projects that process JSON Lines input

Choose SwiftyJSON if you need…

  • Swift developers building iOS, macOS, tvOS or watchOS apps that read JSON from web APIs
  • Teams maintaining existing projects that already use SwiftyJSON
  • Developers who want quick access to nested JSON without writing many optional casts

Side-by-side

GJSONSwiftyJSON
TypeLibraryLibrary
PriceFree and open sourceFree and open source
LicenceMITMIT
GitHub stars15.6k22.9k
Setup difficultyBeginnerBeginner
How you get itInstall with a package managerInstall with a package manager
Main languageGoSwift
Last code update32 days ago3 months ago

What each one is

GJSON

GJSON is a Go package that reads values from a JSON document using short path strings such as "name.last" or "age". You give it the JSON text and a path, and it returns the matching value without you having to define structs or fully parse the document. It also supports array queries, iteration, and modifier functions for simple transformations.

SwiftyJSON

SwiftyJSON is a Swift library for working with JSON data, the common text format apps use to exchange information with servers. Instead of writing nested type casts to pull out a value, you can write short paths like json[0]["user"]["name"] and get an optional or a default value back. The README says this avoids crashes from missing keys or wrong types, because errors are stored on the result rather than thrown.

Best for

GJSON

  • Go developers who need a few fields from a JSON response without writing struct definitions
  • Services that read large JSON payloads and want to avoid full unmarshalling for simple lookups
  • Developers who want to filter array elements with short query expressions
  • Projects that process JSON Lines input

SwiftyJSON

  • Swift developers building iOS, macOS, tvOS or watchOS apps that read JSON from web APIs
  • Teams maintaining existing projects that already use SwiftyJSON
  • Developers who want quick access to nested JSON without writing many optional casts

Strengths

GJSON

  • Simple one-line lookups using dot-notation paths, as shown in the README examples
  • Supports 64-bit integer reads through Int() and Uint()
  • Extensible with custom modifiers via AddModifier

SwiftyJSON

  • Short, readable syntax for nested JSON access compared with the README's JSONSerialization examples
  • Missing keys or wrong types return an error value instead of crashing, according to the README
  • Supports common installation routes: CocoaPods, Carthage and Swift Package Manager

Not ideal for

GJSON

  • Projects that need to modify JSON; the README points to the separate SJSON project for that
  • Non-Go projects; the README mentions Python and Rust ports maintained separately, not this Go package
  • Anyone needing full schema validation or typed mapping of whole documents, since this focuses on path-based lookups

SwiftyJSON

  • Projects that need strongly typed models; the README's approach is dynamic lookup, and Swift's Codable is not discussed in the README excerpt
  • Non-Swift projects, since this is a Swift library
  • Projects on platform versions or Swift toolchains below those listed in the Requirements section

Trade-offs

GJSON

  • The README's performance claims are linked but not verified here; treat speed as unconfirmed by this review
  • Query syntax and modifiers have their own learning curve, and the full details live in SYNTAX.md
  • Older bracket query syntax #[...] is deprecated and only kept until the next major release

SwiftyJSON

  • Dynamic lookups move type checking to runtime, so typos in keys are caught later than with typed models
  • The README excerpt is truncated, so details of the newer 5.x API are not fully visible here
  • Latest release shown is 5.0.2 with no binaries, so you install it through a package manager or source

Getting started

GJSON

Install the library

go get -u github.com/tidwall/gjson
Step-by-step guide: how to use GJSON

SwiftyJSON

Add to Package.swift (Swift Package Manager)

https://github.com/SwiftyJSON/SwiftyJSON.git

Install with CocoaPods (Podfile entry)

pod 'SwiftyJSON', '~> 4.0'
Step-by-step guide: how to use SwiftyJSON

Frequently asked questions

What is the difference between GJSON and SwiftyJSON?

GJSON: A fast Go library for pulling values out of JSON using simple dot-style paths. SwiftyJSON: A Swift library that makes reading JSON data simpler and safer than Foundation's built-in parsing. GJSON suits go developers who need a few fields from a json response without writing struct definitions, while SwiftyJSON suits swift developers building ios, macos, tvos or watchos apps that read json from web apis.

Are GJSON and SwiftyJSON free?

GJSON: Free and open source. SwiftyJSON: Free and open source.

Is GJSON or SwiftyJSON more popular?

SwiftyJSON has more GitHub stars (22.9k) than GJSON (15.6k). Popularity isn't the same as fit — check which one matches your use case above.

What are other alternatives to GJSON and SwiftyJSON?

Other options people compare them with include JSON for Modern C++, Alamofire, SwifterSwift, SVProgressHUD, Eureka.

Keep comparing

Built from our catalogue entries for both products: open-source details come from each project's README (AI-assisted, refreshed weekly) and GitHub data; AI-tool details are editorial. Spotted something wrong? Let us know from either product's page.