Bug 1973357 - Review Request: nlohmann-json - JSON for Modern C++
Summary: Review Request: nlohmann-json - JSON for Modern C++
Keywords:
Status: CLOSED NOTABUG
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
unspecified
medium
Target Milestone: ---
Assignee: Nobody's working on this, feel free to take it
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2021-06-17 16:46 UTC by Orion Poplawski
Modified: 2021-06-17 19:31 UTC (History)
2 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2021-06-17 19:31:14 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)

Description Orion Poplawski 2021-06-17 16:46:12 UTC
Spec URL: https://www.cora.nwra.com/~orion/fedora/nlohmann-json.spec
SRPM URL: https://www.cora.nwra.com/~orion/fedora/nlohmann-json-3.9.1-1.fc35.src.rpm

Description:
here are myriads of JSON libraries out there, and each may even have its
reason to exist. Our class had these design goals:

* Intuitive syntax. In languages such as Python, JSON feels like a first class
  data type. We used all the operator magic of modern C++ to achieve the same
  feeling in your code.

* Trivial integration. Our whole code consists of a single header file
  json.hpp. That's it. No library, no subproject, no dependencies, no complex
  build system. The class is written in vanilla C++11. All in all, everything
  should require no adjustment of your compiler flags or project settings.

* Serious testing. Our class is heavily unit-tested and covers 100% of the
  code, including all exceptional behavior. Furthermore, we checked with
  Valgrind and the Clang Sanitizers that there are no memory leaks. Google
  OSS-Fuzz additionally runs fuzz tests against all parsers 24/7, effectively
  executing billions of tests so far. To maintain high quality, the project is
  following the Core Infrastructure Initiative (CII) best practices.

Other aspects were not so important to us:

* Memory efficiency. Each JSON object has an overhead of one pointer (the
  maximal size of a union) and one enumeration element (1 byte). The default
  generalization uses the following C++ data types: std::string for strings,
  int64_t, uint64_t or double for numbers, std::map for objects, std::vector
  for arrays, and bool for Booleans. However, you can template the generalized
  class basic_json to your needs.

* Speed. There are certainly faster JSON libraries out there. However, if your
  goal is to speed up your development by adding JSON support with a single
  header, then this library is the way to go. If you know how to use a
  std::vector or std::map, you are already set.

Fedora Account System Username: orion

Scratch build: https://koji.fedoraproject.org/koji/taskinfo?taskID=70310430

Comment 1 Ben Beasley 2021-06-17 19:31:14 UTC
Hey, I started working on this once too! It’s easy to miss that this is already packaged as https://src.fedoraproject.org/rpms/json.


Note You need to log in before you can comment on or make changes to this bug.