Commit Graph
62 Commits
Author SHA1 Message Date
Niels Lohmann 63c10a51fc Review and extend the documentation, and check it in CI (#5638)
* Review and extend the documentation, and check it in CI

A review of all documentation pages found factual errors, dead links,
missing cross-references, and gaps in examples. This fixes them and adds
checks so the same problems are caught automatically.

Fixes:
- wrong signatures and version histories (operator!= C++20 member,
  binary() subtype type, get<PointerType>(), JSON_NO_THREAD_LOCAL, ...)
- stale descriptions (number parsing since #5283, UBJSON table, SAX
  example that no longer compiled, tsl::ordered_map advice)
- dead internal and external links; repology.org badges (the domain is
  suspended) replaced by badges that query the registries directly
- deprecation notes link the migration guide; the guide itself fixed

Additions:
- "See also" sections, cross-references, 25 runnable examples, 12
  Mermaid diagrams, new API pages for json_pointer::operator<=> and
  byte_container_with_subtype::operator==/!=
- landing page, guides for untrusted input and performance
- "unreleased" badge after versions newer than the latest release

Checks:
- strict documentation build (broken links/anchors fail it); CI and
  the publish workflow fetch the full history the build needs
- weekly external link check, Mermaid syntax check in CI
- check_structure.py: example titles, heading levels, alt texts,
  header links, docset index coverage; its unused-example check works
  again
- all examples produce the same output on every platform

Signed-off-by: Niels Lohmann <mail@nlohmann.me>

* Keep the customer links that could not be fixed

A dead link on the customers page is still the evidence of where the
use of the library was documented. Keep the original URLs of the entries
without a working replacement (Marne, Cisco Webex Desk Camera, Philips
Hue, CyberArk) and exclude exactly these URLs from the link check.

Signed-off-by: Niels Lohmann <mail@nlohmann.me>

* Correct the duplicate-key recipe's claim about SAX positions

The SAX interface's key() receives no position either; only parse_error()
does. Also note that the recipe does not report the path to the repeated
key (see discussion #5085).

Signed-off-by: Niels Lohmann <mail@nlohmann.me>

* Say the library is available as a single header and mention json_fwd.hpp

Signed-off-by: Niels Lohmann <mail@nlohmann.me>

* Correct documentation errors found while hunting for bugs

- patch/patch_inplace: list the JSON pointer errors parse_error.106-109
  and out_of_range.402/404, and quote the actual parse_error.105 message.
- unflatten: list parse_error.106/107/108 and out_of_range.404.
- to_bson: list out_of_range.415 (binary subtype above 255) and note
  that 412 and 415 are new in 3.13.0.
- to_string: state that string_t must be convertible to std::string, also
  in the StringType requirements table.
- JSON Lines: a `while (input >> j)` loop also throws after the last value
  for concatenated JSON values; show a loop that works for both.
- BON8: a string gets 0xFF only if nothing follows it in the message; a
  string at the end of an array or object is ended by 0xFE.
- custom_string_type.hpp: add operator+=(char), which the "Always
  required" list asks for (json_pointer::to_string, flatten, unflatten,
  and diff did not compile), and an ADL int_to_string for diff and items.

Signed-off-by: Niels Lohmann <mail@nlohmann.me>

* Cache the release headers with functools.lru_cache

Codacy (Pylint) flagged the mutable default argument that header() used
as its cache. functools.lru_cache keeps the same memoization without it.
The script's output is unchanged.

Signed-off-by: Niels Lohmann <mail@nlohmann.me>

---------

Signed-off-by: Niels Lohmann <mail@nlohmann.me>
2026-10-02 11:32:15 +02:00
Niels Lohmann a43350c4e5 Remove wsjcpp package manager (#4623)
Signed-off-by: Niels Lohmann <mail@nlohmann.me>
2025-02-15 12:23:12 +01:00
Niels Lohmann 26cfec34be Clean up and document project files (#4560) 2025-01-17 06:53:35 +01:00
Vertexwahn 0cb1241d5e Improve Bazel support: Switch to Bzlmod (#4584)
* Improve Bazel support: Switch to Bzlmod

Signed-off-by: Vertexwahn <julian.amann@tum.de>

* Update documentation

Signed-off-by: Vertexwahn <julian.amann@tum.de>

* Fix spelling

Signed-off-by: Vertexwahn <julian.amann@tum.de>

* Fix snippet filename error

Signed-off-by: Vertexwahn <julian.amann@tum.de>

---------

Signed-off-by: Vertexwahn <julian.amann@tum.de>
2025-01-07 18:47:51 +01:00
Niels Lohmann 6057b31df7 Overwork astyle call (#4573)
* 🔧 overwork astyle call

* 🔧 overwork astyle call

* 🔧 overwork astyle call

* 🔧 overwork astyle call

* 🔧 overwork astyle call

* 🔧 overwork astyle call

* 🔧 overwork astyle call

* 🔧 overwork astyle call

* 🔧 overwork astyle call

* 🔧 overwork astyle call

* 🔧 overwork astyle call

* Use ubuntu-latest image to run Valgrind (#4575)

* 🔧 use Clang image to run valgrind

* 🔧 use Clang image to run valgrind

* 🔧 use Clang image to run valgrind

* 🔧 use Ubuntu image to run valgrind

* Use Clang image to run iwyu (#4574)

* 🔧 use Clang image to run iwyu

* 🔧 use Clang image to run iwyu

* 🔧 overwork astyle call

* 🔧 overwork astyle call

* 🔧 overwork astyle call

* 🔧 overwork astyle call

* 🔧 overwork astyle call

* 🔧 overwork astyle call

* 🔧 overwork astyle call

* 🔧 overwork astyle call

* 🔧 overwork astyle call

* 🔧 overwork astyle call

* 🔧 overwork astyle call

* 🎨 format code

* 🔨 clean up
2024-12-29 17:06:03 +01:00
Aleksei SapitskiiandAleksei 58d6aa5831 Support Apple's Swift Package Manager (#4010)
Co-authored-by: Aleksei <sapial@f-secure.com>
2023-10-21 19:41:10 +02:00
Florian Albrechtskirchinger d3e347bd2d More documentation updates for 3.11.0 (#3553)
* mkdocs: add string_view examples

* mkdocs: reference underlying operators

* mkdocs: add operator<=> examples

* mkdocs: fix style check issues

* mkdocs: tweak BJData page

* mkdocs: add CMake option hints to macros

* mkdocs: fix JSON_DISABLE_ENUM_SERIALIZATION definition

* mkdocs: fix link to unit-udt.cpp

* mkdocs: fix "Arbitrary Type Conversions" title

* mkdocs: link to api/macros/*.md instead of features/macros.md

* mkdocs: document JSON_DisableEnumSerialization CMake option

* mkdocs: encode required C++ standard in example files

* docset: detect gsed/sed

* docset: update index

* docset: fix CSS patching

* docset: add list_missing_pages make target

* docset: add list_removed_paths make target

* docset: replace page titles with name from index

* docset: add install target for Zeal docset browser

* Use GCC_TOOL in ci_test_documentation target
2022-07-31 14:05:58 +02:00
Niels LohmannandFlorian Albrechtskirchinger 527da54dcb Use REUSE framework (#3546)
* 📄 add licenses

* 👷 add REUSE compliance check

* 📝 add badge for REUSE

Co-authored-by: Florian Albrechtskirchinger <falbrechtskirchinger@gmail.com>
2022-07-20 12:38:07 +02:00
NNandNiels Lohmann d64d40518c Ignore output directory (#3572)
* Ignore output directory

* Update .gitignore

Co-authored-by: Niels Lohmann <niels.lohmann@gmail.com>

Co-authored-by: Niels Lohmann <niels.lohmann@gmail.com>
2022-07-17 13:43:55 +02:00
Niels Lohmann d6efe672b5 Document fuzzer usage (#3478)
* 📝 document fuzzer usage

* 📝 address review comments
2022-05-09 08:02:41 +02:00
Florian Albrechtskirchinger 0c698b75cc Add serve_header.py for rapid testing on Compiler Explorer (#3456) 2022-05-01 13:52:52 +02:00
Niels Lohmann b21c345179 Reorganize directories (#3462)
* 🚚 move files
* 🚚 rename doc folder to docs
* 🚚 rename test folder to tests
2022-05-01 09:41:50 +02:00
Niels Lohmann a6ee8bf9d9 Overwork documentation (#3444)
* 📝 overwork macro documentation

* 📝 address review comments

* 🔧 add style check to Makefile

* 🙈 overwork .gitignore

* 📌 Pygments 2.12.0 is broken

* ✏️ fix links

* 🚸 adjust output to cppcheck

* 📝 add titles to more admonitions

* ✏️ fix typos

* 📝 document future behavior change
2022-04-25 22:40:45 +02:00
Niels Lohmann 29cd970b94 Consolidate documentation (#3071)
* 🔥 consolidate documentation
* ♻️ overwork std specializations
* 🚚 move images files to mkdocs
* ♻️ fix URLs
* 🔧 tweak MkDocs configuration
* 🔧 add namespaces
* 📝 document deprecations
* 📝 document documentation generation
* 🚸 improve search
* 🚸 add examples
* 🚧 start adding documentation for macros
* 📝 add note for https://github.com/nlohmann/json/issues/874#issuecomment-1001699139
* 📝 overwork example handling
* 📝 fix Markdown tables
2021-12-29 13:41:01 +01:00
Niels Lohmann bbdb29c658 Update docset generation script (#2967)
* 📝 update docset generation script

* 📝 update documentation
2021-09-01 08:43:10 +02:00
Niels Lohmann 178125ff9b 📝 add docset 2020-08-13 10:52:20 +02:00
Niels Lohmann 3c7dc635e7 🙈 extend ignore list 2020-07-23 14:19:57 +02:00
Niels Lohmann 27f5a6e827 🙈 ignore __pycache__ directory 2020-06-09 16:59:03 +02:00
Niels Lohmann 3400af21cd 📝 add release page 2020-05-24 13:40:43 +02:00
Niels Lohmann a8f0cd15df 📝 add mkdocs 2020-05-24 13:03:04 +02:00
Evgenii Sopov d164a2bf09 Added wsjcpp.yml: C++ Source Package Manager 2020-04-11 16:30:04 +07:00
Pratik Chowdhury ebd3f45808 Added Support for Structured Bindings
For further details, read https://github.com/nlohmann/json/issues/1388 and https://blog.tartanllama.xyz/structured-bindings/
2018-12-19 20:17:52 +05:30
Niels Lohmann 5773e164bb 🚨 fixed a linter warning 2018-02-28 19:59:54 +01:00
Théo DELRIEU 84bffd5d36 move amalgamate tool to third_party folder 2018-01-13 13:05:42 +01:00
Niels Lohmann f4a55f26b0 ➕ added amalgamate Python script 2018-01-13 10:59:49 +01:00
Théo DELRIEU 7e4ee23f40 add single_header CMake target 2018-01-08 20:09:43 +01:00
Perry Kundert 0b803d0a5f Simplify the json/src/benchmarks.cpp to allow more optimal code gen.
o For some unknown reason, the complexity of the benchmark platform
  prevented some C++ compilers from generating optimal code, properly
  reflective of the real performance in actual deployment.
o Added the json_benchmarks_simple target, which performs the same
  suite of tests as json_benchmarks.
o Simplified the benchmark platform, and emit an "Average" TPS
  (Transactions Per Second) value reflective of aggregate parse/output
  performance.
2017-10-07 15:50:19 -07:00
Niels Lohmann c204ac82e0 🔨 adjusted Coverity script to work without Makefile 2017-10-05 07:13:59 +02:00
Niels Lohmann 015c88783e 🔨 fixed a pedantic warning 2017-07-08 12:03:12 +02:00
Niels Lohmann 3fa0610856 🔨 added minibench to ignore list 2017-03-31 23:57:24 +02:00
Tushar Maheshwari 5436407b7e 👷 Add cmake logic to Travis config
- get CMake for XCode 8.1 image
2017-02-19 13:38:08 +05:30
Niels Lohmann a3063c2419 🚧 added target to build all fuzzers 2017-01-01 21:51:36 +01:00
Niels Lohmann a084e90f39 🔨 split AFL test in driver and test file 2016-12-22 11:09:26 +01:00
Niels Lohmann ad241a2260 🔨 moved third-party code into separate folder 2016-12-22 09:35:53 +01:00
Niels Lohmann 69ed19e483 ➕ added libFuzzer 2016-12-22 09:08:50 +01:00
Niels Lohmann e1f98fbfc0 🚧 splitting tests into several binaries 2016-11-27 16:19:26 +01:00
Niels Lohmann c3a610d32a 🔧 ignoring Clion files 2016-11-24 17:45:01 +01:00
Niels d02e67d4a9 coveralls with lcov 2016-08-10 20:56:26 +02:00
Niels 5541e6f6f9 split unit tests 2016-08-04 07:24:46 +02:00
Niels 4c98c971b8 added benchmarks for numbers 2016-07-20 23:06:45 +02:00
Niels 4e31a0e852 minor doc changes 2016-06-19 16:17:53 +02:00
Niels 71a7746ccb removed a line 2016-05-25 21:55:03 +02:00
Niels 153e105164 cleanup after #207 2016-02-14 18:38:29 +01:00
Niels c40e85920f more documentation 2015-06-21 09:44:12 +02:00
Niels e63c508172 overworked doxygen 2015-06-21 00:59:33 +02:00
Niels 7c579f11e5 some cleanup after #87 2015-06-13 10:29:43 +02:00
Niels cb873a42ed added Benchpress benchmarks 2015-06-02 23:57:45 +02:00
Niels fc58a73523 fix #60 (double escaping) 2015-04-24 22:06:57 +02:00
Niels 5ca84052a7 removed unused code and fixed includes 2015-02-16 22:47:30 +01:00
Niels bb558d8e6f added Unicode support 2015-02-15 11:44:49 +01:00