Skip to content

GJSON vs JSON for Modern C++

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.

JSON for Modern C++

Open source · MIT

A single-header C++ library for reading, writing and manipulating JSON data.

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 JSON for Modern C++ if you need…

  • C++ developers who need to read or write JSON in an application
  • Teams that want a library with no dependencies and a simple header-based setup
  • Projects that prioritize ease of use over raw parsing speed
  • Developers who want JSON Patch or JSON Pointer support in C++

Side-by-side

GJSONJSON for Modern C++
TypeLibraryLibrary
PriceFree and open sourceFree and open source
LicenceMITMIT
GitHub stars15.6k50.8k
Setup difficultyBeginnerBeginner
How you get itInstall with a package managerClone and build from source
Main languageGoC++
Last code update32 days ago4 days 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.

JSON for Modern C++

nlohmann/json is a C++ library that lets programs work with JSON data using familiar C++ containers and operators, so JSON objects and arrays can be handled much like std::map and std::vector. It is distributed as a single header file, which makes it simple to add to a project. The README also mentions support for related formats such as CBOR, MessagePack and BSON, plus JSON Pointer and JSON Patch.

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

JSON for Modern C++

  • C++ developers who need to read or write JSON in an application
  • Teams that want a library with no dependencies and a simple header-based setup
  • Projects that prioritize ease of use over raw parsing speed
  • Developers who want JSON Patch or JSON Pointer support in C++

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

JSON for Modern C++

  • Single header file with no dependencies, according to the README
  • Intuitive syntax that feels close to native C++ containers
  • Heavily unit-tested with fuzzing via Google OSS-Fuzz and MIT licensed

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

JSON for Modern C++

  • Projects that need the fastest possible JSON parsing, since the README says faster libraries exist
  • Developers not working in C++, because this library is for C++ only
  • Projects that must avoid a large single header file in build times, as the README does not discuss compile-time cost

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

JSON for Modern C++

  • The README says it is not the fastest JSON library available
  • Documentation and examples are primarily hosted on an external site, so the README alone gives limited detail
  • The README is truncated, so some features and setup details could not be verified here

Getting started

GJSON

Install the library

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

JSON for Modern C++

Clone the repository

git clone https://github.com/nlohmann/json.git
Step-by-step guide: how to use JSON for Modern C++

Frequently asked questions

What is the difference between GJSON and JSON for Modern C++?

GJSON: A fast Go library for pulling values out of JSON using simple dot-style paths. JSON for Modern C++: A single-header C++ library for reading, writing and manipulating JSON data. GJSON suits go developers who need a few fields from a json response without writing struct definitions, while JSON for Modern C++ suits c++ developers who need to read or write json in an application.

Are GJSON and JSON for Modern C++ free?

GJSON: Free and open source. JSON for Modern C++: Free and open source.

Is GJSON or JSON for Modern C++ more popular?

JSON for Modern C++ has more GitHub stars (50.8k) 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 JSON for Modern C++?

Other options people compare them with include SwiftyJSON, cpp-httplib, EnTT.

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.