From 364a48d9d606eeadcd5e421ae13c81374ae49a76 Mon Sep 17 00:00:00 2001 From: nlohmann Date: Tue, 10 Dec 2024 19:52:33 +0000 Subject: [PATCH] deploy: 20ae363a71b20a743ee63ad9d85e0410f004f966 --- home/customers/index.html | 2 +- images/customers.png | Bin 1022993 -> 1184114 bytes search/search_index.json | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/home/customers/index.html b/home/customers/index.html index 608683a63..0774667d3 100644 --- a/home/customers/index.html +++ b/home/customers/index.html @@ -1 +1 @@ - Customers - JSON for Modern C++
Skip to content

Customers

The library is used in multiple projects, applications, operating systems, etc. The list below is not exhaustive, but the result of an internet search. If you know further customers of the library, please let me know.

Space Exploration

  • Peregrine Lunar Lander Flight 01 - The library was utilized for payload management in the Peregrine Moon Lander, developed by Astrobotic Technology and launched as part of NASA's Commercial Lunar Payload Services (CLPS) program. After six days in orbit, the spacecraft was intentionally redirected into Earth's atmosphere, where it burned up over the Pacific Ocean on January 18, 2024.

Automotive

Gaming and Entertainment

  • Assassin's Creed: Mirage: a stealth-action game set in the Middle East, focusing on the journey of a young assassin with classic parkour and stealth mechanics
  • Chasm: The Rift: a first-person shooter blending horror and adventure, where players navigate dark realms and battle monsters
  • College Football 25: a college football simulation game featuring gameplay that mimics real-life college teams and competitions
  • Concepts: a digital sketching app designed for creative professionals, offering flexible drawing tools for illustration, design, and brainstorming
  • Depthkit: a tool for creating and capturing volumetric video, enabling immersive 3D experiences and interactive content
  • immersivetech: a technology company focused on immersive experiences, providing tools and solutions for virtual and augmented reality applications
  • LOOT, a tool for optimizing the load order of game plugins, commonly used in The Elder Scrolls and Fallout series
  • Madden NFL 25: a sports simulation game capturing the excitement of American football with realistic gameplay and team management features
  • Marne, an unofficial private server platform for hosting custom Battlefield 1 game experiences
  • Minecraft, a popular sandbox video game
  • NHL 22: a hockey simulation game offering realistic gameplay, team management, and various modes to enhance the hockey experience
  • Pixelpart: a 2D animation and video compositing software that allows users to create animated graphics and visual effects with a focus on simplicity and ease of use
  • Red Dead Redemption II: an open-world action-adventure game following an outlaw's story in the late 1800s, emphasizing deep storytelling and immersive gameplay
  • Tactics Ogre: Reborn, a tactical role-playing game featuring strategic battles and deep storytelling elements
  • Throne and Liberty, an MMORPG that offers an expansive fantasy world with dynamic gameplay and immersive storytelling
  • Unity Vivox, a communication service that enables voice and text chat functionality in multiplayer games developed with Unity
  • Zool: Redimensioned: a modern reimagining of the classic platformer featuring fast-paced gameplay and vibrant environments

Consumer Electronics

  • Audinate: a provider of networked audio solutions specializing in Dante technology, which facilitates high-quality digital audio transport over IP networks
  • Cisco Webex Desk Camera, a video camera designed for professional-quality video conferencing and remote collaboration
  • Philips Hue Personal Wireless Lighting: a smart lighting system for customizable and wireless home illumination
  • Ray-Ban Meta Smart glasses, a pair of smart glasses designed for capturing photos and videos with integrated connectivity and social features
  • Siemens SINEMA Remote Connect, a remote connectivity solution for monitoring and managing industrial networks and devices securely
  • Sony PlayStation 4, a gaming console developed by Sony that offers a wide range of games and multimedia entertainment features
  • Sony Virtual Webcam Driver for Remote Camera, a software driver that enables the use of Sony cameras as virtual webcams for video conferencing and streaming

Operating Systems

  • Apple iOS and macOS, a family of operating systems developed by Apple, including iOS for mobile devices and macOS for desktop computers
  • Google Fuchsia, an open-source operating system developed by Google, designed to be secure, updatable, and adaptable across various devices
  • SerenityOS, an open-source operating system that aims to provide a simple and beautiful user experience with a focus on simplicity and elegance
  • Yocto: a Linux-based build system for creating custom operating systems and software distributions, tailored for embedded devices and IoT applications

Development Tools and IDEs

  • Accentize SpectralBalance, an adaptive speech analysis tool designed to enhance audio quality by optimizing frequency balance in recordings
  • Arm Compiler for Linux, a software development toolchain for compiling and optimizing applications on Arm-based Linux systems
  • BBEdit, a professional text and code editor for macOS
  • CoderPad, a collaborative coding platform that enables real-time code interviews and assessments for developers; the library is included in every CoderPad instance and can be accessed with a simple #include "json.hpp"
  • Compiler Explorer, a web-based tool that allows users to write, compile, and visualize the assembly output of code in various programming languages; the library is readily available and accessible with the directive #include <nlohmann/json.hpp>.
  • GitHub CodeQL, a code analysis tool used for identifying security vulnerabilities and bugs in software through semantic queries
  • Hex-Rays: a reverse engineering toolset for analyzing and decompiling binaries, primarily used for security research and vulnerability analysis
  • ImHex, a hex editor designed for reverse engineering, providing advanced features for data analysis and manipulation
  • Intel GPA Framework, a suite of cross-platform tools for capturing, analyzing, and optimizing graphics applications across different APIs
  • Meta Yoga, a layout engine that facilitates flexible and efficient user interface design across multiple platforms
  • NVIDIA Nsight Compute, a performance analysis tool for CUDA applications that provides detailed insights into GPU performance metrics
  • Notepad++, a free source code editor that supports various programming languages
  • OpenRGB, an open source RGB lighting control that doesn't depend on manufacturer software
  • OpenTelemetry C++: a library for collecting and exporting observability data in C++, enabling developers to implement distributed tracing and metrics in their application
  • Qt Creator, an IDE for developing applications using the Qt application framework
  • Scanbot SDK: a software development kit (SDK) that provides tools for integrating advanced document scanning and barcode scanning capabilities into applications

Machine Learning and AI

  • Apple Core ML Tools, a set of tools for converting and configuring machine learning models for deployment in Apple's Core ML framework
  • Avular Mobile Robotics: a platform for developing and deploying mobile robotics solutions
  • Google gemma.cpp, a lightweight C++ inference engine designed for running AI models from the Gemma family
  • llama.cpp, a C++ library designed for efficient inference of large language models (LLMs), enabling streamlined integration into applications
  • Mozilla llamafile, a tool designed for distributing and executing large language models (LLMs) efficiently using a single file format
  • NVIDIA ACE, a suite of real-time AI solutions designed for the development of interactive avatars and digital human applications, enabling scalable and sophisticated user interactions
  • Peer: a platform offering personalized AI assistants for interactive learning and creative collaboration
  • stable-diffusion.cpp: a C++ implementation of the Stable Diffusion image generation model
  • TanvasTouch: a software development kit (SDK) that enables developers to create tactile experiences on touchscreens, allowing users to feel textures and physical sensations in a digital environment
  • TensorFlow, a machine learning framework that facilitates the development and training of models, supporting data serialization and efficient data exchange between components

Scientific Research and Analysis

  • BLACK, a bounded linear temporal logic (LTL) satisfiability checker
  • CERN Atlas Athena, a software framework used in the ATLAS experiment at the Large Hadron Collider (LHC) for performance monitoring
  • KAMERA: a platform for synchronized data collection and real-time deep learning to map marine species like polar bears and seals, aiding Arctic ecosystem research
  • KiCad: a free and open-source software suite for electronic design automation
  • MeVisLab: a software framework for medical image processing and visualization.
  • OpenPMD API: a versatile programming interface for accessing and managing scientific data, designed to facilitate the efficient storage, retrieval, and sharing of simulation data across various applications and platforms
  • ParaView: an open-source tool for large-scale data visualization and analysis across various scientific domains
  • QGIS: a free and open-source geographic information system (GIS) application that allows users to create, edit, visualize, and analyze geospatial data across a variety of formats
  • VTK: a software library for 3D computer graphics, image processing, and visualization
  • VolView: a lightweight application for interactive visualization and analysis of 3D medical imaging data.

Business and Productivity Software

  • ArcGIS PRO, a desktop geographic information system (GIS) application developed by Esri for mapping and spatial analysis
  • Autodesk Desktop, a software platform developed by Autodesk for creating and managing desktop applications and services
  • Check Point: a cybersecurity company specializing in threat prevention and network security solutions, offering a range of products designed to protect enterprises from cyber threats and ensure data integrity
  • Microsoft Office for Mac, a suite of productivity applications developed by Microsoft for macOS, including tools for word processing, spreadsheets, and presentations
  • Nexthink Infinity: a digital employee experience management platform for monitoring and improving IT performance
  • Sophos Connect Client: a secure VPN client from Sophos that allows remote users to connect to their corporate network, ensuring secure access to resources and data
  • Stonebranch: a cloud-based cybersecurity solution that integrates backup, disaster recovery, and cybersecurity features to protect data and ensure business continuity for organizations
  • Tablecruncher: a data analysis tool that allows users to import, analyze, and visualize spreadsheet data, offering interactive features for better insights and decision-making
  • magicplan, a mobile application for creating floor plans and interior designs using augmented reality

Databases and Big Data

  • ADIOS2: a data management framework designed for high-performance input and output operations
  • Cribl Stream: a real-time data processing platform that enables organizations to collect, route, and transform observability data, enhancing visibility and insights into their systems
  • DB Browser for SQLite, a visual open-source tool for creating, designing, and editing SQLite database files
  • MySQL Connector/C++, a C++ library for connecting and interacting with MySQL databases
  • MySQL NDB Cluster, a distributed database system that provides high availability and scalability for MySQL databases
  • PrestoDB, a distributed SQL query engine designed for large-scale data analytics, originally developed by Facebook
  • ROOT Data Analysis Framework, an open-source data analysis framework widely used in high-energy physics and other fields for data processing and visualization

Simulation and Modeling

  • Arcturus HoloSuite, a software toolset for capturing, editing, and streaming volumetric video, featuring advanced compression technologies for high-quality 3D content creation
  • azul, a fast and efficient 3D city model viewer designed for visualizing urban environments and spatial data
  • cpplot, a library for creating interactive graphs and charts in C++, which can be viewed in web browsers
  • NVIDIA Omniverse, a platform for 3D content creation and collaboration that enables real-time simulations and interactive experiences across various industries
  • Pixar Renderman, a photorealistic 3D rendering software developed by Pixar, widely used in the film industry for creating high-quality visual effects and animations
  • ROS - Robot Operating System, a set of software libraries and tools that assist in developing robot applications
  • UBS, a multinational financial services and banking company
  • GAMS: a high-performance mathematical modeling system for optimization and decision support
  • M-Star: a computational fluid dynamics software for simulating and analyzing fluid flow
  • MapleSim CAD Toolbox: a software extension for MapleSim that integrates CAD models, allowing users to import, manipulate, and analyze 3D CAD data within the MapleSim environment for enhanced modeling and simulation
  • Kitware SMTK: a software toolkit for managing simulation models and workflows in scientific and engineering applications

Enterprise and Cloud Applications

  • Acronis Cyber Protect Cloud: an all-in-one data protection solution that combines backup, disaster recovery, and cybersecurity to safeguard business data from threats like ransomware
  • Baereos: a backup solution that provides data protection and recovery options for various environments, including physical and virtual systems
  • Bitdefender Home Scanner, a tool from Bitdefender that scans devices for malware and security threats, providing a safeguard against potential online dangers
  • Citrix Provisioning: a solution that streamlines the delivery of virtual desktops and applications by allowing administrators to manage and provision resources efficiently across multiple environments
  • Citrix Virtual Apps and Desktops, a solution from Citrix that delivers virtual apps and desktops
  • Cyberarc: a security solution that specializes in privileged access management, enabling organizations to control and monitor access to critical systems and data, thereby enhancing overall cybersecurity posture
  • Egnyte Desktop: a secure cloud storage solution designed for businesses, enabling file sharing, collaboration, and data management across teams while ensuring compliance and data protection
  • Ethereum Solidity, a high-level, object-oriented programming language designed for implementing smart contracts on the Ethereum platform
  • Inciga: a monitoring tool for IT infrastructure, designed to provide insights into system performance and availability through customizable dashboards and alerts
  • Intel Accelerator Management Daemon for VMware ESXi: a management tool designed for monitoring and controlling Intel hardware accelerators within VMware ESXi environments, optimizing performance and resource allocation
  • Juniper Identity Management Service
  • Microsoft Azure IoT SDK, a collection of tools and libraries to help developers connect, build, and deploy Internet of Things (IoT) solutions on the Azure cloud platform
  • Microsoft WinGet, a command-line utility included in the Windows Package Manager
  • Pointr: a platform for indoor positioning and navigation solutions, offering tools and SDKs for developers to create location-based applications
\ No newline at end of file + Customers - JSON for Modern C++
Skip to content

Customers

The library is used in multiple projects, applications, operating systems, etc. The list below is not exhaustive, but the result of an internet search. If you know further customers of the library, please let me know.

Space Exploration

  • Peregrine Lunar Lander Flight 01 - The library was utilized for payload management in the Peregrine Moon Lander, developed by Astrobotic Technology and launched as part of NASA's Commercial Lunar Payload Services (CLPS) program. After six days in orbit, the spacecraft was intentionally redirected into Earth's atmosphere, where it burned up over the Pacific Ocean on January 18, 2024.

Automotive

Gaming and Entertainment

  • Assassin's Creed: Mirage: a stealth-action game set in the Middle East, focusing on the journey of a young assassin with classic parkour and stealth mechanics
  • Chasm: The Rift: a first-person shooter blending horror and adventure, where players navigate dark realms and battle monsters
  • College Football 25: a college football simulation game featuring gameplay that mimics real-life college teams and competitions
  • Concepts: a digital sketching app designed for creative professionals, offering flexible drawing tools for illustration, design, and brainstorming
  • Depthkit: a tool for creating and capturing volumetric video, enabling immersive 3D experiences and interactive content
  • immersivetech: a technology company focused on immersive experiences, providing tools and solutions for virtual and augmented reality applications
  • LOOT, a tool for optimizing the load order of game plugins, commonly used in The Elder Scrolls and Fallout series
  • Madden NFL 25: a sports simulation game capturing the excitement of American football with realistic gameplay and team management features
  • Marne, an unofficial private server platform for hosting custom Battlefield 1 game experiences
  • Minecraft, a popular sandbox video game
  • NHL 22: a hockey simulation game offering realistic gameplay, team management, and various modes to enhance the hockey experience
  • Pixelpart: a 2D animation and video compositing software that allows users to create animated graphics and visual effects with a focus on simplicity and ease of use
  • Red Dead Redemption II: an open-world action-adventure game following an outlaw's story in the late 1800s, emphasizing deep storytelling and immersive gameplay
  • Tactics Ogre: Reborn, a tactical role-playing game featuring strategic battles and deep storytelling elements
  • Throne and Liberty, an MMORPG that offers an expansive fantasy world with dynamic gameplay and immersive storytelling
  • Unity Vivox, a communication service that enables voice and text chat functionality in multiplayer games developed with Unity
  • Zool: Redimensioned: a modern reimagining of the classic platformer featuring fast-paced gameplay and vibrant environments

Consumer Electronics

  • Audinate: a provider of networked audio solutions specializing in Dante technology, which facilitates high-quality digital audio transport over IP networks
  • Cisco Webex Desk Camera, a video camera designed for professional-quality video conferencing and remote collaboration
  • Philips Hue Personal Wireless Lighting: a smart lighting system for customizable and wireless home illumination
  • Ray-Ban Meta Smart glasses, a pair of smart glasses designed for capturing photos and videos with integrated connectivity and social features
  • Siemens SINEMA Remote Connect, a remote connectivity solution for monitoring and managing industrial networks and devices securely
  • Sony PlayStation 4, a gaming console developed by Sony that offers a wide range of games and multimedia entertainment features
  • Sony Virtual Webcam Driver for Remote Camera, a software driver that enables the use of Sony cameras as virtual webcams for video conferencing and streaming

Operating Systems

  • Apple iOS and macOS, a family of operating systems developed by Apple, including iOS for mobile devices and macOS for desktop computers
  • Google Fuchsia, an open-source operating system developed by Google, designed to be secure, updatable, and adaptable across various devices
  • SerenityOS, an open-source operating system that aims to provide a simple and beautiful user experience with a focus on simplicity and elegance
  • Yocto: a Linux-based build system for creating custom operating systems and software distributions, tailored for embedded devices and IoT applications

Development Tools and IDEs

  • Accentize SpectralBalance, an adaptive speech analysis tool designed to enhance audio quality by optimizing frequency balance in recordings
  • Arm Compiler for Linux, a software development toolchain for compiling and optimizing applications on Arm-based Linux systems
  • BBEdit, a professional text and code editor for macOS
  • CoderPad, a collaborative coding platform that enables real-time code interviews and assessments for developers; the library is included in every CoderPad instance and can be accessed with a simple #include "json.hpp"
  • Compiler Explorer, a web-based tool that allows users to write, compile, and visualize the assembly output of code in various programming languages; the library is readily available and accessible with the directive #include <nlohmann/json.hpp>.
  • GitHub CodeQL, a code analysis tool used for identifying security vulnerabilities and bugs in software through semantic queries
  • Hex-Rays: a reverse engineering toolset for analyzing and decompiling binaries, primarily used for security research and vulnerability analysis
  • ImHex, a hex editor designed for reverse engineering, providing advanced features for data analysis and manipulation
  • Intel GPA Framework, a suite of cross-platform tools for capturing, analyzing, and optimizing graphics applications across different APIs
  • Meta Yoga, a layout engine that facilitates flexible and efficient user interface design across multiple platforms
  • MKVToolNix, a set of tools for creating, editing, and inspecting MKV (Matroska) multimedia container files
  • NVIDIA Nsight Compute, a performance analysis tool for CUDA applications that provides detailed insights into GPU performance metrics
  • Notepad++, a free source code editor that supports various programming languages
  • OpenRGB, an open source RGB lighting control that doesn't depend on manufacturer software
  • OpenTelemetry C++: a library for collecting and exporting observability data in C++, enabling developers to implement distributed tracing and metrics in their application
  • Qt Creator, an IDE for developing applications using the Qt application framework
  • Scanbot SDK: a software development kit (SDK) that provides tools for integrating advanced document scanning and barcode scanning capabilities into applications

Machine Learning and AI

  • Apple Core ML Tools, a set of tools for converting and configuring machine learning models for deployment in Apple's Core ML framework
  • Avular Mobile Robotics: a platform for developing and deploying mobile robotics solutions
  • Google gemma.cpp, a lightweight C++ inference engine designed for running AI models from the Gemma family
  • llama.cpp, a C++ library designed for efficient inference of large language models (LLMs), enabling streamlined integration into applications
  • Mozilla llamafile, a tool designed for distributing and executing large language models (LLMs) efficiently using a single file format
  • NVIDIA ACE, a suite of real-time AI solutions designed for the development of interactive avatars and digital human applications, enabling scalable and sophisticated user interactions
  • Peer: a platform offering personalized AI assistants for interactive learning and creative collaboration
  • stable-diffusion.cpp: a C++ implementation of the Stable Diffusion image generation model
  • TanvasTouch: a software development kit (SDK) that enables developers to create tactile experiences on touchscreens, allowing users to feel textures and physical sensations in a digital environment
  • TensorFlow, a machine learning framework that facilitates the development and training of models, supporting data serialization and efficient data exchange between components

Scientific Research and Analysis

  • BLACK, a bounded linear temporal logic (LTL) satisfiability checker
  • CERN Atlas Athena, a software framework used in the ATLAS experiment at the Large Hadron Collider (LHC) for performance monitoring
  • KAMERA: a platform for synchronized data collection and real-time deep learning to map marine species like polar bears and seals, aiding Arctic ecosystem research
  • KiCad: a free and open-source software suite for electronic design automation
  • MeVisLab: a software framework for medical image processing and visualization.
  • OpenPMD API: a versatile programming interface for accessing and managing scientific data, designed to facilitate the efficient storage, retrieval, and sharing of simulation data across various applications and platforms
  • ParaView: an open-source tool for large-scale data visualization and analysis across various scientific domains
  • QGIS: a free and open-source geographic information system (GIS) application that allows users to create, edit, visualize, and analyze geospatial data across a variety of formats
  • VTK: a software library for 3D computer graphics, image processing, and visualization
  • VolView: a lightweight application for interactive visualization and analysis of 3D medical imaging data.

Business and Productivity Software

  • ArcGIS PRO, a desktop geographic information system (GIS) application developed by Esri for mapping and spatial analysis
  • Autodesk Desktop, a software platform developed by Autodesk for creating and managing desktop applications and services
  • Check Point: a cybersecurity company specializing in threat prevention and network security solutions, offering a range of products designed to protect enterprises from cyber threats and ensure data integrity
  • Microsoft Office for Mac, a suite of productivity applications developed by Microsoft for macOS, including tools for word processing, spreadsheets, and presentations
  • Nexthink Infinity: a digital employee experience management platform for monitoring and improving IT performance
  • Sophos Connect Client: a secure VPN client from Sophos that allows remote users to connect to their corporate network, ensuring secure access to resources and data
  • Stonebranch: a cloud-based cybersecurity solution that integrates backup, disaster recovery, and cybersecurity features to protect data and ensure business continuity for organizations
  • Tablecruncher: a data analysis tool that allows users to import, analyze, and visualize spreadsheet data, offering interactive features for better insights and decision-making
  • magicplan, a mobile application for creating floor plans and interior designs using augmented reality

Databases and Big Data

  • ADIOS2: a data management framework designed for high-performance input and output operations
  • Cribl Stream: a real-time data processing platform that enables organizations to collect, route, and transform observability data, enhancing visibility and insights into their systems
  • DB Browser for SQLite, a visual open-source tool for creating, designing, and editing SQLite database files
  • MySQL Connector/C++, a C++ library for connecting and interacting with MySQL databases
  • MySQL NDB Cluster, a distributed database system that provides high availability and scalability for MySQL databases
  • PrestoDB, a distributed SQL query engine designed for large-scale data analytics, originally developed by Facebook
  • ROOT Data Analysis Framework, an open-source data analysis framework widely used in high-energy physics and other fields for data processing and visualization

Simulation and Modeling

  • Arcturus HoloSuite, a software toolset for capturing, editing, and streaming volumetric video, featuring advanced compression technologies for high-quality 3D content creation
  • azul, a fast and efficient 3D city model viewer designed for visualizing urban environments and spatial data
  • Blender, a free and open-source 3D creation suite for modeling, animation, rendering, and more
  • cpplot, a library for creating interactive graphs and charts in C++, which can be viewed in web browsers
  • NVIDIA Omniverse, a platform for 3D content creation and collaboration that enables real-time simulations and interactive experiences across various industries
  • Pixar Renderman, a photorealistic 3D rendering software developed by Pixar, widely used in the film industry for creating high-quality visual effects and animations
  • ROS - Robot Operating System, a set of software libraries and tools that assist in developing robot applications
  • UBS, a multinational financial services and banking company
  • GAMS: a high-performance mathematical modeling system for optimization and decision support
  • M-Star: a computational fluid dynamics software for simulating and analyzing fluid flow
  • MapleSim CAD Toolbox: a software extension for MapleSim that integrates CAD models, allowing users to import, manipulate, and analyze 3D CAD data within the MapleSim environment for enhanced modeling and simulation
  • Kitware SMTK: a software toolkit for managing simulation models and workflows in scientific and engineering applications

Enterprise and Cloud Applications

  • Acronis Cyber Protect Cloud: an all-in-one data protection solution that combines backup, disaster recovery, and cybersecurity to safeguard business data from threats like ransomware
  • Baereos: a backup solution that provides data protection and recovery options for various environments, including physical and virtual systems
  • Bitdefender Home Scanner, a tool from Bitdefender that scans devices for malware and security threats, providing a safeguard against potential online dangers
  • Citrix Provisioning: a solution that streamlines the delivery of virtual desktops and applications by allowing administrators to manage and provision resources efficiently across multiple environments
  • Citrix Virtual Apps and Desktops, a solution from Citrix that delivers virtual apps and desktops
  • Cyberarc: a security solution that specializes in privileged access management, enabling organizations to control and monitor access to critical systems and data, thereby enhancing overall cybersecurity posture
  • Egnyte Desktop: a secure cloud storage solution designed for businesses, enabling file sharing, collaboration, and data management across teams while ensuring compliance and data protection
  • Ethereum Solidity, a high-level, object-oriented programming language designed for implementing smart contracts on the Ethereum platform
  • Inciga: a monitoring tool for IT infrastructure, designed to provide insights into system performance and availability through customizable dashboards and alerts
  • Intel Accelerator Management Daemon for VMware ESXi: a management tool designed for monitoring and controlling Intel hardware accelerators within VMware ESXi environments, optimizing performance and resource allocation
  • Juniper Identity Management Service
  • Microsoft Azure IoT SDK, a collection of tools and libraries to help developers connect, build, and deploy Internet of Things (IoT) solutions on the Azure cloud platform
  • Microsoft WinGet, a command-line utility included in the Windows Package Manager
  • Pointr: a platform for indoor positioning and navigation solutions, offering tools and SDKs for developers to create location-based applications
\ No newline at end of file diff --git a/images/customers.png b/images/customers.png index f324cb27220a1e5734296859c336206f4cff188d..e122f508954a8d6a3ff7ecde6817c43dc9c69115 100644 GIT binary patch literal 1184114 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 z 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

TF@7%Tnefsn> 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

$eLoxFF!;v!DH}7&4q4B@J`6pAQ+v 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

f$TinmX<5%@``I*bLI*&v z4f@~{EtU)rgM79aQd@*qjWy9y0Cf>jab?%5-3Y6!UT>@Qp}{-@umDFfVFc7$$KrB* zwCjU#!z|57k-n4nGV#zy&CAl5Yd1uBY%dfDna2Jkg};@HZPL6ST6N_*X@i$&bFkUQ zbpM(S?=vC9Zi&u3D{u-U0bvhk6e76cV;Kt{tZq4rm5rm%U!HDnu3jgYzqp>nr8m|` zaVv#%`6KYhGHLSU$-z~y3r`S?ahC4azVg!{bjq|U6b-OI1j&CMF zPFL3Mgi$YOmmgM*&?XFvICve{xZ@TRVE|`XyD-e($J3;{C!XUk-TQbLbXBFkEz{ih z!tw^&`1ImHw0r}y-m&G&l$-D?#&wrg`$oIzj{78NTw>)t+t>n~C;veJu93g^#V-bp zR&e;(V~+)VK^r@xLvZ6l%lDIB-!D9PAIAm2oYxEZJ1>hh3)*l%CS6_WKl*}2m&>u{0A8TF?Yq#H%pWmmeGVgLl zJ3x7Pd0M)Rr}O&xmAM&Z6feia<7Il7(>(RYvKa7pekF{w{>(jPu-0P*jJsy$pa&j! zAgmX}ZwcacXemxSocQrHUI*fMxQF?3JpBiG@AYbpI?#5?tE{N9<(2bng3hg6zo^ch zzvnG`bLL{}c1W3BeBw>^$GXUR%089x=W_<-5|1(F{hC@A!qdg^aKDlVKjtI^ zyG1Z0WEseftC06XjGYpi$I z5jN$W`*rU1ESs_P|LmRBk66D>AJI=|V3!nGr=lU2)3&$x6S+D+TgrMm2en;McYVkA zmdCE%*1n{>z8&EYNnmE{B+S`pTk2NY(v5R$-s%}PZ^aDTP`Og$sgo7tbc0Qa`*i=biAK$@lf_H{S|$#D2O9^N;+5qot0ZF~>_G0=&jDBLcS&h5AE znqz;QwA@DblG3R<2E!ESFO#{T8E8Hh{pHE~<|ff&iLJ2vFDtj>j~Q%jv_=HWDa8+N zp+&2t=8GcGa=7Y`z-t;kMSp{WmLhkSGodkuw6RAQZMM@R=LnrD2Z99GA%?c%OTs&h0k$Nl%Ydt&wj5x-RA0HGVSyvr=toXj$!w+6}69ej? zfJ=>l&{s+xcg5`eMI2PKkZUC)HY*Ccj|b>kQR{UK0c!;i)+7xF1&2JyTU#ovM>=jm zE^x!YkcsNT*k-azWXijA&mne*A3Q!t0VEME#BHrVO`NXQD)C@B?;8ff zIT_mEKu%kv-L>J7&suG@Ca|J0qG}kN=_htVSp*RNZmybdg-3tW292Ajd|*VdF@w>i zH7G>PkPDAZcF%)T?Prr;v6_urtW$Beb&&8hM_P2mTeeOvTHaV})qj~{#~#|*E}eL^ zopsU}X{O2giH{Q1F_V#&QEFX}JICtQFS0E!-7T%PvY>&c?U~Ar08J^(;j^@vu3z+! zZJ7PCbsc@Wzi#o`l!KyZEVBp#Yd37MS7*($7hikVX1%w{maea~%6dx7lwc@BLZkv4 z)T@IXKB$)+DYrmU^cpKhnmFK=?s0jY?l}t{vZ_t(`b(fSokvP&;gBKM8`Pj~busyxi1h59jLT*Xm>N zCAI&FDR0`-uPw9}*NPD=;eD8K8dSbM3Ws+puw#ezu!+YGvtvieg-k)D>5?vg&zGGZ z0_?ZvEwLGIF0eP=S!VN>ZM2n@^;W3~HAfqqwuPBi-l@b6?cd#wJ9>y6F6Km@gzY+w zO3iO#vc~J3dY>#$FBVGR`_xNs={Lt-p102Cuazb#OjGq`du@WZ=)SH_(^`#iS&(4^ zN(=4yA>Hltj|{hQqjY|4X>?X0lPz<%Lv$Yt@E6HzhRs>9%>MAV=k3?eylWfflBKN# z%^Mfh*fpO#)Q&%TXi}&|lH-mXVm&*yk&t?|op<6$38AGm$e4>4n#{X(ZoGV$

&a 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 z%0A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%0Ax0a!Q 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

  • 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ʴLRixLuC|d-Ul~?EJHrSj!e#_$7oo zzQK!>8j+wU6ucdNIIReF0W5?6_P4(U4_waaLurRM5FWV*pgHT8P|gTr2=9E!C6|Qn z2+|4B%;p_n@$15BHk^1167HGuTk#!dfZp znc_stA0qHBJ2&6P%vxsIQt®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
      =18 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
      G;pQ6MQ{xr4#dd~E{Wtb^hX)qAc$Q; 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
    1. yB% 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

      3K^2YlmVF0WKaea=JAFf(G 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

      37R?iB)S#ykpR6uKBZ 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

      3(S3zx8|S=y~D? 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

      -WQ1^H7c`W>AFKF_wb?gb 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뫩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 `=*e-LJERE@H8cYy{=!Si&=)FLOpoZ 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€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%0AgX?4*Bvd+_jK^ZqL32KnOJD8W*yR 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�?F0MbAjHv3*z=Zmf_40u-`}448FBOmJPO;tf`hLw?RqLRZG$ zIV5~PWu-IrTZ~m37L?&{&~R+9k&HeN*6gGz{rBjsuDV*YQDw{ZJ}W%40!bj}Fhf*d zuq9py0VZKCArY|NpP#??<*-kauEe8cB>Jyj;eBIt>$6G)jQMp80amQgp_5!Pq5>3z zi~xWeSK??$IWd9nQHs1dRE>xyp%^ZWB*#ajIG%2Ppg!N*VS;VjRr6fINTbcxxD`w8 z)WMV5TE(kPK|Qj(VhhWItjlgcPN!htyQrZ%{E93Sj~B;BXwUrB)2-{?qN%aacT%}k zWFtkxnjxu$f1eo}W6x-y_>R)YbOt-Vj{x6^X|5qHu~MlKR#;sKHOqF#WC7wt&;&Oq zGKvLutoZ6(%_cBDU32D?C#-U8j@lpf$+oc+MAMj4MO|Gdh8BWx9Ib0d%SQL^Mu

      5k2FmIea%CQ2+tl)cAP4dX?lIBWaMaMO5?V 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 diff --git a/search/search_index.json b/search/search_index.json index 0cd71eec2..d842212ee 100644 --- a/search/search_index.json +++ b/search/search_index.json @@ -1 +1 @@ -{"config":{"lang":["en"],"separator":"[\\s\\-\\.]","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"JSON for Modern C++","text":""},{"location":"api/json/","title":"nlohmann::json","text":"
      using json = basic_json<>;\n

      This type is the default specialization of the basic_json class which uses the standard template types.

      "},{"location":"api/json/#examples","title":"Examples","text":"Example

      The example below demonstrates how to use the type nlohmann::json.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    json j =\n    {\n        {\"pi\", 3.141},\n        {\"happy\", true},\n        {\"name\", \"Niels\"},\n        {\"nothing\", nullptr},\n        {\n            \"answer\", {\n                {\"everything\", 42}\n            }\n        },\n        {\"list\", {1, 0, 2}},\n        {\n            \"object\", {\n                {\"currency\", \"USD\"},\n                {\"value\", 42.99}\n            }\n        }\n    };\n\n    // add new values\n    j[\"new\"][\"key\"][\"value\"] = {\"another\", \"list\"};\n\n    // count elements\n    auto s = j.size();\n    j[\"size\"] = s;\n\n    // pretty print with indent of 4 spaces\n    std::cout << std::setw(4) << j << '\\n';\n}\n

      Output:

      {\n    \"answer\": {\n        \"everything\": 42\n    },\n    \"happy\": true,\n    \"list\": [\n        1,\n        0,\n        2\n    ],\n    \"name\": \"Niels\",\n    \"new\": {\n        \"key\": {\n            \"value\": [\n                \"another\",\n                \"list\"\n            ]\n        }\n    },\n    \"nothing\": null,\n    \"object\": {\n        \"currency\": \"USD\",\n        \"value\": 42.99\n    },\n    \"pi\": 3.141,\n    \"size\": 8\n}\n
      "},{"location":"api/json/#version-history","title":"Version history","text":"

      Since version 1.0.0.

      "},{"location":"api/operator_gtgt/","title":"nlohmann::operator>>(basic_json)","text":"
      std::istream& operator>>(std::istream& i, basic_json& j);\n

      Deserializes an input stream to a JSON value.

      "},{"location":"api/operator_gtgt/#parameters","title":"Parameters","text":"i (in, out) input stream to read a serialized JSON value from j (in, out) JSON value to write the deserialized input to"},{"location":"api/operator_gtgt/#return-value","title":"Return value","text":"

      the stream i

      "},{"location":"api/operator_gtgt/#exceptions","title":"Exceptions","text":"
      • Throws parse_error.101 in case of an unexpected token.
      • Throws parse_error.102 if to_unicode fails or surrogate error.
      • Throws parse_error.103 if to_unicode fails.
      "},{"location":"api/operator_gtgt/#complexity","title":"Complexity","text":"

      Linear in the length of the input. The parser is a predictive LL(1) parser.

      "},{"location":"api/operator_gtgt/#notes","title":"Notes","text":"

      A UTF-8 byte order mark is silently ignored.

      Deprecation

      This function replaces function std::istream& operator<<(basic_json& j, std::istream& i) which has been deprecated in version 3.0.0. It will be removed in version 4.0.0. Please replace calls like j << i; with i >> j;.

      "},{"location":"api/operator_gtgt/#examples","title":"Examples","text":"Example

      The example below shows how a JSON value is constructed by reading a serialization from a stream.

      #include <iostream>\n#include <iomanip>\n#include <sstream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create stream with serialized JSON\n    std::stringstream ss;\n    ss << R\"({\n        \"number\": 23,\n        \"string\": \"Hello, world!\",\n        \"array\": [1, 2, 3, 4, 5],\n        \"boolean\": false,\n        \"null\": null\n    })\";\n\n    // create JSON value and read the serialization from the stream\n    json j;\n    ss >> j;\n\n    // serialize JSON\n    std::cout << std::setw(2) << j << '\\n';\n}\n

      Output:

      {\n  \"array\": [\n    1,\n    2,\n    3,\n    4,\n    5\n  ],\n  \"boolean\": false,\n  \"null\": null,\n  \"number\": 23,\n  \"string\": \"Hello, world!\"\n}\n
      "},{"location":"api/operator_gtgt/#see-also","title":"See also","text":"
      • accept - check if the input is valid JSON
      • parse - deserialize from a compatible input
      "},{"location":"api/operator_gtgt/#version-history","title":"Version history","text":"
      • Added in version 1.0.0. Deprecated in version 3.0.0.
      "},{"location":"api/operator_literal_json/","title":"nlohmann::operator\"\"_json","text":"
      json operator \"\"_json(const char* s, std::size_t n);\n

      This operator implements a user-defined string literal for JSON objects. It can be used by adding _json to a string literal and returns a json object if no parse error occurred.

      It is recommended to bring the operator into scope using any of the following lines:

      using nlohmann::literals::operator \"\"_json;\nusing namespace nlohmann::literals;\nusing namespace nlohmann::json_literals;\nusing namespace nlohmann::literals::json_literals;\nusing namespace nlohmann;\n

      This is suggested to ease migration to the next major version release of the library. See JSON_USE_GLOBAL_UDLS for details.

      "},{"location":"api/operator_literal_json/#parameters","title":"Parameters","text":"s (in) a string representation of a JSON object n (in) length of string s"},{"location":"api/operator_literal_json/#return-value","title":"Return value","text":"

      json value parsed from s

      "},{"location":"api/operator_literal_json/#exceptions","title":"Exceptions","text":"

      The function can throw anything that parse(s, s+n) would throw.

      "},{"location":"api/operator_literal_json/#complexity","title":"Complexity","text":"

      Linear.

      "},{"location":"api/operator_literal_json/#examples","title":"Examples","text":"Example

      The following code shows how to create JSON values from string literals.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    json j = R\"( {\"hello\": \"world\", \"answer\": 42} )\"_json;\n\n    std::cout << std::setw(2) << j << '\\n';\n}\n

      Output:

      {\n  \"answer\": 42,\n  \"hello\": \"world\"\n}\n
      "},{"location":"api/operator_literal_json/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      • Moved to namespace nlohmann::literals::json_literals in 3.11.0.
      "},{"location":"api/operator_literal_json_pointer/","title":"nlohmann::operator\"\"_json_pointer","text":"
      json_pointer operator \"\"_json_pointer(const char* s, std::size_t n);\n

      This operator implements a user-defined string literal for JSON Pointers. It can be used by adding _json_pointer to a string literal and returns a json_pointer object if no parse error occurred.

      It is recommended to bring the operator into scope using any of the following lines:

      using nlohmann::literals::operator \"\"_json_pointer;\nusing namespace nlohmann::literals;\nusing namespace nlohmann::json_literals;\nusing namespace nlohmann::literals::json_literals;\nusing namespace nlohmann;\n
      This is suggested to ease migration to the next major version release of the library. See JSON_USE_GLOBAL_UDLS for details.

      "},{"location":"api/operator_literal_json_pointer/#parameters","title":"Parameters","text":"s (in) a string representation of a JSON Pointer n (in) length of string s"},{"location":"api/operator_literal_json_pointer/#return-value","title":"Return value","text":"

      json_pointer value parsed from s

      "},{"location":"api/operator_literal_json_pointer/#exceptions","title":"Exceptions","text":"

      The function can throw anything that json_pointer::json_pointer would throw.

      "},{"location":"api/operator_literal_json_pointer/#complexity","title":"Complexity","text":"

      Linear.

      "},{"location":"api/operator_literal_json_pointer/#examples","title":"Examples","text":"Example

      The following code shows how to create JSON Pointers from string literals.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    json j = R\"( {\"hello\": \"world\", \"answer\": 42} )\"_json;\n    auto val = j[\"/hello\"_json_pointer];\n\n    std::cout << std::setw(2) << val << '\\n';\n}\n

      Output:

      \"world\"\n
      "},{"location":"api/operator_literal_json_pointer/#see-also","title":"See also","text":"
      • json_pointer - type to represent JSON Pointers
      "},{"location":"api/operator_literal_json_pointer/#version-history","title":"Version history","text":"
      • Added in version 2.0.0.
      • Moved to namespace nlohmann::literals::json_literals in 3.11.0.
      "},{"location":"api/operator_ltlt/","title":"nlohmann::operator<<(basic_json), nlohmann::operator<<(json_pointer)","text":"
      std::ostream& operator<<(std::ostream& o, const basic_json& j);      // (1)\n\nstd::ostream& operator<<(std::ostream& o, const json_pointer& ptr);  // (2)\n
      1. Serialize the given JSON value j to the output stream o. The JSON value will be serialized using the dump member function.
        • The indentation of the output can be controlled with the member variable width of the output stream o. For instance, using the manipulator std::setw(4) on o sets the indentation level to 4 and the serialization result is the same as calling dump(4).
        • The indentation character can be controlled with the member variable fill of the output stream o. For instance, the manipulator std::setfill('\\\\t') sets indentation to use a tab character rather than the default space character.
      2. Write a string representation of the given JSON pointer ptr to the output stream o. The string representation is obtained using the to_string member function.
      "},{"location":"api/operator_ltlt/#parameters","title":"Parameters","text":"o (in, out) stream to write to j (in) JSON value to serialize ptr (in) JSON pointer to write"},{"location":"api/operator_ltlt/#return-value","title":"Return value","text":"

      the stream o

      "},{"location":"api/operator_ltlt/#exceptions","title":"Exceptions","text":"
      1. Throws type_error.316 if a string stored inside the JSON value is not UTF-8 encoded. Note that unlike the dump member functions, no error_handler can be set.
      2. None.
      "},{"location":"api/operator_ltlt/#complexity","title":"Complexity","text":"

      Linear.

      "},{"location":"api/operator_ltlt/#notes","title":"Notes","text":"

      Deprecation

      Function std::ostream& operator<<(std::ostream& o, const basic_json& j) replaces function std::ostream& operator>>(const basic_json& j, std::ostream& o) which has been deprecated in version 3.0.0. It will be removed in version 4.0.0. Please replace calls like j >> o; with o << j;.

      "},{"location":"api/operator_ltlt/#examples","title":"Examples","text":"Example: (1) serialize JSON value to stream

      The example below shows the serialization with different parameters to width to adjust the indentation level.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n\n    // serialize without indentation\n    std::cout << j_object << \"\\n\\n\";\n    std::cout << j_array << \"\\n\\n\";\n\n    // serialize with indentation\n    std::cout << std::setw(4) << j_object << \"\\n\\n\";\n    std::cout << std::setw(2) << j_array << \"\\n\\n\";\n    std::cout << std::setw(1) << std::setfill('\\t') << j_object << \"\\n\\n\";\n}\n

      Output:

      {\"one\":1,\"two\":2}\n\n[1,2,4,8,16]\n\n{\n    \"one\": 1,\n    \"two\": 2\n}\n\n[\n  1,\n  2,\n  4,\n  8,\n  16\n]\n\n{\n    \"one\": 1,\n    \"two\": 2\n}\n
      Example: (2) write JSON pointer to stream

      The example below shows how to write a JSON pointer to a stream.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON poiner\n    json::json_pointer ptr(\"/foo/bar/baz\");\n\n    // write string representation to stream\n    std::cout << ptr << std::endl;\n}\n

      Output:

      /foo/bar/baz\n
      "},{"location":"api/operator_ltlt/#version-history","title":"Version history","text":"
      1. Added in version 1.0.0. Added support for indentation character and deprecated std::ostream& operator>>(const basic_json& j, std::ostream& o) in version 3.0.0.
      2. Added in version 3.11.0.
      "},{"location":"api/ordered_json/","title":"nlohmann::ordered_json","text":"
      using ordered_json = basic_json<ordered_map>;\n

      This type preserves the insertion order of object keys.

      "},{"location":"api/ordered_json/#iterator-invalidation","title":"Iterator invalidation","text":"

      The type is based on ordered_map which in turn uses a std::vector to store object elements. Therefore, adding object elements can yield a reallocation in which case all iterators (including the end() iterator) and all references to the elements are invalidated. Also, any iterator or reference after the insertion point will point to the same index which is now a different value.

      "},{"location":"api/ordered_json/#examples","title":"Examples","text":"Example

      The example below demonstrates how ordered_json preserves the insertion order of object keys.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing ordered_json = nlohmann::ordered_json;\n\nint main()\n{\n    ordered_json j;\n    j[\"one\"] = 1;\n    j[\"two\"] = 2;\n    j[\"three\"] = 3;\n\n    std::cout << j.dump(2) << '\\n';\n}\n

      Output:

      {\n  \"one\": 1,\n  \"two\": 2,\n  \"three\": 3\n}\n
      "},{"location":"api/ordered_json/#see-also","title":"See also","text":"
      • ordered_map
      • Object Order
      "},{"location":"api/ordered_json/#version-history","title":"Version history","text":"

      Since version 3.9.0.

      "},{"location":"api/ordered_map/","title":"nlohmann::ordered_map","text":"
      template<class Key, class T, class IgnoredLess = std::less<Key>,\n         class Allocator = std::allocator<std::pair<const Key, T>>>\nstruct ordered_map : std::vector<std::pair<const Key, T>, Allocator>;\n

      A minimal map-like container that preserves insertion order for use within nlohmann::ordered_json (nlohmann::basic_json<ordered_map>).

      "},{"location":"api/ordered_map/#template-parameters","title":"Template parameters","text":"Key key type T mapped type IgnoredLess comparison function (ignored and only added to ensure compatibility with std::map) Allocator allocator type"},{"location":"api/ordered_map/#iterator-invalidation","title":"Iterator invalidation","text":"

      The type uses a std::vector to store object elements. Therefore, adding elements can yield a reallocation in which case all iterators (including the end() iterator) and all references to the elements are invalidated.

      "},{"location":"api/ordered_map/#member-types","title":"Member types","text":"
      • key_type - key type (Key)
      • mapped_type - mapped type (T)
      • Container - base container type (std::vector<std::pair<const Key, T>, Allocator>)
      • iterator
      • const_iterator
      • size_type
      • value_type
      • key_compare - key comparison function
        std::equal_to<Key>  // until C++14\n\nstd::equal_to<>     // since C++14\n
      "},{"location":"api/ordered_map/#member-functions","title":"Member functions","text":"
      • (constructor)
      • (destructor)
      • emplace
      • operator[]
      • at
      • erase
      • count
      • find
      • insert
      "},{"location":"api/ordered_map/#examples","title":"Examples","text":"Example

      The example shows the different behavior of std::map and nlohmann::ordered_map.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\n// simple output function\ntemplate<typename Map>\nvoid output(const char* prefix, const Map& m)\n{\n    std::cout << prefix << \" = { \";\n    for (auto& element : m)\n    {\n        std::cout << element.first << \":\" << element.second << ' ';\n    }\n    std::cout << \"}\" << std::endl;\n}\n\nint main()\n{\n    // create and fill two maps\n    nlohmann::ordered_map<std::string, std::string> m_ordered;\n    m_ordered[\"one\"] = \"eins\";\n    m_ordered[\"two\"] = \"zwei\";\n    m_ordered[\"three\"] = \"drei\";\n\n    std::map<std::string, std::string> m_std;\n    m_std[\"one\"] = \"eins\";\n    m_std[\"two\"] = \"zwei\";\n    m_std[\"three\"] = \"drei\";\n\n    // output: m_ordered is ordered by insertion order, m_std is ordered by key\n    output(\"m_ordered\", m_ordered);\n    output(\"m_std\", m_std);\n\n    // erase and re-add \"one\" key\n    m_ordered.erase(\"one\");\n    m_ordered[\"one\"] = \"eins\";\n\n    m_std.erase(\"one\");\n    m_std[\"one\"] = \"eins\";\n\n    // output: m_ordered shows newly added key at the end; m_std is again ordered by key\n    output(\"m_ordered\", m_ordered);\n    output(\"m_std\", m_std);\n}\n

      Output:

      m_ordered = { one:eins two:zwei three:drei }\nm_std = { one:eins three:drei two:zwei }\nm_ordered = { two:zwei three:drei one:eins }\nm_std = { one:eins three:drei two:zwei }\n
      "},{"location":"api/ordered_map/#see-also","title":"See also","text":"
      • ordered_json
      "},{"location":"api/ordered_map/#version-history","title":"Version history","text":"
      • Added in version 3.9.0 to implement nlohmann::ordered_json.
      • Added key_compare member in version 3.11.0.
      "},{"location":"api/adl_serializer/","title":"nlohmann::adl_serializer","text":"
      template<typename, typename>\nstruct adl_serializer;\n

      Serializer that uses ADL (Argument-Dependent Lookup) to choose to_json/from_json functions from the types' namespaces.

      It is implemented similar to

      template<typename ValueType>\nstruct adl_serializer {\n    template<typename BasicJsonType>\n    static void to_json(BasicJsonType& j, const T& value) {\n        // calls the \"to_json\" method in T's namespace\n    }\n\n    template<typename BasicJsonType>\n    static void from_json(const BasicJsonType& j, T& value) {\n        // same thing, but with the \"from_json\" method\n    }\n};\n
      "},{"location":"api/adl_serializer/#member-functions","title":"Member functions","text":"
      • from_json - convert a JSON value to any value type
      • to_json - convert any value type to a JSON value
      "},{"location":"api/adl_serializer/#version-history","title":"Version history","text":"
      • Added in version 2.1.0.
      "},{"location":"api/adl_serializer/from_json/","title":"nlohmann::adl_serializer::from_json","text":"
      // (1)\ntemplate<typename BasicJsonType, typename TargetType = ValueType>\nstatic auto from_json(BasicJsonType && j, TargetType& val) noexcept(\n    noexcept(::nlohmann::from_json(std::forward<BasicJsonType>(j), val)))\n-> decltype(::nlohmann::from_json(std::forward<BasicJsonType>(j), val), void())\n\n// (2)\ntemplate<typename BasicJsonType, typename TargetType = ValueType>\nstatic auto from_json(BasicJsonType && j) noexcept(\nnoexcept(::nlohmann::from_json(std::forward<BasicJsonType>(j), detail::identity_tag<TargetType> {})))\n-> decltype(::nlohmann::from_json(std::forward<BasicJsonType>(j), detail::identity_tag<TargetType> {}))\n

      This function is usually called by the get() function of the basic_json class (either explicitly or via the conversion operators).

      1. This function is chosen for default-constructible value types.
      2. This function is chosen for value types which are not default-constructible.
      "},{"location":"api/adl_serializer/from_json/#parameters","title":"Parameters","text":"j (in) JSON value to read from val (out) value to write to"},{"location":"api/adl_serializer/from_json/#return-value","title":"Return value","text":"

      Copy of the JSON value, converted to ValueType

      "},{"location":"api/adl_serializer/from_json/#examples","title":"Examples","text":"Example: (1) Default-constructible type

      The example below shows how a from_json function can be implemented for a user-defined type. This function is called by the adl_serializer when template get<ns::person>() is called.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nnamespace ns\n{\n// a simple struct to model a person\nstruct person\n{\n    std::string name;\n    std::string address;\n    int age;\n};\n} // namespace ns\n\nnamespace ns\n{\nvoid from_json(const json& j, person& p)\n{\n    j.at(\"name\").get_to(p.name);\n    j.at(\"address\").get_to(p.address);\n    j.at(\"age\").get_to(p.age);\n}\n} // namespace ns\n\nint main()\n{\n    json j;\n    j[\"name\"] = \"Ned Flanders\";\n    j[\"address\"] = \"744 Evergreen Terrace\";\n    j[\"age\"] = 60;\n\n    auto p = j.template get<ns::person>();\n\n    std::cout << p.name << \" (\" << p.age << \") lives in \" << p.address << std::endl;\n}\n

      Output:

      Ned Flanders (60) lives in 744 Evergreen Terrace\n
      Example: (2) Non-default-constructible type

      The example below shows how a from_json is implemented as part of a specialization of the adl_serializer to realize the conversion of a non-default-constructible type.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nnamespace ns\n{\n// a simple struct to model a person (not default constructible)\nstruct person\n{\n    person(std::string n, std::string a, int aa)\n        : name(std::move(n)), address(std::move(a)), age(aa)\n    {}\n\n    std::string name;\n    std::string address;\n    int age;\n};\n} // namespace ns\n\nnamespace nlohmann\n{\ntemplate <>\nstruct adl_serializer<ns::person>\n{\n    static ns::person from_json(const json& j)\n    {\n        return {j.at(\"name\"), j.at(\"address\"), j.at(\"age\")};\n    }\n\n    // Here's the catch! You must provide a to_json method! Otherwise, you\n    // will not be able to convert person to json, since you fully\n    // specialized adl_serializer on that type\n    static void to_json(json& j, ns::person p)\n    {\n        j[\"name\"] = p.name;\n        j[\"address\"] = p.address;\n        j[\"age\"] = p.age;\n    }\n};\n} // namespace nlohmann\n\nint main()\n{\n    json j;\n    j[\"name\"] = \"Ned Flanders\";\n    j[\"address\"] = \"744 Evergreen Terrace\";\n    j[\"age\"] = 60;\n\n    auto p = j.template get<ns::person>();\n\n    std::cout << p.name << \" (\" << p.age << \") lives in \" << p.address << std::endl;\n}\n

      Output:

      Ned Flanders (60) lives in 744 Evergreen Terrace\n
      "},{"location":"api/adl_serializer/from_json/#see-also","title":"See also","text":"
      • to_json
      "},{"location":"api/adl_serializer/from_json/#version-history","title":"Version history","text":"
      • Added in version 2.1.0.
      "},{"location":"api/adl_serializer/to_json/","title":"nlohmann::adl_serializer::to_json","text":"
      template<typename BasicJsonType, typename TargetType = ValueType>\nstatic auto to_json(BasicJsonType& j, TargetType && val) noexcept(\n    noexcept(::nlohmann::to_json(j, std::forward<TargetType>(val))))\n-> decltype(::nlohmann::to_json(j, std::forward<TargetType>(val)), void())\n

      This function is usually called by the constructors of the basic_json class.

      "},{"location":"api/adl_serializer/to_json/#parameters","title":"Parameters","text":"j (out) JSON value to write to val (in) value to read from"},{"location":"api/adl_serializer/to_json/#examples","title":"Examples","text":"Example

      The example below shows how a to_json function can be implemented for a user-defined type. This function is called by the adl_serializer when the constructor basic_json(ns::person) is called.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nnamespace ns\n{\n// a simple struct to model a person\nstruct person\n{\n    std::string name;\n    std::string address;\n    int age;\n};\n} // namespace ns\n\nnamespace ns\n{\nvoid to_json(json& j, const person& p)\n{\n    j = json{ {\"name\", p.name}, {\"address\", p.address}, {\"age\", p.age} };\n}\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    json j = p;\n\n    std::cout << j << std::endl;\n}\n

      Output:

      {\"address\":\"744 Evergreen Terrace\",\"age\":60,\"name\":\"Ned Flanders\"}\n
      "},{"location":"api/adl_serializer/to_json/#see-also","title":"See also","text":"
      • from_json
      "},{"location":"api/adl_serializer/to_json/#version-history","title":"Version history","text":"
      • Added in version 2.1.0.
      "},{"location":"api/basic_json/","title":"nlohmann::basic_json","text":"

      Defined in header <nlohmann/json.hpp>

      template<\n    template<typename U, typename V, typename... Args> class ObjectType = std::map,\n    template<typename U, typename... Args> class ArrayType = std::vector,\n    class StringType = std::string,\n    class BooleanType = bool,\n    class NumberIntegerType = std::int64_t,\n    class NumberUnsignedType = std::uint64_t,\n    class NumberFloatType = double,\n    template<typename U> class AllocatorType = std::allocator,\n    template<typename T, typename SFINAE = void> class JSONSerializer = adl_serializer,\n    class BinaryType = std::vector<std::uint8_t>,\n    class CustomBaseClass = void\n>\nclass basic_json;\n
      "},{"location":"api/basic_json/#template-parameters","title":"Template parameters","text":"Template parameter Description Derived type ObjectType type for JSON objects object_t ArrayType type for JSON arrays array_t StringType type for JSON strings and object keys string_t BooleanType type for JSON booleans boolean_t NumberIntegerType type for JSON integer numbers number_integer_t NumberUnsignedType type for JSON unsigned integer numbers number_unsigned_t NumberFloatType type for JSON floating-point numbers number_float_t AllocatorType type of the allocator to use JSONSerializer the serializer to resolve internal calls to to_json() and from_json() json_serializer BinaryType type for binary arrays binary_t CustomBaseClass extension point for user code json_base_class_t"},{"location":"api/basic_json/#specializations","title":"Specializations","text":"
      • json - default specialization
      • ordered_json - specialization that maintains the insertion order of object keys
      "},{"location":"api/basic_json/#iterator-invalidation","title":"Iterator invalidation","text":"

      All operations that add values to an array (push_back , operator+=, emplace_back, insert, and operator[] for a non-existing index) can yield a reallocation, in which case all iterators (including the end() iterator) and all references to the elements are invalidated.

      For ordered_json, also all operations that add a value to an object (push_back, operator+=, emplace, insert, update, and operator[] for a non-existing key) can yield a reallocation, in which case all iterators (including the end() iterator) and all references to the elements are invalidated.

      "},{"location":"api/basic_json/#requirements","title":"Requirements","text":"

      The class satisfies the following concept requirements:

      "},{"location":"api/basic_json/#basic","title":"Basic","text":"
      • DefaultConstructible: JSON values can be default constructed. The result will be a JSON null value.
      • MoveConstructible: A JSON value can be constructed from an rvalue argument.
      • CopyConstructible: A JSON value can be copy-constructed from an lvalue expression.
      • MoveAssignable: A JSON value can be assigned from an rvalue argument.
      • CopyAssignable: A JSON value can be copy-assigned from an lvalue expression.
      • Destructible: JSON values can be destructed.
      "},{"location":"api/basic_json/#layout","title":"Layout","text":"
      • StandardLayoutType: JSON values have standard layout: All non-static data members are private and standard layout types, the class has no virtual functions or (virtual) base classes.
      "},{"location":"api/basic_json/#library-wide","title":"Library-wide","text":"
      • EqualityComparable: JSON values can be compared with ==, see operator==.
      • LessThanComparable: JSON values can be compared with <, see operator<.
      • Swappable: Any JSON lvalue or rvalue of can be swapped with any lvalue or rvalue of other compatible types, using unqualified function swap.
      • NullablePointer: JSON values can be compared against std::nullptr_t objects which are used to model the null value.
      "},{"location":"api/basic_json/#container","title":"Container","text":"
      • Container: JSON values can be used like STL containers and provide iterator access.
      • ReversibleContainer: JSON values can be used like STL containers and provide reverse iterator access.
      "},{"location":"api/basic_json/#member-types","title":"Member types","text":"
      • adl_serializer - the default serializer
      • value_t - the JSON type enumeration
      • json_pointer - JSON Pointer implementation
      • json_serializer - type of the serializer to for conversions from/to JSON
      • error_handler_t - type to choose behavior on decoding errors
      • cbor_tag_handler_t - type to choose how to handle CBOR tags
      • initializer_list_t - type for initializer lists of basic_json values
      • input_format_t - type to choose the format to parse
      • json_sax_t - type for SAX events
      "},{"location":"api/basic_json/#exceptions","title":"Exceptions","text":"
      • exception - general exception of the basic_json class
        • parse_error - exception indicating a parse error
        • invalid_iterator - exception indicating errors with iterators
        • type_error - exception indicating executing a member function with a wrong type
        • out_of_range - exception indicating access out of the defined range
        • other_error - exception indicating other library errors
      "},{"location":"api/basic_json/#container-types","title":"Container types","text":"Type Definition value_type basic_json reference value_type& const_reference const value_type& difference_type std::ptrdiff_t size_type std::size_t allocator_type AllocatorType<basic_json> pointer std::allocator_traits<allocator_type>::pointer const_pointer std::allocator_traits<allocator_type>::const_pointer iterator LegacyBidirectionalIterator const_iterator constant LegacyBidirectionalIterator reverse_iterator reverse iterator, derived from iterator const_reverse_iterator reverse iterator, derived from const_iterator iteration_proxy helper type for items function"},{"location":"api/basic_json/#json-value-data-types","title":"JSON value data types","text":"
      • array_t - type for arrays
      • binary_t - type for binary arrays
      • boolean_t - type for booleans
      • default_object_comparator_t - default comparator for objects
      • number_float_t - type for numbers (floating-point)
      • number_integer_t - type for numbers (integer)
      • number_unsigned_t - type for numbers (unsigned)
      • object_comparator_t - comparator for objects
      • object_t - type for objects
      • string_t - type for strings
      "},{"location":"api/basic_json/#parser-callback","title":"Parser callback","text":"
      • parse_event_t - parser event types
      • parser_callback_t - per-element parser callback type
      "},{"location":"api/basic_json/#member-functions","title":"Member functions","text":"
      • (constructor)
      • (destructor)
      • operator= - copy assignment
      • array (static) - explicitly create an array
      • binary (static) - explicitly create a binary array
      • object (static) - explicitly create an object
      "},{"location":"api/basic_json/#object-inspection","title":"Object inspection","text":"

      Functions to inspect the type of a JSON value.

      • type - return the type of the JSON value
      • operator value_t - return the type of the JSON value
      • type_name - return the type as string
      • is_primitive - return whether type is primitive
      • is_structured - return whether type is structured
      • is_null - return whether value is null
      • is_boolean - return whether value is a boolean
      • is_number - return whether value is a number
      • is_number_integer - return whether value is an integer number
      • is_number_unsigned - return whether value is an unsigned integer number
      • is_number_float - return whether value is a floating-point number
      • is_object - return whether value is an object
      • is_array - return whether value is an array
      • is_string - return whether value is a string
      • is_binary - return whether value is a binary array
      • is_discarded - return whether value is discarded
      "},{"location":"api/basic_json/#value-access","title":"Value access","text":"

      Direct access to the stored value of a JSON value.

      • get - get a value
      • get_to - get a value and write it to a destination
      • get_ptr - get a pointer value
      • get_ref - get a reference value
      • operator ValueType - get a value
      • get_binary - get a binary value
      "},{"location":"api/basic_json/#element-access","title":"Element access","text":"

      Access to the JSON value

      • at - access specified element with bounds checking
      • operator[] - access specified element
      • value - access specified object element with default value
      • front - access the first element
      • back - access the last element
      "},{"location":"api/basic_json/#lookup","title":"Lookup","text":"
      • find - find an element in a JSON object
      • count - returns the number of occurrences of a key in a JSON object
      • contains - check the existence of an element in a JSON object
      "},{"location":"api/basic_json/#iterators","title":"Iterators","text":"
      • begin - returns an iterator to the first element
      • cbegin - returns a const iterator to the first element
      • end - returns an iterator to one past the last element
      • cend - returns a const iterator to one past the last element
      • rbegin - returns an iterator to the reverse-beginning
      • rend - returns an iterator to the reverse-end
      • crbegin - returns a const iterator to the reverse-beginning
      • crend - returns a const iterator to the reverse-end
      • items - wrapper to access iterator member functions in range-based for
      "},{"location":"api/basic_json/#capacity","title":"Capacity","text":"
      • empty - checks whether the container is empty
      • size - returns the number of elements
      • max_size - returns the maximum possible number of elements
      "},{"location":"api/basic_json/#modifiers","title":"Modifiers","text":"
      • clear - clears the contents
      • push_back - add a value to an array/object
      • operator+= - add a value to an array/object
      • emplace_back - add a value to an array
      • emplace - add a value to an object if key does not exist
      • erase - remove elements
      • insert - inserts elements
      • update - updates a JSON object from another object, overwriting existing keys
      • swap - exchanges the values
      "},{"location":"api/basic_json/#lexicographical-comparison-operators","title":"Lexicographical comparison operators","text":"
      • operator== - comparison: equal
      • operator!= - comparison: not equal
      • operator< - comparison: less than
      • operator> - comparison: greater than
      • operator<= - comparison: less than or equal
      • operator>= - comparison: greater than or equal
      • operator<=> - comparison: 3-way
      "},{"location":"api/basic_json/#serialization-dumping","title":"Serialization / Dumping","text":"
      • dump - serialization
      "},{"location":"api/basic_json/#deserialization-parsing","title":"Deserialization / Parsing","text":"
      • parse (static) - deserialize from a compatible input
      • accept (static) - check if the input is valid JSON
      • sax_parse (static) - generate SAX events
      "},{"location":"api/basic_json/#json-pointer-functions","title":"JSON Pointer functions","text":"
      • flatten - return flattened JSON value
      • unflatten - unflatten a previously flattened JSON value
      "},{"location":"api/basic_json/#json-patch-functions","title":"JSON Patch functions","text":"
      • patch - applies a JSON patch
      • patch_inplace - applies a JSON patch in place
      • diff (static) - creates a diff as a JSON patch
      "},{"location":"api/basic_json/#json-merge-patch-functions","title":"JSON Merge Patch functions","text":"
      • merge_patch - applies a JSON Merge Patch
      "},{"location":"api/basic_json/#static-functions","title":"Static functions","text":"
      • meta - returns version information on the library
      • get_allocator - returns the allocator associated with the container
      "},{"location":"api/basic_json/#binary-formats","title":"Binary formats","text":"
      • from_bjdata (static) - create a JSON value from an input in BJData format
      • from_bson (static) - create a JSON value from an input in BSON format
      • from_cbor (static) - create a JSON value from an input in CBOR format
      • from_msgpack (static) - create a JSON value from an input in MessagePack format
      • from_ubjson (static) - create a JSON value from an input in UBJSON format
      • to_bjdata (static) - create a BJData serialization of a given JSON value
      • to_bson (static) - create a BSON serialization of a given JSON value
      • to_cbor (static) - create a CBOR serialization of a given JSON value
      • to_msgpack (static) - create a MessagePack serialization of a given JSON value
      • to_ubjson (static) - create a UBJSON serialization of a given JSON value
      "},{"location":"api/basic_json/#non-member-functions","title":"Non-member functions","text":"
      • operator<<(std::ostream&) - serialize to stream
      • operator>>(std::istream&) - deserialize from stream
      • to_string - user-defined to_string function for JSON values
      "},{"location":"api/basic_json/#literals","title":"Literals","text":"
      • operator\"\"_json - user-defined string literal for JSON values
      "},{"location":"api/basic_json/#helper-classes","title":"Helper classes","text":"
      • std::hash<basic_json> - return a hash value for a JSON object
      • std::swap<basic_json> - exchanges the values of two JSON objects
      "},{"location":"api/basic_json/#examples","title":"Examples","text":"Example

      The example shows how the library is used.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    json j =\n    {\n        {\"pi\", 3.141},\n        {\"happy\", true},\n        {\"name\", \"Niels\"},\n        {\"nothing\", nullptr},\n        {\n            \"answer\", {\n                {\"everything\", 42}\n            }\n        },\n        {\"list\", {1, 0, 2}},\n        {\n            \"object\", {\n                {\"currency\", \"USD\"},\n                {\"value\", 42.99}\n            }\n        }\n    };\n\n    // add new values\n    j[\"new\"][\"key\"][\"value\"] = {\"another\", \"list\"};\n\n    // count elements\n    auto s = j.size();\n    j[\"size\"] = s;\n\n    // pretty print with indent of 4 spaces\n    std::cout << std::setw(4) << j << '\\n';\n}\n

      Output:

      {\n    \"answer\": {\n        \"everything\": 42\n    },\n    \"happy\": true,\n    \"list\": [\n        1,\n        0,\n        2\n    ],\n    \"name\": \"Niels\",\n    \"new\": {\n        \"key\": {\n            \"value\": [\n                \"another\",\n                \"list\"\n            ]\n        }\n    },\n    \"nothing\": null,\n    \"object\": {\n        \"currency\": \"USD\",\n        \"value\": 42.99\n    },\n    \"pi\": 3.141,\n    \"size\": 8\n}\n
      "},{"location":"api/basic_json/#see-also","title":"See also","text":"
      • RFC 8259: The JavaScript Object Notation (JSON) Data Interchange Format
      "},{"location":"api/basic_json/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/accept/","title":"nlohmann::basic_json::accept","text":"
      // (1)\ntemplate<typename InputType>\nstatic bool accept(InputType&& i,\n                   const bool ignore_comments = false);\n\n// (2)\ntemplate<typename IteratorType>\nstatic bool accept(IteratorType first, IteratorType last,\n                   const bool ignore_comments = false);\n

      Checks whether the input is valid JSON.

      1. Reads from a compatible input.
      2. Reads from a pair of character iterators

        The value_type of the iterator must be an integral type with size of 1, 2 or 4 bytes, which will be interpreted respectively as UTF-8, UTF-16 and UTF-32.

      Unlike the parse function, this function neither throws an exception in case of invalid JSON input (i.e., a parse error) nor creates diagnostic information.

      "},{"location":"api/basic_json/accept/#template-parameters","title":"Template parameters","text":"InputType

      A compatible input, for instance:

      • an std::istream object
      • a FILE pointer (throws if null)
      • a C-style array of characters
      • a pointer to a null-terminated string of single byte characters (throws if null)
      • a std::string
      • an object obj for which begin(obj) and end(obj) produces a valid pair of iterators.
      IteratorType

      a compatible iterator type, for instance.

      • a pair of std::string::iterator or std::vector<std::uint8_t>::iterator
      • a pair of pointers such as ptr and ptr + len
      "},{"location":"api/basic_json/accept/#parameters","title":"Parameters","text":"i (in) Input to parse from. ignore_comments (in) whether comments should be ignored and treated like whitespace (true) or yield a parse error (false); (optional, false by default) first (in) iterator to start of character range last (in) iterator to end of character range"},{"location":"api/basic_json/accept/#return-value","title":"Return value","text":"

      Whether the input is valid JSON.

      "},{"location":"api/basic_json/accept/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

      "},{"location":"api/basic_json/accept/#exceptions","title":"Exceptions","text":"

      Throws parse_error.101 in case of an empty input like a null FILE* or char* pointer.

      "},{"location":"api/basic_json/accept/#complexity","title":"Complexity","text":"

      Linear in the length of the input. The parser is a predictive LL(1) parser.

      "},{"location":"api/basic_json/accept/#notes","title":"Notes","text":"

      A UTF-8 byte order mark is silently ignored.

      "},{"location":"api/basic_json/accept/#examples","title":"Examples","text":"Example

      The example below demonstrates the accept() function reading from a string.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // a valid JSON text\n    auto valid_text = R\"(\n    {\n        \"numbers\": [1, 2, 3]\n    }\n    )\";\n\n    // an invalid JSON text\n    auto invalid_text = R\"(\n    {\n        \"strings\": [\"extra\", \"comma\", ]\n    }\n    )\";\n\n    std::cout << std::boolalpha\n              << json::accept(valid_text) << ' '\n              << json::accept(invalid_text) << '\\n';\n}\n

      Output:

      true false\n
      "},{"location":"api/basic_json/accept/#see-also","title":"See also","text":"
      • parse - deserialize from a compatible input
      • operator>> - deserialize from stream
      "},{"location":"api/basic_json/accept/#version-history","title":"Version history","text":"
      • Added in version 3.0.0.
      • Ignoring comments via ignore_comments added in version 3.9.0.
      • Changed runtime assertion in case of FILE* null pointers to exception in version 3.11.4.

      Deprecation

      Overload (2) replaces calls to accept with a pair of iterators as their first parameter which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like accept({ptr, ptr+len}, ...); with accept(ptr, ptr+len, ...);.

      You should be warned by your compiler with a -Wdeprecated-declarations warning if you are using a deprecated function.

      "},{"location":"api/basic_json/array/","title":"nlohmann::basic_json::array","text":"
      static basic_json array(initializer_list_t init = {});\n

      Creates a JSON array value from a given initializer list. That is, given a list of values a, b, c, creates the JSON value [a, b, c]. If the initializer list is empty, the empty array [] is created.

      "},{"location":"api/basic_json/array/#parameters","title":"Parameters","text":"init (in) initializer list with JSON values to create an array from (optional)"},{"location":"api/basic_json/array/#return-value","title":"Return value","text":"

      JSON array value

      "},{"location":"api/basic_json/array/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

      "},{"location":"api/basic_json/array/#complexity","title":"Complexity","text":"

      Linear in the size of init.

      "},{"location":"api/basic_json/array/#notes","title":"Notes","text":"

      This function is only needed to express two edge cases that cannot be realized with the initializer list constructor (basic_json(initializer_list_t, bool, value_t)). These cases are:

      1. creating an array whose elements are all pairs whose first element is a string -- in this case, the initializer list constructor would create an object, taking the first elements as keys
      2. creating an empty array -- passing the empty initializer list to the initializer list constructor yields an empty object
      "},{"location":"api/basic_json/array/#examples","title":"Examples","text":"Example

      The following code shows an example for the array function.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON arrays\n    json j_no_init_list = json::array();\n    json j_empty_init_list = json::array({});\n    json j_nonempty_init_list = json::array({1, 2, 3, 4});\n    json j_list_of_pairs = json::array({ {\"one\", 1}, {\"two\", 2} });\n\n    // serialize the JSON arrays\n    std::cout << j_no_init_list << '\\n';\n    std::cout << j_empty_init_list << '\\n';\n    std::cout << j_nonempty_init_list << '\\n';\n    std::cout << j_list_of_pairs << '\\n';\n}\n

      Output:

      []\n[]\n[1,2,3,4]\n[[\"one\",1],[\"two\",2]]\n
      "},{"location":"api/basic_json/array/#see-also","title":"See also","text":"
      • basic_json(initializer_list_t) - create a JSON value from an initializer list
      • object - create a JSON object value from an initializer list
      "},{"location":"api/basic_json/array/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/array_t/","title":"nlohmann::basic_json::array_t","text":"
      using array_t = ArrayType<basic_json, AllocatorType<basic_json>>;\n

      The type used to store JSON arrays.

      RFC 8259 describes JSON arrays as follows:

      An array is an ordered sequence of zero or more values.

      To store objects in C++, a type is defined by the template parameters explained below.

      "},{"location":"api/basic_json/array_t/#template-parameters","title":"Template parameters","text":"ArrayType container type to store arrays (e.g., std::vector or std::list) AllocatorType the allocator to use for objects (e.g., std::allocator)"},{"location":"api/basic_json/array_t/#notes","title":"Notes","text":""},{"location":"api/basic_json/array_t/#default-type","title":"Default type","text":"

      With the default values for ArrayType (std::vector) and AllocatorType (std::allocator), the default value for array_t is:

      std::vector<\n  basic_json, // value_type\n  std::allocator<basic_json> // allocator_type\n>\n
      "},{"location":"api/basic_json/array_t/#limits","title":"Limits","text":"

      RFC 8259 specifies:

      An implementation may set limits on the maximum depth of nesting.

      In this class, the array's limit of nesting is not explicitly constrained. However, a maximum depth of nesting may be introduced by the compiler or runtime environment. A theoretical limit can be queried by calling the max_size function of a JSON array.

      "},{"location":"api/basic_json/array_t/#storage","title":"Storage","text":"

      Arrays are stored as pointers in a basic_json type. That is, for any access to array values, a pointer of type array_t* must be dereferenced.

      "},{"location":"api/basic_json/array_t/#examples","title":"Examples","text":"Example

      The following code shows that array_t is by default, a typedef to std::vector<nlohmann::json>.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout << std::boolalpha << std::is_same<std::vector<json>, json::array_t>::value << std::endl;\n}\n

      Output:

      true\n
      "},{"location":"api/basic_json/array_t/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/at/","title":"nlohmann::basic_json::at","text":"
      // (1)\nreference at(size_type idx);\nconst_reference at(size_type idx) const;\n\n// (2)\nreference at(const typename object_t::key_type& key);\nconst_reference at(const typename object_t::key_type& key) const;\n\n// (3)\ntemplate<typename KeyType>\nreference at(KeyType&& key);\ntemplate<typename KeyType>\nconst_reference at(KeyType&& key) const;\n\n// (4)\nreference at(const json_pointer& ptr);\nconst_reference at(const json_pointer& ptr) const;\n
      1. Returns a reference to the array element at specified location idx, with bounds checking.
      2. Returns a reference to the object element with specified key key, with bounds checking.
      3. See 2. This overload is only available if KeyType is comparable with typename object_t::key_type and typename object_comparator_t::is_transparent denotes a type.
      4. Returns a reference to the element at specified JSON pointer ptr, with bounds checking.
      "},{"location":"api/basic_json/at/#template-parameters","title":"Template parameters","text":"KeyType A type for an object key other than json_pointer that is comparable with string_t using object_comparator_t. This can also be a string view (C++17)."},{"location":"api/basic_json/at/#parameters","title":"Parameters","text":"idx (in) index of the element to access key (in) object key of the elements to access ptr (in) JSON pointer to the desired element"},{"location":"api/basic_json/at/#return-value","title":"Return value","text":"
      1. reference to the element at index idx
      2. reference to the element at key key
      3. reference to the element at key key
      4. reference to the element pointed to by ptr
      "},{"location":"api/basic_json/at/#exception-safety","title":"Exception safety","text":"

      Strong exception safety: if an exception occurs, the original value stays intact.

      "},{"location":"api/basic_json/at/#exceptions","title":"Exceptions","text":"
      1. The function can throw the following exceptions:
        • Throws type_error.304 if the JSON value is not an array; in this case, calling at with an index makes no sense. See example below.
        • Throws out_of_range.401 if the index idx is out of range of the array; that is, idx >= size(). See example below.
      2. The function can throw the following exceptions:
        • Throws type_error.304 if the JSON value is not an object; in this case, calling at with a key makes no sense. See example below.
        • Throws out_of_range.403 if the key key is not stored in the object; that is, find(key) == end(). See example below.
      3. See 2.
      4. The function can throw the following exceptions:
        • Throws parse_error.106 if an array index in the passed JSON pointer ptr begins with '0'. See example below.
        • Throws parse_error.109 if an array index in the passed JSON pointer ptr is not a number. See example below.
        • Throws out_of_range.401 if an array index in the passed JSON pointer ptr is out of range. See example below.
        • Throws out_of_range.402 if the array index '-' is used in the passed JSON pointer ptr. As at provides checked access (and no elements are implicitly inserted), the index '-' is always invalid. See example below.
        • Throws out_of_range.403 if the JSON pointer describes a key of an object which cannot be found. See example below.
        • Throws out_of_range.404 if the JSON pointer ptr can not be resolved. See example below.
      "},{"location":"api/basic_json/at/#complexity","title":"Complexity","text":"
      1. Constant.
      2. Logarithmic in the size of the container.
      3. Logarithmic in the size of the container.
      4. Logarithmic in the size of the container.
      "},{"location":"api/basic_json/at/#examples","title":"Examples","text":"Example: (1) access specified array element with bounds checking

      The example below shows how array elements can be read and written using at(). It also demonstrates the different exceptions that can be thrown.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON array\n    json array = {\"first\", \"2nd\", \"third\", \"fourth\"};\n\n    // output element at index 2 (third element)\n    std::cout << array.at(2) << '\\n';\n\n    // change element at index 1 (second element) to \"second\"\n    array.at(1) = \"second\";\n\n    // output changed array\n    std::cout << array << '\\n';\n\n    // exception type_error.304\n    try\n    {\n        // use at() on a non-array type\n        json str = \"I am a string\";\n        str.at(0) = \"Another string\";\n    }\n    catch (const json::type_error& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n\n    // exception out_of_range.401\n    try\n    {\n        // try to write beyond the array limit\n        array.at(5) = \"sixth\";\n    }\n    catch (const json::out_of_range& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n}\n

      Output:

      \"third\"\n[\"first\",\"second\",\"third\",\"fourth\"]\n[json.exception.type_error.304] cannot use at() with string\n[json.exception.out_of_range.401] array index 5 is out of range\n
      Example: (1) access specified array element with bounds checking

      The example below shows how array elements can be read using at(). It also demonstrates the different exceptions that can be thrown.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON array\n    const json array = {\"first\", \"2nd\", \"third\", \"fourth\"};\n\n    // output element at index 2 (third element)\n    std::cout << array.at(2) << '\\n';\n\n    // exception type_error.304\n    try\n    {\n        // use at() on a non-array type\n        const json str = \"I am a string\";\n        std::cout << str.at(0) << '\\n';\n    }\n    catch (const json::type_error& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n\n    // exception out_of_range.401\n    try\n    {\n        // try to read beyond the array limit\n        std::cout << array.at(5) << '\\n';\n    }\n    catch (const json::out_of_range& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n}\n

      Output:

      \"third\"\n[json.exception.type_error.304] cannot use at() with string\n[json.exception.out_of_range.401] array index 5 is out of range\n
      Example: (2) access specified object element with bounds checking

      The example below shows how object elements can be read and written using at(). It also demonstrates the different exceptions that can be thrown.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON object\n    json object =\n    {\n        {\"the good\", \"il buono\"},\n        {\"the bad\", \"il cattivo\"},\n        {\"the ugly\", \"il brutto\"}\n    };\n\n    // output element with key \"the ugly\"\n    std::cout << object.at(\"the ugly\") << '\\n';\n\n    // change element with key \"the bad\"\n    object.at(\"the bad\") = \"il cattivo\";\n\n    // output changed array\n    std::cout << object << '\\n';\n\n    // exception type_error.304\n    try\n    {\n        // use at() on a non-object type\n        json str = \"I am a string\";\n        str.at(\"the good\") = \"Another string\";\n    }\n    catch (const json::type_error& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n\n    // exception out_of_range.401\n    try\n    {\n        // try to write at a nonexisting key\n        object.at(\"the fast\") = \"il rapido\";\n    }\n    catch (const json::out_of_range& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n}\n

      Output:

      \"il brutto\"\n{\"the bad\":\"il cattivo\",\"the good\":\"il buono\",\"the ugly\":\"il brutto\"}\n[json.exception.type_error.304] cannot use at() with string\n[json.exception.out_of_range.403] key 'the fast' not found\n
      Example: (2) access specified object element with bounds checking

      The example below shows how object elements can be read using at(). It also demonstrates the different exceptions that can be thrown.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON object\n    const json object =\n    {\n        {\"the good\", \"il buono\"},\n        {\"the bad\", \"il cattivo\"},\n        {\"the ugly\", \"il brutto\"}\n    };\n\n    // output element with key \"the ugly\"\n    std::cout << object.at(\"the ugly\") << '\\n';\n\n    // exception type_error.304\n    try\n    {\n        // use at() on a non-object type\n        const json str = \"I am a string\";\n        std::cout << str.at(\"the good\") << '\\n';\n    }\n    catch (const json::type_error& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n\n    // exception out_of_range.401\n    try\n    {\n        // try to read from a nonexisting key\n        std::cout << object.at(\"the fast\") << '\\n';\n    }\n    catch (const json::out_of_range)\n    {\n        std::cout << \"out of range\" << '\\n';\n    }\n}\n

      Output:

      \"il brutto\"\n[json.exception.type_error.304] cannot use at() with string\nout of range\n
      Example: (3) access specified object element using string_view with bounds checking

      The example below shows how object elements can be read and written using at(). It also demonstrates the different exceptions that can be thrown.

      #include <iostream>\n#include <string_view>\n#include <nlohmann/json.hpp>\n\nusing namespace std::string_view_literals;\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON object\n    json object =\n    {\n        {\"the good\", \"il buono\"},\n        {\"the bad\", \"il cattivo\"},\n        {\"the ugly\", \"il brutto\"}\n    };\n\n    // output element with key \"the ugly\" using string_view\n    std::cout << object.at(\"the ugly\"sv) << '\\n';\n\n    // change element with key \"the bad\" using string_view\n    object.at(\"the bad\"sv) = \"il cattivo\";\n\n    // output changed array\n    std::cout << object << '\\n';\n\n    // exception type_error.304\n    try\n    {\n        // use at() with string_view on a non-object type\n        json str = \"I am a string\";\n        str.at(\"the good\"sv) = \"Another string\";\n    }\n    catch (const json::type_error& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n\n    // exception out_of_range.401\n    try\n    {\n        // try to write at a nonexisting key using string_view\n        object.at(\"the fast\"sv) = \"il rapido\";\n    }\n    catch (const json::out_of_range& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n}\n

      Output:

      \"il brutto\"\n{\"the bad\":\"il cattivo\",\"the good\":\"il buono\",\"the ugly\":\"il brutto\"}\n[json.exception.type_error.304] cannot use at() with string\n[json.exception.out_of_range.403] key 'the fast' not found\n
      Example: (3) access specified object element using string_view with bounds checking

      The example below shows how object elements can be read using at(). It also demonstrates the different exceptions that can be thrown.

      #include <iostream>\n#include <string_view>\n#include <nlohmann/json.hpp>\n\nusing namespace std::string_view_literals;\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON object\n    const json object =\n    {\n        {\"the good\", \"il buono\"},\n        {\"the bad\", \"il cattivo\"},\n        {\"the ugly\", \"il brutto\"}\n    };\n\n    // output element with key \"the ugly\" using string_view\n    std::cout << object.at(\"the ugly\"sv) << '\\n';\n\n    // exception type_error.304\n    try\n    {\n        // use at() with string_view on a non-object type\n        const json str = \"I am a string\";\n        std::cout << str.at(\"the good\"sv) << '\\n';\n    }\n    catch (const json::type_error& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n\n    // exception out_of_range.401\n    try\n    {\n        // try to read from a nonexisting key using string_view\n        std::cout << object.at(\"the fast\"sv) << '\\n';\n    }\n    catch (const json::out_of_range& e)\n    {\n        std::cout << \"out of range\" << '\\n';\n    }\n}\n

      Output:

      \"il brutto\"\n[json.exception.type_error.304] cannot use at() with string\nout of range\n
      Example: (4) access specified element via JSON Pointer

      The example below shows how object elements can be read and written using at(). It also demonstrates the different exceptions that can be thrown.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON value\n    json j =\n    {\n        {\"number\", 1}, {\"string\", \"foo\"}, {\"array\", {1, 2}}\n    };\n\n    // read-only access\n\n    // output element with JSON pointer \"/number\"\n    std::cout << j.at(\"/number\"_json_pointer) << '\\n';\n    // output element with JSON pointer \"/string\"\n    std::cout << j.at(\"/string\"_json_pointer) << '\\n';\n    // output element with JSON pointer \"/array\"\n    std::cout << j.at(\"/array\"_json_pointer) << '\\n';\n    // output element with JSON pointer \"/array/1\"\n    std::cout << j.at(\"/array/1\"_json_pointer) << '\\n';\n\n    // writing access\n\n    // change the string\n    j.at(\"/string\"_json_pointer) = \"bar\";\n    // output the changed string\n    std::cout << j[\"string\"] << '\\n';\n\n    // change an array element\n    j.at(\"/array/1\"_json_pointer) = 21;\n    // output the changed array\n    std::cout << j[\"array\"] << '\\n';\n\n    // out_of_range.106\n    try\n    {\n        // try to use an array index with leading '0'\n        json::reference ref = j.at(\"/array/01\"_json_pointer);\n    }\n    catch (const json::parse_error& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n\n    // out_of_range.109\n    try\n    {\n        // try to use an array index that is not a number\n        json::reference ref = j.at(\"/array/one\"_json_pointer);\n    }\n    catch (const json::parse_error& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n\n    // out_of_range.401\n    try\n    {\n        // try to use an invalid array index\n        json::reference ref = j.at(\"/array/4\"_json_pointer);\n    }\n    catch (const json::out_of_range& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n\n    // out_of_range.402\n    try\n    {\n        // try to use the array index '-'\n        json::reference ref = j.at(\"/array/-\"_json_pointer);\n    }\n    catch (const json::out_of_range& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n\n    // out_of_range.403\n    try\n    {\n        // try to use a JSON pointer to a nonexistent object key\n        json::const_reference ref = j.at(\"/foo\"_json_pointer);\n    }\n    catch (const json::out_of_range& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n\n    // out_of_range.404\n    try\n    {\n        // try to use a JSON pointer that cannot be resolved\n        json::reference ref = j.at(\"/number/foo\"_json_pointer);\n    }\n    catch (const json::out_of_range& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n}\n

      Output:

      1\n\"foo\"\n[1,2]\n2\n\"bar\"\n[1,21]\n[json.exception.parse_error.106] parse error: array index '01' must not begin with '0'\n[json.exception.parse_error.109] parse error: array index 'one' is not a number\n[json.exception.out_of_range.401] array index 4 is out of range\n[json.exception.out_of_range.402] array index '-' (2) is out of range\n[json.exception.out_of_range.403] key 'foo' not found\n[json.exception.out_of_range.404] unresolved reference token 'foo'\n
      Example: (4) access specified element via JSON Pointer

      The example below shows how object elements can be read using at(). It also demonstrates the different exceptions that can be thrown.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON value\n    const json j =\n    {\n        {\"number\", 1}, {\"string\", \"foo\"}, {\"array\", {1, 2}}\n    };\n\n    // read-only access\n\n    // output element with JSON pointer \"/number\"\n    std::cout << j.at(\"/number\"_json_pointer) << '\\n';\n    // output element with JSON pointer \"/string\"\n    std::cout << j.at(\"/string\"_json_pointer) << '\\n';\n    // output element with JSON pointer \"/array\"\n    std::cout << j.at(\"/array\"_json_pointer) << '\\n';\n    // output element with JSON pointer \"/array/1\"\n    std::cout << j.at(\"/array/1\"_json_pointer) << '\\n';\n\n    // out_of_range.109\n    try\n    {\n        // try to use an array index that is not a number\n        json::const_reference ref = j.at(\"/array/one\"_json_pointer);\n    }\n    catch (const json::parse_error& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n\n    // out_of_range.401\n    try\n    {\n        // try to use an invalid array index\n        json::const_reference ref = j.at(\"/array/4\"_json_pointer);\n    }\n    catch (const json::out_of_range& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n\n    // out_of_range.402\n    try\n    {\n        // try to use the array index '-'\n        json::const_reference ref = j.at(\"/array/-\"_json_pointer);\n    }\n    catch (const json::out_of_range& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n\n    // out_of_range.403\n    try\n    {\n        // try to use a JSON pointer to a nonexistent object key\n        json::const_reference ref = j.at(\"/foo\"_json_pointer);\n    }\n    catch (const json::out_of_range& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n\n    // out_of_range.404\n    try\n    {\n        // try to use a JSON pointer that cannot be resolved\n        json::const_reference ref = j.at(\"/number/foo\"_json_pointer);\n    }\n    catch (const json::out_of_range& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n}\n

      Output:

      1\n\"foo\"\n[1,2]\n2\n[json.exception.parse_error.109] parse error: array index 'one' is not a number\n[json.exception.out_of_range.401] array index 4 is out of range\n[json.exception.out_of_range.402] array index '-' (2) is out of range\n[json.exception.out_of_range.403] key 'foo' not found\n[json.exception.out_of_range.404] unresolved reference token 'foo'\n
      "},{"location":"api/basic_json/at/#see-also","title":"See also","text":"
      • documentation on checked access
      • see operator[] for unchecked access by reference
      • see value for access with default value
      "},{"location":"api/basic_json/at/#version-history","title":"Version history","text":"
      1. Added in version 1.0.0.
      2. Added in version 1.0.0.
      3. Added in version 3.11.0.
      4. Added in version 2.0.0.
      "},{"location":"api/basic_json/back/","title":"nlohmann::basic_json::back","text":"
      reference back();\n\nconst_reference back() const;\n

      Returns a reference to the last element in the container. For a JSON container c, the expression c.back() is equivalent to

      auto tmp = c.end();\n--tmp;\nreturn *tmp;\n
      "},{"location":"api/basic_json/back/#return-value","title":"Return value","text":"

      In case of a structured type (array or object), a reference to the last element is returned. In case of number, string, boolean, or binary values, a reference to the value is returned.

      "},{"location":"api/basic_json/back/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

      "},{"location":"api/basic_json/back/#exceptions","title":"Exceptions","text":"

      If the JSON value is null, exception invalid_iterator.214 is thrown.

      "},{"location":"api/basic_json/back/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/back/#notes","title":"Notes","text":"

      Precondition

      The array or object must not be empty. Calling back on an empty array or object yields undefined behavior.

      "},{"location":"api/basic_json/back/#examples","title":"Examples","text":"Example

      The following code shows an example for back().

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_object_empty(json::value_t::object);\n    json j_array = {1, 2, 4, 8, 16};\n    json j_array_empty(json::value_t::array);\n    json j_string = \"Hello, world\";\n\n    // call back()\n    std::cout << j_boolean.back() << '\\n';\n    std::cout << j_number_integer.back() << '\\n';\n    std::cout << j_number_float.back() << '\\n';\n    std::cout << j_object.back() << '\\n';\n    //std::cout << j_object_empty.back() << '\\n';  // undefined behavior\n    std::cout << j_array.back() << '\\n';\n    //std::cout << j_array_empty.back() << '\\n';   // undefined behavior\n    std::cout << j_string.back() << '\\n';\n\n    // back() called on a null value\n    try\n    {\n        json j_null;\n        j_null.back();\n    }\n    catch (const json::invalid_iterator& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n}\n

      Output:

      true\n17\n23.42\n2\n16\n\"Hello, world\"\n[json.exception.invalid_iterator.214] cannot get value\n
      "},{"location":"api/basic_json/back/#see-also","title":"See also","text":"
      • front to access the first element
      "},{"location":"api/basic_json/back/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      • Adjusted code to return reference to binary values in version 3.8.0.
      "},{"location":"api/basic_json/basic_json/","title":"nlohmann::basic_json::basic_json","text":"
      // (1)\nbasic_json(const value_t v);\n\n// (2)\nbasic_json(std::nullptr_t = nullptr) noexcept;\n\n// (3)\ntemplate<typename CompatibleType>\nbasic_json(CompatibleType&& val) noexcept(noexcept(\n           JSONSerializer<U>::to_json(std::declval<basic_json_t&>(),\n                                      std::forward<CompatibleType>(val))));\n\n// (4)\ntemplate<typename BasicJsonType>\nbasic_json(const BasicJsonType& val);\n\n// (5)\nbasic_json(initializer_list_t init,\n           bool type_deduction = true,\n           value_t manual_type = value_t::array);\n\n// (6)\nbasic_json(size_type cnt, const basic_json& val);\n\n// (7)\nbasic_json(iterator first, iterator last);\nbasic_json(const_iterator first, const_iterator last);\n\n// (8)\nbasic_json(const basic_json& other);\n\n// (9)\nbasic_json(basic_json&& other) noexcept;\n
      1. Create an empty JSON value with a given type. The value will be default initialized with an empty value which depends on the type:

        Value type initial value null null boolean false string \"\" number 0 object {} array [] binary empty array

        The postcondition of this constructor can be restored by calling clear().

      2. Create a null JSON value. It either takes a null pointer as parameter (explicitly creating null) or no parameter (implicitly creating null). The passed null pointer itself is not read -- it is only used to choose the right constructor.

      3. This is a \"catch all\" constructor for all compatible JSON types; that is, types for which a to_json() method exists. The constructor forwards the parameter val to that method (to json_serializer<U>::to_json method with U = uncvref_t<CompatibleType>, to be exact).

        Template type CompatibleType includes, but is not limited to, the following types:

        • arrays: array_t and all kinds of compatible containers such as std::vector, std::deque, std::list, std::forward_list, std::array, std::valarray, std::set, std::unordered_set, std::multiset, and std::unordered_multiset with a value_type from which a basic_json value can be constructed.
        • objects: object_t and all kinds of compatible associative containers such as std::map, std::unordered_map, std::multimap, and std::unordered_multimap with a key_type compatible to string_t and a value_type from which a basic_json value can be constructed.
        • strings: string_t, string literals, and all compatible string containers can be used.
        • numbers: number_integer_t, number_unsigned_t, number_float_t, and all convertible number types such as int, size_t, int64_t, float or double can be used.
        • boolean: boolean_t / bool can be used.
        • binary: binary_t / std::vector<uint8_t> may be used; unfortunately because string literals cannot be distinguished from binary character arrays by the C++ type system, all types compatible with const char* will be directed to the string constructor instead. This is both for backwards compatibility, and due to the fact that a binary type is not a standard JSON type.

        See the examples below.

      4. This is a constructor for existing basic_json types. It does not hijack copy/move constructors, since the parameter has different template arguments than the current ones.

        The constructor tries to convert the internal m_value of the parameter.

      5. Creates a JSON value of type array or object from the passed initializer list init. In case type_deduction is true (default), the type of the JSON value to be created is deducted from the initializer list init according to the following rules:

        1. If the list is empty, an empty JSON object value {} is created.
        2. If the list consists of pairs whose first element is a string, a JSON object value is created where the first elements of the pairs are treated as keys and the second elements are as values.
        3. In all other cases, an array is created.

        The rules aim to create the best fit between a C++ initializer list and JSON values. The rationale is as follows:

        1. The empty initializer list is written as {} which is exactly an empty JSON object.
        2. C++ has no way of describing mapped types other than to list a list of pairs. As JSON requires that keys must be of type string, rule 2 is the weakest constraint one can pose on initializer lists to interpret them as an object.
        3. In all other cases, the initializer list could not be interpreted as JSON object type, so interpreting it as JSON array type is safe.

        With the rules described above, the following JSON values cannot be expressed by an initializer list:

        • the empty array ([]): use array(initializer_list_t) with an empty initializer list in this case
        • arrays whose elements satisfy rule 2: use array(initializer_list_t) with the same initializer list in this case

        Function array() and object() force array and object creation from initializer lists, respectively.

      6. Constructs a JSON array value by creating cnt copies of a passed value. In case cnt is 0, an empty array is created.

      7. Constructs the JSON value with the contents of the range [first, last). The semantics depends on the different types a JSON value can have:

        • In case of a null type, invalid_iterator.206 is thrown.
        • In case of other primitive types (number, boolean, or string), first must be begin() and last must be end(). In this case, the value is copied. Otherwise, invalid_iterator.204 is thrown.
        • In case of structured types (array, object), the constructor behaves as similar versions for std::vector or std::map; that is, a JSON array or object is constructed from the values in the range.
      8. Creates a copy of a given JSON value.

      9. Move constructor. Constructs a JSON value with the contents of the given value other using move semantics. It \"steals\" the resources from other and leaves it as JSON null value.

      "},{"location":"api/basic_json/basic_json/#template-parameters","title":"Template parameters","text":"CompatibleType

      a type such that:

      • CompatibleType is not derived from std::istream,
      • CompatibleType is not basic_json (to avoid hijacking copy/move constructors),
      • CompatibleType is not a different basic_json type (i.e. with different template arguments)
      • CompatibleType is not a basic_json nested type (e.g., json_pointer, iterator, etc.)
      • json_serializer<U> (with U = uncvref_t<CompatibleType>) has a to_json(basic_json_t&, CompatibleType&&) method
      BasicJsonType:

      a type such that:

      • BasicJsonType is a basic_json type.
      • BasicJsonType has different template arguments than basic_json_t.
      U: uncvref_t<CompatibleType>"},{"location":"api/basic_json/basic_json/#parameters","title":"Parameters","text":"v (in) the type of the value to create val (in) the value to be forwarded to the respective constructor init (in) initializer list with JSON values type_deduction (in) internal parameter; when set to true, the type of the JSON value is deducted from the initializer list init; when set to false, the type provided via manual_type is forced. This mode is used by the functions array(initializer_list_t) and object(initializer_list_t). manual_type (in) internal parameter; when type_deduction is set to false, the created JSON value will use the provided type (only value_t::array and value_t::object are valid); when type_deduction is set to true, this parameter has no effect cnt (in) the number of JSON copies of val to create first (in) begin of the range to copy from (included) last (in) end of the range to copy from (excluded) other (in) the JSON value to copy/move"},{"location":"api/basic_json/basic_json/#exception-safety","title":"Exception safety","text":"
      1. Strong guarantee: if an exception is thrown, there are no changes to any JSON value.
      2. No-throw guarantee: this constructor never throws exceptions.
      3. Depends on the called constructor. For types directly supported by the library (i.e., all types for which no to_json() function was provided), strong guarantee holds: if an exception is thrown, there are no changes to any JSON value.
      4. Depends on the called constructor. For types directly supported by the library (i.e., all types for which no to_json() function was provided), strong guarantee holds: if an exception is thrown, there are no changes to any JSON value.
      5. Strong guarantee: if an exception is thrown, there are no changes to any JSON value.
      6. Strong guarantee: if an exception is thrown, there are no changes to any JSON value.
      7. Strong guarantee: if an exception is thrown, there are no changes to any JSON value.
      8. Strong guarantee: if an exception is thrown, there are no changes to any JSON value.
      9. No-throw guarantee: this constructor never throws exceptions.
      "},{"location":"api/basic_json/basic_json/#exceptions","title":"Exceptions","text":"
      1. (none)
      2. The function does not throw exceptions.
      3. (none)
      4. (none)
      5. The function can throw the following exceptions:
        • Throws type_error.301 if type_deduction is false, manual_type is value_t::object, but init contains an element which is not a pair whose first element is a string. In this case, the constructor could not create an object. If type_deduction would have been true, an array would have been created. See object(initializer_list_t) for an example.
      6. (none)
      7. The function can throw the following exceptions:
        • Throws invalid_iterator.201 if iterators first and last are not compatible (i.e., do not belong to the same JSON value). In this case, the range [first, last) is undefined.
        • Throws invalid_iterator.204 if iterators first and last belong to a primitive type (number, boolean, or string), but first does not point to the first element anymore. In this case, the range [first, last) is undefined. See example code below.
        • Throws invalid_iterator.206 if iterators first and last belong to a null value. In this case, the range [first, last) is undefined.
      8. (none)
      9. The function does not throw exceptions.
      "},{"location":"api/basic_json/basic_json/#complexity","title":"Complexity","text":"
      1. Constant.
      2. Constant.
      3. Usually linear in the size of the passed val, also depending on the implementation of the called to_json() method.
      4. Usually linear in the size of the passed val, also depending on the implementation of the called to_json() method.
      5. Linear in the size of the initializer list init.
      6. Linear in cnt.
      7. Linear in distance between first and last.
      8. Linear in the size of other.
      9. Constant.
      "},{"location":"api/basic_json/basic_json/#notes","title":"Notes","text":"
      • Overload 5:

        Empty initializer list

        When used without parentheses around an empty initializer list, basic_json() is called instead of this function, yielding the JSON null value.

      • Overload 7:

        Preconditions

        • Iterators first and last must be initialized. **This precondition is enforced with a runtime assertion.
        • Range [first, last) is valid. Usually, this precondition cannot be checked efficiently. Only certain edge cases are detected; see the description of the exceptions above. A violation of this precondition yields undefined behavior.

        Runtime assertion

        A precondition is enforced with a runtime assertion.

      • Overload 8:

        Postcondition

        *this == other

      • Overload 9:

        Postconditions

        • `*this has the same value as other before the call.
        • other is a JSON null value
      "},{"location":"api/basic_json/basic_json/#examples","title":"Examples","text":"Example: (1) create an empty value with a given type

      The following code shows the constructor for different value_t values.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create the different JSON values with default values\n    json j_null(json::value_t::null);\n    json j_boolean(json::value_t::boolean);\n    json j_number_integer(json::value_t::number_integer);\n    json j_number_float(json::value_t::number_float);\n    json j_object(json::value_t::object);\n    json j_array(json::value_t::array);\n    json j_string(json::value_t::string);\n\n    // serialize the JSON values\n    std::cout << j_null << '\\n';\n    std::cout << j_boolean << '\\n';\n    std::cout << j_number_integer << '\\n';\n    std::cout << j_number_float << '\\n';\n    std::cout << j_object << '\\n';\n    std::cout << j_array << '\\n';\n    std::cout << j_string << '\\n';\n}\n

      Output:

      null\nfalse\n0\n0.0\n{}\n[]\n\"\"\n
      Example: (2) create a null object

      The following code shows the constructor with and without a null pointer parameter.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // implicitly create a JSON null value\n    json j1;\n\n    // explicitly create a JSON null value\n    json j2(nullptr);\n\n    // serialize the JSON null value\n    std::cout << j1 << '\\n' << j2 << '\\n';\n}\n

      Output:

      null\nnull\n
      Example: (3) create a JSON value from compatible types

      The following code shows the constructor with several compatible types.

      #include <iostream>\n#include <deque>\n#include <list>\n#include <forward_list>\n#include <set>\n#include <unordered_map>\n#include <unordered_set>\n#include <valarray>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // ============\n    // object types\n    // ============\n\n    // create an object from an object_t value\n    json::object_t object_value = { {\"one\", 1}, {\"two\", 2} };\n    json j_object_t(object_value);\n\n    // create an object from std::map\n    std::map<std::string, int> c_map\n    {\n        {\"one\", 1}, {\"two\", 2}, {\"three\", 3}\n    };\n    json j_map(c_map);\n\n    // create an object from std::unordered_map\n    std::unordered_map<const char*, double> c_umap\n    {\n        {\"one\", 1.2}, {\"two\", 2.3}, {\"three\", 3.4}\n    };\n    json j_umap(c_umap);\n\n    // create an object from std::multimap\n    std::multimap<std::string, bool> c_mmap\n    {\n        {\"one\", true}, {\"two\", true}, {\"three\", false}, {\"three\", true}\n    };\n    json j_mmap(c_mmap); // only one entry for key \"three\" is used\n\n    // create an object from std::unordered_multimap\n    std::unordered_multimap<std::string, bool> c_ummap\n    {\n        {\"one\", true}, {\"two\", true}, {\"three\", false}, {\"three\", true}\n    };\n    json j_ummap(c_ummap); // only one entry for key \"three\" is used\n\n    // serialize the JSON objects\n    std::cout << j_object_t << '\\n';\n    std::cout << j_map << '\\n';\n    std::cout << j_umap << '\\n';\n    std::cout << j_mmap << '\\n';\n    std::cout << j_ummap << \"\\n\\n\";\n\n    // ===========\n    // array types\n    // ===========\n\n    // create an array from an array_t value\n    json::array_t array_value = {\"one\", \"two\", 3, 4.5, false};\n    json j_array_t(array_value);\n\n    // create an array from std::vector\n    std::vector<int> c_vector {1, 2, 3, 4};\n    json j_vec(c_vector);\n\n    // create an array from std::valarray\n    std::valarray<short> c_valarray {10, 9, 8, 7};\n    json j_valarray(c_valarray);\n\n    // create an array from std::deque\n    std::deque<double> c_deque {1.2, 2.3, 3.4, 5.6};\n    json j_deque(c_deque);\n\n    // create an array from std::list\n    std::list<bool> c_list {true, true, false, true};\n    json j_list(c_list);\n\n    // create an array from std::forward_list\n    std::forward_list<std::int64_t> c_flist {12345678909876, 23456789098765, 34567890987654, 45678909876543};\n    json j_flist(c_flist);\n\n    // create an array from std::array\n    std::array<unsigned long, 4> c_array {{1, 2, 3, 4}};\n    json j_array(c_array);\n\n    // create an array from std::set\n    std::set<std::string> c_set {\"one\", \"two\", \"three\", \"four\", \"one\"};\n    json j_set(c_set); // only one entry for \"one\" is used\n\n    // create an array from std::unordered_set\n    std::unordered_set<std::string> c_uset {\"one\", \"two\", \"three\", \"four\", \"one\"};\n    json j_uset(c_uset); // only one entry for \"one\" is used\n\n    // create an array from std::multiset\n    std::multiset<std::string> c_mset {\"one\", \"two\", \"one\", \"four\"};\n    json j_mset(c_mset); // both entries for \"one\" are used\n\n    // create an array from std::unordered_multiset\n    std::unordered_multiset<std::string> c_umset {\"one\", \"two\", \"one\", \"four\"};\n    json j_umset(c_umset); // both entries for \"one\" are used\n\n    // serialize the JSON arrays\n    std::cout << j_array_t << '\\n';\n    std::cout << j_vec << '\\n';\n    std::cout << j_valarray << '\\n';\n    std::cout << j_deque << '\\n';\n    std::cout << j_list << '\\n';\n    std::cout << j_flist << '\\n';\n    std::cout << j_array << '\\n';\n    std::cout << j_set << '\\n';\n    std::cout << j_uset << '\\n';\n    std::cout << j_mset << '\\n';\n    std::cout << j_umset << \"\\n\\n\";\n\n    // ============\n    // string types\n    // ============\n\n    // create string from a string_t value\n    json::string_t string_value = \"The quick brown fox jumps over the lazy dog.\";\n    json j_string_t(string_value);\n\n    // create a JSON string directly from a string literal\n    json j_string_literal(\"The quick brown fox jumps over the lazy dog.\");\n\n    // create string from std::string\n    std::string s_stdstring = \"The quick brown fox jumps over the lazy dog.\";\n    json j_stdstring(s_stdstring);\n\n    // serialize the JSON strings\n    std::cout << j_string_t << '\\n';\n    std::cout << j_string_literal << '\\n';\n    std::cout << j_stdstring << \"\\n\\n\";\n\n    // ============\n    // number types\n    // ============\n\n    // create a JSON number from number_integer_t\n    json::number_integer_t value_integer_t = -42;\n    json j_integer_t(value_integer_t);\n\n    // create a JSON number from number_unsigned_t\n    json::number_integer_t value_unsigned_t = 17;\n    json j_unsigned_t(value_unsigned_t);\n\n    // create a JSON number from an anonymous enum\n    enum { enum_value = 17 };\n    json j_enum(enum_value);\n\n    // create values of different integer types\n    short n_short = 42;\n    int n_int = -23;\n    long n_long = 1024;\n    int_least32_t n_int_least32_t = -17;\n    uint8_t n_uint8_t = 8;\n\n    // create (integer) JSON numbers\n    json j_short(n_short);\n    json j_int(n_int);\n    json j_long(n_long);\n    json j_int_least32_t(n_int_least32_t);\n    json j_uint8_t(n_uint8_t);\n\n    // create values of different floating-point types\n    json::number_float_t v_ok = 3.141592653589793;\n    json::number_float_t v_nan = NAN;\n    json::number_float_t v_infinity = INFINITY;\n\n    // create values of different floating-point types\n    float n_float = 42.23;\n    float n_float_nan = 1.0f / 0.0f;\n    double n_double = 23.42;\n\n    // create (floating point) JSON numbers\n    json j_ok(v_ok);\n    json j_nan(v_nan);\n    json j_infinity(v_infinity);\n    json j_float(n_float);\n    json j_float_nan(n_float_nan);\n    json j_double(n_double);\n\n    // serialize the JSON numbers\n    std::cout << j_integer_t << '\\n';\n    std::cout << j_unsigned_t << '\\n';\n    std::cout << j_enum << '\\n';\n    std::cout << j_short << '\\n';\n    std::cout << j_int << '\\n';\n    std::cout << j_long << '\\n';\n    std::cout << j_int_least32_t << '\\n';\n    std::cout << j_uint8_t << '\\n';\n    std::cout << j_ok << '\\n';\n    std::cout << j_nan << '\\n';\n    std::cout << j_infinity << '\\n';\n    std::cout << j_float << '\\n';\n    std::cout << j_float_nan << '\\n';\n    std::cout << j_double << \"\\n\\n\";\n\n    // =============\n    // boolean types\n    // =============\n\n    // create boolean values\n    json j_truth = true;\n    json j_falsity = false;\n\n    // serialize the JSON booleans\n    std::cout << j_truth << '\\n';\n    std::cout << j_falsity << '\\n';\n}\n

      Output:

      {\"one\":1,\"two\":2}\n{\"one\":1,\"three\":3,\"two\":2}\n{\"one\":1.2,\"three\":3.4,\"two\":2.3}\n{\"one\":true,\"three\":false,\"two\":true}\n{\"one\":true,\"three\":false,\"two\":true}\n\n[\"one\",\"two\",3,4.5,false]\n[1,2,3,4]\n[10,9,8,7]\n[1.2,2.3,3.4,5.6]\n[true,true,false,true]\n[12345678909876,23456789098765,34567890987654,45678909876543]\n[1,2,3,4]\n[\"four\",\"one\",\"three\",\"two\"]\n[\"four\",\"three\",\"two\",\"one\"]\n[\"four\",\"one\",\"one\",\"two\"]\n[\"four\",\"two\",\"one\",\"one\"]\n\n\"The quick brown fox jumps over the lazy dog.\"\n\"The quick brown fox jumps over the lazy dog.\"\n\"The quick brown fox jumps over the lazy dog.\"\n\n-42\n17\n17\n42\n-23\n1024\n-17\n8\n3.141592653589793\nnull\nnull\n42.22999954223633\nnull\n23.42\n\ntrue\nfalse\n

      Note the output is platform-dependent.

      Example: (5) create a container (array or object) from an initializer list

      The example below shows how JSON values are created from initializer lists.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_empty_init_list = json({});\n    json j_object = { {\"one\", 1}, {\"two\", 2} };\n    json j_array = {1, 2, 3, 4};\n    json j_nested_object = { {\"one\", {1}}, {\"two\", {1, 2}} };\n    json j_nested_array = { {{1}, \"one\"}, {{1, 2}, \"two\"} };\n\n    // serialize the JSON value\n    std::cout << j_empty_init_list << '\\n';\n    std::cout << j_object << '\\n';\n    std::cout << j_array << '\\n';\n    std::cout << j_nested_object << '\\n';\n    std::cout << j_nested_array << '\\n';\n}\n

      Output:

      {}\n{\"one\":1,\"two\":2}\n[1,2,3,4]\n{\"one\":[1],\"two\":[1,2]}\n[[[1],\"one\"],[[1,2],\"two\"]]\n
      Example: (6) construct an array with count copies of given value

      The following code shows examples for creating arrays with several copies of a given value.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create an array by creating copies of a JSON value\n    json value = \"Hello\";\n    json array_0 = json(0, value);\n    json array_1 = json(1, value);\n    json array_5 = json(5, value);\n\n    // serialize the JSON arrays\n    std::cout << array_0 << '\\n';\n    std::cout << array_1 << '\\n';\n    std::cout << array_5 << '\\n';\n}\n

      Output:

      []\n[\"Hello\"]\n[\"Hello\",\"Hello\",\"Hello\",\"Hello\",\"Hello\"]\n
      Example: (7) construct a JSON container given an iterator range

      The example below shows several ways to create JSON values by specifying a subrange with iterators.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_array = {\"alpha\", \"bravo\", \"charly\", \"delta\", \"easy\"};\n    json j_number = 42;\n    json j_object = {{\"one\", \"eins\"}, {\"two\", \"zwei\"}};\n\n    // create copies using iterators\n    json j_array_range(j_array.begin() + 1, j_array.end() - 2);\n    json j_number_range(j_number.begin(), j_number.end());\n    json j_object_range(j_object.begin(), j_object.find(\"two\"));\n\n    // serialize the values\n    std::cout << j_array_range << '\\n';\n    std::cout << j_number_range << '\\n';\n    std::cout << j_object_range << '\\n';\n\n    // example for an exception\n    try\n    {\n        json j_invalid(j_number.begin() + 1, j_number.end());\n    }\n    catch (const json::invalid_iterator& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n}\n

      Output:

      [\"bravo\",\"charly\"]\n42\n{\"one\":\"eins\"}\n[json.exception.invalid_iterator.204] iterators out of range\n
      Example: (8) copy constructor

      The following code shows an example for the copy constructor.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON array\n    json j1 = {\"one\", \"two\", 3, 4.5, false};\n\n    // create a copy\n    json j2(j1);\n\n    // serialize the JSON array\n    std::cout << j1 << \" = \" << j2 << '\\n';\n    std::cout << std::boolalpha << (j1 == j2) << '\\n';\n}\n

      Output:

      [\"one\",\"two\",3,4.5,false] = [\"one\",\"two\",3,4.5,false]\ntrue\n
      Example: (9) move constructor

      The code below shows the move constructor explicitly called via std::move.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON value\n    json a = 23;\n\n    // move contents of a to b\n    json b(std::move(a));\n\n    // serialize the JSON arrays\n    std::cout << a << '\\n';\n    std::cout << b << '\\n';\n}\n

      Output:

      null\n23\n
      "},{"location":"api/basic_json/basic_json/#version-history","title":"Version history","text":"
      1. Since version 1.0.0.
      2. Since version 1.0.0.
      3. Since version 2.1.0.
      4. Since version 3.2.0.
      5. Since version 1.0.0.
      6. Since version 1.0.0.
      7. Since version 1.0.0.
      8. Since version 1.0.0.
      9. Since version 1.0.0.
      "},{"location":"api/basic_json/begin/","title":"nlohmann::basic_json::begin","text":"
      iterator begin() noexcept;\nconst_iterator begin() const noexcept;\n

      Returns an iterator to the first element.

      "},{"location":"api/basic_json/begin/#return-value","title":"Return value","text":"

      iterator to the first element

      "},{"location":"api/basic_json/begin/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/begin/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/begin/#examples","title":"Examples","text":"Example

      The following code shows an example for begin().

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create an array value\n    json array = {1, 2, 3, 4, 5};\n\n    // get an iterator to the first element\n    json::iterator it = array.begin();\n\n    // serialize the element that the iterator points to\n    std::cout << *it << '\\n';\n}\n

      Output:

      1\n
      "},{"location":"api/basic_json/begin/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/binary/","title":"nlohmann::basic_json::binary","text":"
      // (1)\nstatic basic_json binary(const typename binary_t::container_type& init);\nstatic basic_json binary(typename binary_t::container_type&& init);\n\n// (2)\nstatic basic_json binary(const typename binary_t::container_type& init,\n                         std::uint8_t subtype);\nstatic basic_json binary(typename binary_t::container_type&& init,\n                         std::uint8_t subtype);\n
      1. Creates a JSON binary array value from a given binary container.
      2. Creates a JSON binary array value from a given binary container with subtype.

      Binary values are part of various binary formats, such as CBOR, MessagePack, and BSON. This constructor is used to create a value for serialization to those formats.

      "},{"location":"api/basic_json/binary/#parameters","title":"Parameters","text":"init (in) container containing bytes to use as binary type subtype (in) subtype to use in CBOR, MessagePack, and BSON"},{"location":"api/basic_json/binary/#return-value","title":"Return value","text":"

      JSON binary array value

      "},{"location":"api/basic_json/binary/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

      "},{"location":"api/basic_json/binary/#complexity","title":"Complexity","text":"

      Linear in the size of init; constant for typename binary_t::container_type&& init versions.

      "},{"location":"api/basic_json/binary/#notes","title":"Notes","text":"

      Note, this function exists because of the difficulty in correctly specifying the correct template overload in the standard value ctor, as both JSON arrays and JSON binary arrays are backed with some form of a std::vector. Because JSON binary arrays are a non-standard extension it was decided that it would be best to prevent automatic initialization of a binary array type, for backwards compatibility and so it does not happen on accident.

      "},{"location":"api/basic_json/binary/#examples","title":"Examples","text":"Example

      The following code shows how to create a binary value.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a binary vector\n    std::vector<std::uint8_t> vec = {0xCA, 0xFE, 0xBA, 0xBE};\n\n    // create a binary JSON value with subtype 42\n    json j = json::binary(vec, 42);\n\n    // output type and subtype\n    std::cout << \"type: \" << j.type_name() << \", subtype: \" << j.get_binary().subtype() << std::endl;\n}\n

      Output:

      type: binary, subtype: 42\n
      "},{"location":"api/basic_json/binary/#version-history","title":"Version history","text":"
      • Added in version 3.8.0.
      "},{"location":"api/basic_json/binary_t/","title":"nlohmann::basic_json::binary_t","text":"
      using binary_t = byte_container_with_subtype<BinaryType>;\n

      This type is a type designed to carry binary data that appears in various serialized formats, such as CBOR's Major Type 2, MessagePack's bin, and BSON's generic binary subtype. This type is NOT a part of standard JSON and exists solely for compatibility with these binary types. As such, it is simply defined as an ordered sequence of zero or more byte values.

      Additionally, as an implementation detail, the subtype of the binary data is carried around as a std::uint64_t, which is compatible with both of the binary data formats that use binary subtyping, (though the specific numbering is incompatible with each other, and it is up to the user to translate between them). The subtype is added to BinaryType via the helper type byte_container_with_subtype.

      CBOR's RFC 7049 describes this type as:

      Major type 2: a byte string. The string's length in bytes is represented following the rules for positive integers (major type 0).

      MessagePack's documentation on the bin type family describes this type as:

      Bin format family stores a byte array in 2, 3, or 5 bytes of extra bytes in addition to the size of the byte array.

      BSON's specifications describe several binary types; however, this type is intended to represent the generic binary type which has the description:

      Generic binary subtype - This is the most commonly used binary subtype and should be the 'default' for drivers and tools.

      None of these impose any limitations on the internal representation other than the basic unit of storage be some type of array whose parts are decomposable into bytes.

      The default representation of this binary format is a std::vector<std::uint8_t>, which is a very common way to represent a byte array in modern C++.

      "},{"location":"api/basic_json/binary_t/#template-parameters","title":"Template parameters","text":"BinaryType container type to store arrays"},{"location":"api/basic_json/binary_t/#notes","title":"Notes","text":""},{"location":"api/basic_json/binary_t/#default-type","title":"Default type","text":"

      The default values for BinaryType is std::vector<std::uint8_t>.

      "},{"location":"api/basic_json/binary_t/#storage","title":"Storage","text":"

      Binary Arrays are stored as pointers in a basic_json type. That is, for any access to array values, a pointer of the type binary_t* must be dereferenced.

      "},{"location":"api/basic_json/binary_t/#notes-on-subtypes","title":"Notes on subtypes","text":"
      • CBOR

        • Binary values are represented as byte strings. Subtypes are written as tags.
      • MessagePack

        • If a subtype is given and the binary array contains exactly 1, 2, 4, 8, or 16 elements, the fixext family (fixext1, fixext2, fixext4, fixext8) is used. For other sizes, the ext family (ext8, ext16, ext32) is used. The subtype is then added as signed 8-bit integer.
        • If no subtype is given, the bin family (bin8, bin16, bin32) is used.
      • BSON

        • If a subtype is given, it is used and added as unsigned 8-bit integer.
        • If no subtype is given, the generic binary subtype 0x00 is used.
      "},{"location":"api/basic_json/binary_t/#examples","title":"Examples","text":"Example

      The following code shows that binary_t is by default, a typedef to nlohmann::byte_container_with_subtype<std::vector<std::uint8_t>>.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout << std::boolalpha << std::is_same<nlohmann::byte_container_with_subtype<std::vector<std::uint8_t>>, json::binary_t>::value << std::endl;\n}\n

      Output:

      true\n
      "},{"location":"api/basic_json/binary_t/#see-also","title":"See also","text":"
      • byte_container_with_subtype
      "},{"location":"api/basic_json/binary_t/#version-history","title":"Version history","text":"
      • Added in version 3.8.0. Changed type of subtype to std::uint64_t in version 3.10.0.
      "},{"location":"api/basic_json/boolean_t/","title":"nlohmann::basic_json::boolean_t","text":"
      using boolean_t = BooleanType;\n

      The type used to store JSON booleans.

      RFC 8259 implicitly describes a boolean as a type which differentiates the two literals true and false.

      To store objects in C++, a type is defined by the template parameter BooleanType which chooses the type to use.

      "},{"location":"api/basic_json/boolean_t/#notes","title":"Notes","text":""},{"location":"api/basic_json/boolean_t/#default-type","title":"Default type","text":"

      With the default values for BooleanType (bool), the default value for boolean_t is bool.

      "},{"location":"api/basic_json/boolean_t/#storage","title":"Storage","text":"

      Boolean values are stored directly inside a basic_json type.

      "},{"location":"api/basic_json/boolean_t/#examples","title":"Examples","text":"Example

      The following code shows that boolean_t is by default, a typedef to bool.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout << std::boolalpha << std::is_same<bool, json::boolean_t>::value << std::endl;\n}\n

      Output:

      true\n
      "},{"location":"api/basic_json/boolean_t/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/cbegin/","title":"nlohmann::basic_json::cbegin","text":"
      const_iterator cbegin() const noexcept;\n

      Returns an iterator to the first element.

      "},{"location":"api/basic_json/cbegin/#return-value","title":"Return value","text":"

      iterator to the first element

      "},{"location":"api/basic_json/cbegin/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/cbegin/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/cbegin/#examples","title":"Examples","text":"Example

      The following code shows an example for cbegin().

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create an array value\n    const json array = {1, 2, 3, 4, 5};\n\n    // get an iterator to the first element\n    json::const_iterator it = array.cbegin();\n\n    // serialize the element that the iterator points to\n    std::cout << *it << '\\n';\n}\n

      Output:

      1\n
      "},{"location":"api/basic_json/cbegin/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/cbor_tag_handler_t/","title":"nlohmann::basic_json::cbor_tag_handler_t","text":"
      enum class cbor_tag_handler_t\n{\n    error,\n    ignore,\n    store\n};\n

      This enumeration is used in the from_cbor function to choose how to treat tags:

      error throw a parse_error exception in case of a tag ignore ignore tags store store tagged values as binary container with subtype (for bytes 0xd8..0xdb)"},{"location":"api/basic_json/cbor_tag_handler_t/#examples","title":"Examples","text":"Example

      The example below shows how the different values of the cbor_tag_handler_t influence the behavior of from_cbor when reading a tagged byte string.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // tagged byte string\n    std::vector<std::uint8_t> vec = {{0xd8, 0x42, 0x44, 0xcA, 0xfe, 0xba, 0xbe}};\n\n    // cbor_tag_handler_t::error throws\n    try\n    {\n        auto b_throw_on_tag = json::from_cbor(vec, true, true, json::cbor_tag_handler_t::error);\n    }\n    catch (const json::parse_error& e)\n    {\n        std::cout << e.what() << std::endl;\n    }\n\n    // cbor_tag_handler_t::ignore ignores the tag\n    auto b_ignore_tag = json::from_cbor(vec, true, true, json::cbor_tag_handler_t::ignore);\n    std::cout << b_ignore_tag << std::endl;\n\n    // cbor_tag_handler_t::store stores the tag as binary subtype\n    auto b_store_tag = json::from_cbor(vec, true, true, json::cbor_tag_handler_t::store);\n    std::cout << b_store_tag << std::endl;\n}\n

      Output:

      [json.exception.parse_error.112] parse error at byte 1: syntax error while parsing CBOR value: invalid byte: 0xD8\n{\"bytes\":[202,254,186,190],\"subtype\":null}\n{\"bytes\":[202,254,186,190],\"subtype\":66}\n
      "},{"location":"api/basic_json/cbor_tag_handler_t/#version-history","title":"Version history","text":"
      • Added in version 3.9.0. Added value store in 3.10.0.
      "},{"location":"api/basic_json/cend/","title":"nlohmann::basic_json::cend","text":"
      const_iterator cend() const noexcept;\n

      Returns an iterator to one past the last element.

      "},{"location":"api/basic_json/cend/#return-value","title":"Return value","text":"

      iterator one past the last element

      "},{"location":"api/basic_json/cend/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/cend/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/cend/#examples","title":"Examples","text":"Example

      The following code shows an example for cend().

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create an array value\n    json array = {1, 2, 3, 4, 5};\n\n    // get an iterator to one past the last element\n    json::const_iterator it = array.cend();\n\n    // decrement the iterator to point to the last element\n    --it;\n\n    // serialize the element that the iterator points to\n    std::cout << *it << '\\n';\n}\n

      Output:

      5\n
      "},{"location":"api/basic_json/cend/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/clear/","title":"nlohmann::basic_json::clear","text":"
      void clear() noexcept;\n

      Clears the content of a JSON value and resets it to the default value as if basic_json(value_t) would have been called with the current value type from type():

      Value type initial value null null boolean false string \"\" number 0 binary An empty byte vector object {} array []

      Has the same effect as calling

      *this = basic_json(type());\n
      "},{"location":"api/basic_json/clear/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this function never throws exceptions.

      "},{"location":"api/basic_json/clear/#complexity","title":"Complexity","text":"

      Linear in the size of the JSON value.

      "},{"location":"api/basic_json/clear/#notes","title":"Notes","text":"

      All iterators, pointers and references related to this container are invalidated.

      "},{"location":"api/basic_json/clear/#examples","title":"Examples","text":"Example

      The example below shows the effect of clear() to different JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n\n    // call clear()\n    j_null.clear();\n    j_boolean.clear();\n    j_number_integer.clear();\n    j_number_float.clear();\n    j_object.clear();\n    j_array.clear();\n    j_string.clear();\n\n    // serialize the cleared values()\n    std::cout << j_null << '\\n';\n    std::cout << j_boolean << '\\n';\n    std::cout << j_number_integer << '\\n';\n    std::cout << j_number_float << '\\n';\n    std::cout << j_object << '\\n';\n    std::cout << j_array << '\\n';\n    std::cout << j_string << '\\n';\n}\n

      Output:

      null\nfalse\n0\n0.0\n{}\n[]\n\"\"\n
      "},{"location":"api/basic_json/clear/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      • Added support for binary types in version 3.8.0.
      "},{"location":"api/basic_json/contains/","title":"nlohmann::basic_json::contains","text":"
      // (1)\nbool contains(const typename object_t::key_type& key) const;\n\n// (2)\ntemplate<typename KeyType>\nbool contains(KeyType&& key) const;\n\n// (3)\nbool contains(const json_pointer& ptr) const;\n
      1. Check whether an element exists in a JSON object with a key equivalent to key. If the element is not found or the JSON value is not an object, false is returned.
      2. See 1. This overload is only available if KeyType is comparable with typename object_t::key_type and typename object_comparator_t::is_transparent denotes a type.
      3. Check whether the given JSON pointer ptr can be resolved in the current JSON value.
      "},{"location":"api/basic_json/contains/#template-parameters","title":"Template parameters","text":"KeyType A type for an object key other than json_pointer that is comparable with string_t using object_comparator_t. This can also be a string view (C++17)."},{"location":"api/basic_json/contains/#parameters","title":"Parameters","text":"key (in) key value to check its existence. ptr (in) JSON pointer to check its existence."},{"location":"api/basic_json/contains/#return-value","title":"Return value","text":"
      1. true if an element with specified key exists. If no such element with such key is found or the JSON value is not an object, false is returned.
      2. See 1.
      3. true if the JSON pointer can be resolved to a stored value, false otherwise.
      "},{"location":"api/basic_json/contains/#exception-safety","title":"Exception safety","text":"

      Strong exception safety: if an exception occurs, the original value stays intact.

      "},{"location":"api/basic_json/contains/#exceptions","title":"Exceptions","text":"
      1. The function does not throw exceptions.
      2. The function does not throw exceptions.
      3. The function can throw the following exceptions:
        • Throws parse_error.106 if an array index begins with 0.
        • Throws parse_error.109 if an array index was not a number.
      "},{"location":"api/basic_json/contains/#complexity","title":"Complexity","text":"

      Logarithmic in the size of the JSON object.

      "},{"location":"api/basic_json/contains/#notes","title":"Notes","text":"
      • This method always returns false when executed on a JSON type that is not an object.
      • This method can be executed on any JSON value type.

      Postconditions

      If j.contains(x) returns true for a key or JSON pointer x, then it is safe to call j[x].

      "},{"location":"api/basic_json/contains/#examples","title":"Examples","text":"Example: (1) check with key

      The example shows how contains() is used.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create some JSON values\n    json j_object = R\"( {\"key\": \"value\"} )\"_json;\n    json j_array = R\"( [1, 2, 3] )\"_json;\n\n    // call contains\n    std::cout << std::boolalpha <<\n              \"j_object contains 'key': \" << j_object.contains(\"key\") << '\\n' <<\n              \"j_object contains 'another': \" << j_object.contains(\"another\") << '\\n' <<\n              \"j_array contains 'key': \" << j_array.contains(\"key\") << std::endl;\n}\n

      Output:

      j_object contains 'key': true\nj_object contains 'another': false\nj_array contains 'key': false\n
      Example: (2) check with key using string_view

      The example shows how contains() is used.

      #include <iostream>\n#include <string_view>\n#include <nlohmann/json.hpp>\n\nusing namespace std::string_view_literals;\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create some JSON values\n    json j_object = R\"( {\"key\": \"value\"} )\"_json;\n    json j_array = R\"( [1, 2, 3] )\"_json;\n\n    // call contains\n    std::cout << std::boolalpha <<\n              \"j_object contains 'key': \" << j_object.contains(\"key\"sv) << '\\n' <<\n              \"j_object contains 'another': \" << j_object.contains(\"another\"sv) << '\\n' <<\n              \"j_array contains 'key': \" << j_array.contains(\"key\"sv) << std::endl;\n}\n

      Output:

      j_object contains 'key': true\nj_object contains 'another': false\nj_array contains 'key': false\n
      Example: (3) check with JSON pointer

      The example shows how contains() is used.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON value\n    json j =\n    {\n        {\"number\", 1}, {\"string\", \"foo\"}, {\"array\", {1, 2}}\n    };\n\n    std::cout << std::boolalpha\n              << j.contains(\"/number\"_json_pointer) << '\\n'\n              << j.contains(\"/string\"_json_pointer) << '\\n'\n              << j.contains(\"/array\"_json_pointer) << '\\n'\n              << j.contains(\"/array/1\"_json_pointer) << '\\n'\n              << j.contains(\"/array/-\"_json_pointer) << '\\n'\n              << j.contains(\"/array/4\"_json_pointer) << '\\n'\n              << j.contains(\"/baz\"_json_pointer) << std::endl;\n\n    try\n    {\n        // try to use an array index with leading '0'\n        j.contains(\"/array/01\"_json_pointer);\n    }\n    catch (const json::parse_error& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n\n    try\n    {\n        // try to use an array index that is not a number\n        j.contains(\"/array/one\"_json_pointer);\n    }\n    catch (const json::parse_error& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n}\n

      Output:

      true\ntrue\ntrue\ntrue\nfalse\nfalse\nfalse\n
      "},{"location":"api/basic_json/contains/#version-history","title":"Version history","text":"
      1. Added in version 3.11.0.
      2. Added in version 3.6.0. Extended template KeyType to support comparable types in version 3.11.0.
      3. Added in version 3.7.0.
      "},{"location":"api/basic_json/count/","title":"nlohmann::basic_json::count","text":"
      // (1)\nsize_type count(const typename object_t::key_type& key) const;\n\n// (2)\ntemplate<typename KeyType>\nsize_type count(KeyType&& key) const;\n
      1. Returns the number of elements with key key. If ObjectType is the default std::map type, the return value will always be 0 (key was not found) or 1 (key was found).
      2. See 1. This overload is only available if KeyType is comparable with typename object_t::key_type and typename object_comparator_t::is_transparent denotes a type.
      "},{"location":"api/basic_json/count/#template-parameters","title":"Template parameters","text":"KeyType A type for an object key other than json_pointer that is comparable with string_t using object_comparator_t. This can also be a string view (C++17)."},{"location":"api/basic_json/count/#parameters","title":"Parameters","text":"key (in) key value of the element to count."},{"location":"api/basic_json/count/#return-value","title":"Return value","text":"

      Number of elements with key key. If the JSON value is not an object, the return value will be 0.

      "},{"location":"api/basic_json/count/#exception-safety","title":"Exception safety","text":"

      Strong exception safety: if an exception occurs, the original value stays intact.

      "},{"location":"api/basic_json/count/#complexity","title":"Complexity","text":"

      Logarithmic in the size of the JSON object.

      "},{"location":"api/basic_json/count/#notes","title":"Notes","text":"

      This method always returns 0 when executed on a JSON type that is not an object.

      "},{"location":"api/basic_json/count/#examples","title":"Examples","text":"Example: (1) count number of elements

      The example shows how count() is used.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n\n    // call count()\n    auto count_two = j_object.count(\"two\");\n    auto count_three = j_object.count(\"three\");\n\n    // print values\n    std::cout << \"number of elements with key \\\"two\\\": \" << count_two << '\\n';\n    std::cout << \"number of elements with key \\\"three\\\": \" << count_three << '\\n';\n}\n

      Output:

      number of elements with key \"two\": 1\nnumber of elements with key \"three\": 0\n
      Example: (2) count number of elements using string_view

      The example shows how count() is used.

      #include <iostream>\n#include <string_view>\n#include <nlohmann/json.hpp>\n\nusing namespace std::string_view_literals;\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n\n    // call count()\n    auto count_two = j_object.count(\"two\"sv);\n    auto count_three = j_object.count(\"three\"sv);\n\n    // print values\n    std::cout << \"number of elements with key \\\"two\\\": \" << count_two << '\\n';\n    std::cout << \"number of elements with key \\\"three\\\": \" << count_three << '\\n';\n}\n

      Output:

      number of elements with key \"two\": 1\nnumber of elements with key \"three\": 0\n
      "},{"location":"api/basic_json/count/#version-history","title":"Version history","text":"
      1. Added in version 3.11.0.
      2. Added in version 1.0.0. Changed parameter key type to KeyType&& in version 3.11.0.
      "},{"location":"api/basic_json/crbegin/","title":"nlohmann::basic_json::crbegin","text":"
      const_reverse_iterator crbegin() const noexcept;\n

      Returns an iterator to the reverse-beginning; that is, the last element.

      "},{"location":"api/basic_json/crbegin/#return-value","title":"Return value","text":"

      reverse iterator to the first element

      "},{"location":"api/basic_json/crbegin/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/crbegin/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/crbegin/#examples","title":"Examples","text":"Example

      The following code shows an example for crbegin().

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create an array value\n    json array = {1, 2, 3, 4, 5};\n\n    // get an iterator to the reverse-beginning\n    json::const_reverse_iterator it = array.crbegin();\n\n    // serialize the element that the iterator points to\n    std::cout << *it << '\\n';\n}\n

      Output:

      5\n
      "},{"location":"api/basic_json/crbegin/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/crend/","title":"nlohmann::basic_json::crend","text":"
      const_reverse_iterator crend() const noexcept;\n

      Returns an iterator to the reverse-end; that is, one before the first element. This element acts as a placeholder, attempting to access it results in undefined behavior.

      "},{"location":"api/basic_json/crend/#return-value","title":"Return value","text":"

      reverse iterator to the element following the last element

      "},{"location":"api/basic_json/crend/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/crend/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/crend/#examples","title":"Examples","text":"Example

      The following code shows an example for eend().

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create an array value\n    json array = {1, 2, 3, 4, 5};\n\n    // get an iterator to the reverse-end\n    json::const_reverse_iterator it = array.crend();\n\n    // increment the iterator to point to the first element\n    --it;\n\n    // serialize the element that the iterator points to\n    std::cout << *it << '\\n';\n}\n

      Output:

      1\n
      "},{"location":"api/basic_json/crend/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/default_object_comparator_t/","title":"nlohmann::basic_json::default_object_comparator_t","text":"
      using default_object_comparator_t = std::less<StringType>;  // until C++14\n\nusing default_object_comparator_t = std::less<>;            // since C++14\n

      The default comparator used by object_t.

      Since C++14 a transparent comparator is used which prevents unnecessary string construction when looking up a key in an object.

      The actual comparator used depends on object_t and can be obtained via object_comparator_t.

      "},{"location":"api/basic_json/default_object_comparator_t/#examples","title":"Examples","text":"Example

      The example below demonstrates the default comparator.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout << std::boolalpha\n              << \"one < two : \" << json::default_object_comparator_t{}(\"one\", \"two\") << \"\\n\"\n              << \"three < four : \" << json::default_object_comparator_t{}(\"three\", \"four\") << std::endl;\n}\n

      Output:

      one < two : true\nthree < four : false\n
      "},{"location":"api/basic_json/default_object_comparator_t/#version-history","title":"Version history","text":"
      • Added in version 3.11.0.
      "},{"location":"api/basic_json/diff/","title":"nlohmann::basic_json::diff","text":"
      static basic_json diff(const basic_json& source,\n                       const basic_json& target);\n

      Creates a JSON Patch so that value source can be changed into the value target by calling patch function.

      For two JSON values source and target, the following code yields always true:

      source.patch(diff(source, target)) == target;\n

      "},{"location":"api/basic_json/diff/#parameters","title":"Parameters","text":"source (in) JSON value to compare from target (in) JSON value to compare against"},{"location":"api/basic_json/diff/#return-value","title":"Return value","text":"

      a JSON patch to convert the source to target

      "},{"location":"api/basic_json/diff/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

      "},{"location":"api/basic_json/diff/#complexity","title":"Complexity","text":"

      Linear in the lengths of source and target.

      "},{"location":"api/basic_json/diff/#notes","title":"Notes","text":"

      Currently, only remove, add, and replace operations are generated.

      "},{"location":"api/basic_json/diff/#examples","title":"Examples","text":"Example

      The following code shows how a JSON patch is created as a diff for two JSON values.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // the source document\n    json source = R\"(\n        {\n            \"baz\": \"qux\",\n            \"foo\": \"bar\"\n        }\n    )\"_json;\n\n    // the target document\n    json target = R\"(\n        {\n            \"baz\": \"boo\",\n            \"hello\": [\n                \"world\"\n            ]\n        }\n    )\"_json;\n\n    // create the patch\n    json patch = json::diff(source, target);\n\n    // roundtrip\n    json patched_source = source.patch(patch);\n\n    // output patch and roundtrip result\n    std::cout << std::setw(4) << patch << \"\\n\\n\"\n              << std::setw(4) << patched_source << std::endl;\n}\n

      Output:

      [\n    {\n        \"op\": \"replace\",\n        \"path\": \"/baz\",\n        \"value\": \"boo\"\n    },\n    {\n        \"op\": \"remove\",\n        \"path\": \"/foo\"\n    },\n    {\n        \"op\": \"add\",\n        \"path\": \"/hello\",\n        \"value\": [\n            \"world\"\n        ]\n    }\n]\n\n{\n    \"baz\": \"boo\",\n    \"hello\": [\n        \"world\"\n    ]\n}\n
      "},{"location":"api/basic_json/diff/#see-also","title":"See also","text":"
      • RFC 6902 (JSON Patch)
      "},{"location":"api/basic_json/diff/#version-history","title":"Version history","text":"
      • Added in version 2.0.0.
      "},{"location":"api/basic_json/dump/","title":"nlohmann::basic_json::dump","text":"
      string_t dump(const int indent = -1,\n              const char indent_char = ' ',\n              const bool ensure_ascii = false,\n              const error_handler_t error_handler = error_handler_t::strict) const;\n

      Serialization function for JSON values. The function tries to mimic Python's json.dumps() function, and currently supports its indent and ensure_ascii parameters.

      "},{"location":"api/basic_json/dump/#parameters","title":"Parameters","text":"indent (in) If indent is nonnegative, then array elements and object members will be pretty-printed with that indent level. An indent level of 0 will only insert newlines. -1 (the default) selects the most compact representation. indent_char (in) The character to use for indentation if indent is greater than 0. The default is (space). ensure_ascii (in) If ensure_ascii is true, all non-ASCII characters in the output are escaped with \\uXXXX sequences, and the result consists of ASCII characters only. error_handler (in) how to react on decoding errors; there are three possible values (see error_handler_t: strict (throws and exception in case a decoding error occurs; default), replace (replace invalid UTF-8 sequences with U+FFFD), and ignore (ignore invalid UTF-8 sequences during serialization; all bytes are copied to the output unchanged))."},{"location":"api/basic_json/dump/#return-value","title":"Return value","text":"

      string containing the serialization of the JSON value

      "},{"location":"api/basic_json/dump/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes to any JSON value.

      "},{"location":"api/basic_json/dump/#exceptions","title":"Exceptions","text":"

      Throws type_error.316 if a string stored inside the JSON value is not UTF-8 encoded and error_handler is set to strict

      "},{"location":"api/basic_json/dump/#complexity","title":"Complexity","text":"

      Linear.

      "},{"location":"api/basic_json/dump/#notes","title":"Notes","text":"

      Binary values are serialized as object containing two keys:

      • \"bytes\": an array of bytes as integers
      • \"subtype\": the subtype as integer or null if the binary has no subtype
      "},{"location":"api/basic_json/dump/#examples","title":"Examples","text":"Example

      The following example shows the effect of different indent, indent_char, and ensure_ascii parameters to the result of the serialization.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hell\u00f6 \ud83d\ude00!\";\n\n    // call dump()\n    std::cout << \"objects:\" << '\\n'\n              << j_object.dump() << \"\\n\\n\"\n              << j_object.dump(-1) << \"\\n\\n\"\n              << j_object.dump(0) << \"\\n\\n\"\n              << j_object.dump(4) << \"\\n\\n\"\n              << j_object.dump(1, '\\t') << \"\\n\\n\";\n\n    std::cout << \"arrays:\" << '\\n'\n              << j_array.dump() << \"\\n\\n\"\n              << j_array.dump(-1) << \"\\n\\n\"\n              << j_array.dump(0) << \"\\n\\n\"\n              << j_array.dump(4) << \"\\n\\n\"\n              << j_array.dump(1, '\\t') << \"\\n\\n\";\n\n    std::cout << \"strings:\" << '\\n'\n              << j_string.dump() << '\\n'\n              << j_string.dump(-1, ' ', true) << '\\n';\n\n    // create JSON value with invalid UTF-8 byte sequence\n    json j_invalid = \"\u00e4\\xA9\u00fc\";\n    try\n    {\n        std::cout << j_invalid.dump() << std::endl;\n    }\n    catch (const json::type_error& e)\n    {\n        std::cout << e.what() << std::endl;\n    }\n\n    std::cout << \"string with replaced invalid characters: \"\n              << j_invalid.dump(-1, ' ', false, json::error_handler_t::replace)\n              << \"\\nstring with ignored invalid characters: \"\n              << j_invalid.dump(-1, ' ', false, json::error_handler_t::ignore)\n              << '\\n';\n}\n

      Output:

      objects:\n{\"one\":1,\"two\":2}\n\n{\"one\":1,\"two\":2}\n\n{\n\"one\": 1,\n\"two\": 2\n}\n\n{\n    \"one\": 1,\n    \"two\": 2\n}\n\n{\n    \"one\": 1,\n    \"two\": 2\n}\n\narrays:\n[1,2,4,8,16]\n\n[1,2,4,8,16]\n\n[\n1,\n2,\n4,\n8,\n16\n]\n\n[\n    1,\n    2,\n    4,\n    8,\n    16\n]\n\n[\n    1,\n    2,\n    4,\n    8,\n    16\n]\n\nstrings:\n\"Hell\u00f6 \ud83d\ude00!\"\n\"Hell\\u00f6 \\ud83d\\ude00!\"\n[json.exception.type_error.316] invalid UTF-8 byte at index 2: 0xA9\nstring with replaced invalid characters: \"\u00e4\ufffd\u00fc\"\nstring with ignored invalid characters: \"\u00e4\u00fc\"\n
      "},{"location":"api/basic_json/dump/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      • Indentation character indent_char, option ensure_ascii and exceptions added in version 3.0.0.
      • Error handlers added in version 3.4.0.
      • Serialization of binary values added in version 3.8.0.
      "},{"location":"api/basic_json/emplace/","title":"nlohmann::basic_json::emplace","text":"
      template<class... Args>\nstd::pair<iterator, bool> emplace(Args&& ... args);\n

      Inserts a new element into a JSON object constructed in-place with the given args if there is no element with the key in the container. If the function is called on a JSON null value, an empty object is created before appending the value created from args.

      "},{"location":"api/basic_json/emplace/#template-parameters","title":"Template parameters","text":"Args compatible types to create a basic_json object"},{"location":"api/basic_json/emplace/#iterator-invalidation","title":"Iterator invalidation","text":"

      For ordered_json, adding a value to an object can yield a reallocation, in which case all iterators (including the end() iterator) and all references to the elements are invalidated.

      "},{"location":"api/basic_json/emplace/#parameters","title":"Parameters","text":"args (in) arguments to forward to a constructor of basic_json"},{"location":"api/basic_json/emplace/#return-value","title":"Return value","text":"

      a pair consisting of an iterator to the inserted element, or the already-existing element if no insertion happened, and a bool denoting whether the insertion took place.

      "},{"location":"api/basic_json/emplace/#exceptions","title":"Exceptions","text":"

      Throws type_error.311 when called on a type other than JSON object or null; example: \"cannot use emplace() with number\"

      "},{"location":"api/basic_json/emplace/#complexity","title":"Complexity","text":"

      Logarithmic in the size of the container, O(log(size())).

      "},{"location":"api/basic_json/emplace/#examples","title":"Examples","text":"Example

      The example shows how emplace() can be used to add elements to a JSON object. Note how the null value was silently converted to a JSON object. Further note how no value is added if there was already one value stored with the same key.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json object = {{\"one\", 1}, {\"two\", 2}};\n    json null;\n\n    // print values\n    std::cout << object << '\\n';\n    std::cout << null << '\\n';\n\n    // add values\n    auto res1 = object.emplace(\"three\", 3);\n    null.emplace(\"A\", \"a\");\n    null.emplace(\"B\", \"b\");\n\n    // the following call will not add an object, because there is already\n    // a value stored at key \"B\"\n    auto res2 = null.emplace(\"B\", \"c\");\n\n    // print values\n    std::cout << object << '\\n';\n    std::cout << *res1.first << \" \" << std::boolalpha << res1.second << '\\n';\n\n    std::cout << null << '\\n';\n    std::cout << *res2.first << \" \" << std::boolalpha << res2.second << '\\n';\n}\n

      Output:

      {\"one\":1,\"two\":2}\nnull\n{\"one\":1,\"three\":3,\"two\":2}\n3 true\n{\"A\":\"a\",\"B\":\"b\"}\n\"b\" false\n
      "},{"location":"api/basic_json/emplace/#version-history","title":"Version history","text":"
      • Since version 2.0.8.
      "},{"location":"api/basic_json/emplace_back/","title":"nlohmann::basic_json::emplace_back","text":"
      template<class... Args>\nreference emplace_back(Args&& ... args);\n

      Creates a JSON value from the passed parameters args to the end of the JSON value. If the function is called on a JSON null value, an empty array is created before appending the value created from args.

      "},{"location":"api/basic_json/emplace_back/#template-parameters","title":"Template parameters","text":"Args compatible types to create a basic_json object"},{"location":"api/basic_json/emplace_back/#iterator-invalidation","title":"Iterator invalidation","text":"

      By adding an element to the end of the array, a reallocation can happen, in which case all iterators (including the end() iterator) and all references to the elements are invalidated. Otherwise, only the end() iterator is invalidated.

      "},{"location":"api/basic_json/emplace_back/#parameters","title":"Parameters","text":"args (in) arguments to forward to a constructor of basic_json"},{"location":"api/basic_json/emplace_back/#return-value","title":"Return value","text":"

      reference to the inserted element

      "},{"location":"api/basic_json/emplace_back/#exceptions","title":"Exceptions","text":"

      Throws type_error.311 when called on a type other than JSON array or null; example: \"cannot use emplace_back() with number\"

      "},{"location":"api/basic_json/emplace_back/#complexity","title":"Complexity","text":"

      Amortized constant.

      "},{"location":"api/basic_json/emplace_back/#examples","title":"Examples","text":"Example

      The example shows how emplace_back() can be used to add elements to a JSON array. Note how the null value was silently converted to a JSON array.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json array = {1, 2, 3, 4, 5};\n    json null;\n\n    // print values\n    std::cout << array << '\\n';\n    std::cout << null << '\\n';\n\n    // add values\n    array.emplace_back(6);\n    null.emplace_back(\"first\");\n    null.emplace_back(3, \"second\");\n\n    // print values\n    std::cout << array << '\\n';\n    std::cout << null << '\\n';\n}\n

      Output:

      [1,2,3,4,5]\nnull\n[1,2,3,4,5,6]\n[\"first\",[\"second\",\"second\",\"second\"]]\n
      "},{"location":"api/basic_json/emplace_back/#see-also","title":"See also","text":"
      • operator+= add a value to an array/object
      • push_back add a value to an array/object
      "},{"location":"api/basic_json/emplace_back/#version-history","title":"Version history","text":"
      • Since version 2.0.8.
      • Returns reference since 3.7.0.
      "},{"location":"api/basic_json/empty/","title":"nlohmann::basic_json::empty","text":"
      bool empty() const noexcept;\n

      Checks if a JSON value has no elements (i.e. whether its size() is 0).

      "},{"location":"api/basic_json/empty/#return-value","title":"Return value","text":"

      The return value depends on the different types and is defined as follows:

      Value type return value null true boolean false string false number false binary false object result of function object_t::empty() array result of function array_t::empty()"},{"location":"api/basic_json/empty/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this function never throws exceptions.

      "},{"location":"api/basic_json/empty/#complexity","title":"Complexity","text":"

      Constant, as long as array_t and object_t satisfy the Container concept; that is, their empty() functions have constant complexity.

      "},{"location":"api/basic_json/empty/#possible-implementation","title":"Possible implementation","text":"
      bool empty() const noexcept\n{\n    return size() == 0;\n}\n
      "},{"location":"api/basic_json/empty/#notes","title":"Notes","text":"

      This function does not return whether a string stored as JSON value is empty -- it returns whether the JSON container itself is empty which is false in the case of a string.

      "},{"location":"api/basic_json/empty/#examples","title":"Examples","text":"Example

      The following code uses empty() to check if a JSON object contains any elements.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_object_empty(json::value_t::object);\n    json j_array = {1, 2, 4, 8, 16};\n    json j_array_empty(json::value_t::array);\n    json j_string = \"Hello, world\";\n\n    // call empty()\n    std::cout << std::boolalpha;\n    std::cout << j_null.empty() << '\\n';\n    std::cout << j_boolean.empty() << '\\n';\n    std::cout << j_number_integer.empty() << '\\n';\n    std::cout << j_number_float.empty() << '\\n';\n    std::cout << j_object.empty() << '\\n';\n    std::cout << j_object_empty.empty() << '\\n';\n    std::cout << j_array.empty() << '\\n';\n    std::cout << j_array_empty.empty() << '\\n';\n    std::cout << j_string.empty() << '\\n';\n}\n

      Output:

      true\nfalse\nfalse\nfalse\nfalse\ntrue\nfalse\ntrue\nfalse\n
      "},{"location":"api/basic_json/empty/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      • Extended to return false for binary types in version 3.8.0.
      "},{"location":"api/basic_json/end/","title":"nlohmann::basic_json::end","text":"
      iterator end() noexcept;\nconst_iterator end() const noexcept;\n

      Returns an iterator to one past the last element.

      "},{"location":"api/basic_json/end/#return-value","title":"Return value","text":"

      iterator one past the last element

      "},{"location":"api/basic_json/end/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/end/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/end/#examples","title":"Examples","text":"Example

      The following code shows an example for end().

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create an array value\n    json array = {1, 2, 3, 4, 5};\n\n    // get an iterator to one past the last element\n    json::iterator it = array.end();\n\n    // decrement the iterator to point to the last element\n    --it;\n\n    // serialize the element that the iterator points to\n    std::cout << *it << '\\n';\n}\n

      Output:

      5\n
      "},{"location":"api/basic_json/end/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/erase/","title":"nlohmann::basic_json::erase","text":"
      // (1)\niterator erase(iterator pos);\nconst_iterator erase(const_iterator pos);\n\n// (2)\niterator erase(iterator first, iterator last);\nconst_iterator erase(const_iterator first, const_iterator last);\n\n// (3)\nsize_type erase(const typename object_t::key_type& key);\n\n// (4)\ntemplate<typename KeyType>\nsize_type erase(KeyType&& key);\n\n// (5)\nvoid erase(const size_type idx);\n
      1. Removes an element from a JSON value specified by iterator pos. The iterator pos must be valid and dereferenceable. Thus, the end() iterator (which is valid, but is not dereferenceable) cannot be used as a value for pos.

        If called on a primitive type other than null, the resulting JSON value will be null.

      2. Remove an element range specified by [first; last) from a JSON value. The iterator first does not need to be dereferenceable if first == last: erasing an empty range is a no-op.

        If called on a primitive type other than null, the resulting JSON value will be null.

      3. Removes an element from a JSON object by key.

      4. See 3. This overload is only available if KeyType is comparable with typename object_t::key_type and typename object_comparator_t::is_transparent denotes a type.

      5. Removes an element from a JSON array by index.

      "},{"location":"api/basic_json/erase/#template-parameters","title":"Template parameters","text":"KeyType A type for an object key other than json_pointer that is comparable with string_t using object_comparator_t. This can also be a string view (C++17)."},{"location":"api/basic_json/erase/#parameters","title":"Parameters","text":"pos (in) iterator to the element to remove first (in) iterator to the beginning of the range to remove last (in) iterator past the end of the range to remove key (in) object key of the elements to remove idx (in) array index of the element to remove"},{"location":"api/basic_json/erase/#return-value","title":"Return value","text":"
      1. Iterator following the last removed element. If the iterator pos refers to the last element, the end() iterator is returned.
      2. Iterator following the last removed element. If the iterator last refers to the last element, the end() iterator is returned.
      3. Number of elements removed. If ObjectType is the default std::map type, the return value will always be 0 (key was not found) or 1 (key was found).
      4. See 3.
      5. (none)
      "},{"location":"api/basic_json/erase/#exception-safety","title":"Exception safety","text":"

      Strong exception safety: if an exception occurs, the original value stays intact.

      "},{"location":"api/basic_json/erase/#exceptions","title":"Exceptions","text":"
      1. The function can throw the following exceptions:
        • Throws type_error.307 if called on a null value; example: \"cannot use erase() with null\"
        • Throws invalid_iterator.202 if called on an iterator which does not belong to the current JSON value; example: \"iterator does not fit current value\"
        • Throws invalid_iterator.205 if called on a primitive type with invalid iterator (i.e., any iterator which is not begin()); example: \"iterator out of range\"
      2. The function can throw the following exceptions:
        • Throws type_error.307 if called on a null value; example: \"cannot use erase() with null\"
        • Throws invalid_iterator.203 if called on iterators which does not belong to the current JSON value; example: \"iterators do not fit current value\"
        • Throws invalid_iterator.204 if called on a primitive type with invalid iterators (i.e., if first != begin() and last != end()); example: \"iterators out of range\"
      3. The function can throw the following exceptions:
        • Throws type_error.307 when called on a type other than JSON object; example: \"cannot use erase() with null\"
      4. See 3.
      5. The function can throw the following exceptions:
        • Throws type_error.307 when called on a type other than JSON object; example: \"cannot use erase() with null\"
        • Throws out_of_range.401 when idx >= size(); example: \"array index 17 is out of range\"
      "},{"location":"api/basic_json/erase/#complexity","title":"Complexity","text":"
      1. The complexity depends on the type:
        • objects: amortized constant
        • arrays: linear in distance between pos and the end of the container
        • strings and binary: linear in the length of the member
        • other types: constant
      2. The complexity depends on the type:
        • objects: log(size()) + std::distance(first, last)
        • arrays: linear in the distance between first and last, plus linear in the distance between last and end of the container
        • strings and binary: linear in the length of the member
        • other types: constant
      3. log(size()) + count(key)
      4. log(size()) + count(key)
      5. Linear in distance between idx and the end of the container.
      "},{"location":"api/basic_json/erase/#notes","title":"Notes","text":"
      1. Invalidates iterators and references at or after the point of the erase, including the end() iterator.
      2. (none)
      3. References and iterators to the erased elements are invalidated. Other references and iterators are not affected.
      4. See 3.
      5. (none)
      "},{"location":"api/basic_json/erase/#examples","title":"Examples","text":"Example: (1) remove element given an iterator

      The example shows the effect of erase() for different JSON types using an iterator.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n\n    // call erase()\n    j_boolean.erase(j_boolean.begin());\n    j_number_integer.erase(j_number_integer.begin());\n    j_number_float.erase(j_number_float.begin());\n    j_object.erase(j_object.find(\"two\"));\n    j_array.erase(j_array.begin() + 2);\n    j_string.erase(j_string.begin());\n\n    // print values\n    std::cout << j_boolean << '\\n';\n    std::cout << j_number_integer << '\\n';\n    std::cout << j_number_float << '\\n';\n    std::cout << j_object << '\\n';\n    std::cout << j_array << '\\n';\n    std::cout << j_string << '\\n';\n}\n

      Output:

      null\nnull\nnull\n{\"one\":1}\n[1,2,8,16]\nnull\n
      Example: (2) remove elements given an iterator range

      The example shows the effect of erase() for different JSON types using an iterator range.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n\n    // call erase()\n    j_boolean.erase(j_boolean.begin(), j_boolean.end());\n    j_number_integer.erase(j_number_integer.begin(), j_number_integer.end());\n    j_number_float.erase(j_number_float.begin(), j_number_float.end());\n    j_object.erase(j_object.find(\"two\"), j_object.end());\n    j_array.erase(j_array.begin() + 1, j_array.begin() + 3);\n    j_string.erase(j_string.begin(), j_string.end());\n\n    // print values\n    std::cout << j_boolean << '\\n';\n    std::cout << j_number_integer << '\\n';\n    std::cout << j_number_float << '\\n';\n    std::cout << j_object << '\\n';\n    std::cout << j_array << '\\n';\n    std::cout << j_string << '\\n';\n}\n

      Output:

      null\nnull\nnull\n{\"one\":1}\n[1,8,16]\nnull\n
      Example: (3) remove element from a JSON object given a key

      The example shows the effect of erase() for different JSON types using an object key.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n\n    // call erase()\n    auto count_one = j_object.erase(\"one\");\n    auto count_three = j_object.erase(\"three\");\n\n    // print values\n    std::cout << j_object << '\\n';\n    std::cout << count_one << \" \" << count_three << '\\n';\n}\n

      Output:

      {\"two\":2}\n1 0\n
      Example: (4) remove element from a JSON object given a key using string_view

      The example shows the effect of erase() for different JSON types using an object key.

      #include <iostream>\n#include <string_view>\n#include <nlohmann/json.hpp>\n\nusing namespace std::string_view_literals;\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n\n    // call erase()\n    auto count_one = j_object.erase(\"one\"sv);\n    auto count_three = j_object.erase(\"three\"sv);\n\n    // print values\n    std::cout << j_object << '\\n';\n    std::cout << count_one << \" \" << count_three << '\\n';\n}\n

      Output:

      {\"two\":2}\n1 0\n
      Example: (5) remove element from a JSON array given an index

      The example shows the effect of erase() using an array index.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON array\n    json j_array = {0, 1, 2, 3, 4, 5};\n\n    // call erase()\n    j_array.erase(2);\n\n    // print values\n    std::cout << j_array << '\\n';\n}\n

      Output:

      [0,1,3,4,5]\n
      "},{"location":"api/basic_json/erase/#version-history","title":"Version history","text":"
      1. Added in version 1.0.0. Added support for binary types in version 3.8.0.
      2. Added in version 1.0.0. Added support for binary types in version 3.8.0.
      3. Added in version 1.0.0.
      4. Added in version 3.11.0.
      5. Added in version 1.0.0.
      "},{"location":"api/basic_json/error_handler_t/","title":"nlohmann::basic_json::error_handler_t","text":"
      enum class error_handler_t {\n    strict,\n    replace,\n    ignore\n};\n

      This enumeration is used in the dump function to choose how to treat decoding errors while serializing a basic_json value. Three values are differentiated:

      strict throw a type_error exception in case of invalid UTF-8 replace replace invalid UTF-8 sequences with U+FFFD (\ufffd REPLACEMENT CHARACTER) ignore ignore invalid UTF-8 sequences; all bytes are copied to the output unchanged"},{"location":"api/basic_json/error_handler_t/#examples","title":"Examples","text":"Example

      The example below shows how the different values of the error_handler_t influence the behavior of dump when reading serializing an invalid UTF-8 sequence.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON value with invalid UTF-8 byte sequence\n    json j_invalid = \"\u00e4\\xA9\u00fc\";\n    try\n    {\n        std::cout << j_invalid.dump() << std::endl;\n    }\n    catch (const json::type_error& e)\n    {\n        std::cout << e.what() << std::endl;\n    }\n\n    std::cout << \"string with replaced invalid characters: \"\n              << j_invalid.dump(-1, ' ', false, json::error_handler_t::replace)\n              << \"\\nstring with ignored invalid characters: \"\n              << j_invalid.dump(-1, ' ', false, json::error_handler_t::ignore)\n              << '\\n';\n}\n

      Output:

      [json.exception.type_error.316] invalid UTF-8 byte at index 2: 0xA9\nstring with replaced invalid characters: \"\u00e4\ufffd\u00fc\"\nstring with ignored invalid characters: \"\u00e4\u00fc\"\n
      "},{"location":"api/basic_json/error_handler_t/#version-history","title":"Version history","text":"
      • Added in version 3.4.0.
      "},{"location":"api/basic_json/exception/","title":"nlohmann::basic_json::exception","text":"
      class exception : public std::exception;\n

      This class is an extension of std::exception objects with a member id for exception ids. It is used as the base class for all exceptions thrown by the basic_json class. This class can hence be used as \"wildcard\" to catch exceptions, see example below.

      classDiagram\n  direction LR\n\n    class std_exception [\"std::exception\"] {\n        <<interface>>\n    }\n\n    class json_exception [\"basic_json::exception\"] {\n        +const int id\n        +const char* what() const\n    }\n\n    class json_parse_error [\"basic_json::parse_error\"] {\n        +const std::size_t byte\n    }\n\n    class json_invalid_iterator [\"basic_json::invalid_iterator\"]\n    class json_type_error [\"basic_json::type_error\"]\n    class json_out_of_range [\"basic_json::out_of_range\"]\n    class json_other_error [\"basic_json::other_error\"]\n\n    std_exception <|-- json_exception\n    json_exception <|-- json_parse_error\n    json_exception <|-- json_invalid_iterator\n    json_exception <|-- json_type_error\n    json_exception <|-- json_out_of_range\n    json_exception <|-- json_other_error\n\n    style json_exception fill:#CCCCFF

      Subclasses:

      • parse_error for exceptions indicating a parse error
      • invalid_iterator for exceptions indicating errors with iterators
      • type_error for exceptions indicating executing a member function with a wrong type
      • out_of_range for exceptions indicating access out of the defined range
      • other_error for exceptions indicating other library errors
      "},{"location":"api/basic_json/exception/#member-functions","title":"Member functions","text":"
      • what - returns explanatory string
      "},{"location":"api/basic_json/exception/#member-variables","title":"Member variables","text":"
      • id - the id of the exception
      "},{"location":"api/basic_json/exception/#notes","title":"Notes","text":"

      To have nothrow-copy-constructible exceptions, we internally use std::runtime_error which can cope with arbitrary-length error messages. Intermediate strings are built with static functions and then passed to the actual constructor.

      "},{"location":"api/basic_json/exception/#examples","title":"Examples","text":"Example

      The following code shows how arbitrary library exceptions can be caught.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    try\n    {\n        // calling at() for a non-existing key\n        json j = {{\"foo\", \"bar\"}};\n        json k = j.at(\"non-existing\");\n    }\n    catch (const json::exception& e)\n    {\n        // output exception information\n        std::cout << \"message: \" << e.what() << '\\n'\n                  << \"exception id: \" << e.id << std::endl;\n    }\n}\n

      Output:

      message: [json.exception.out_of_range.403] key 'non-existing' not found\nexception id: 403\n
      "},{"location":"api/basic_json/exception/#see-also","title":"See also","text":"

      List of exceptions

      "},{"location":"api/basic_json/exception/#version-history","title":"Version history","text":"
      • Since version 3.0.0.
      "},{"location":"api/basic_json/find/","title":"nlohmann::basic_json::find","text":"
      // (1)\niterator find(const typename object_t::key_type& key);\nconst_iterator find(const typename object_t::key_type& key) const;\n\n// (2)\ntemplate<typename KeyType>\niterator find(KeyType&& key);\ntemplate<typename KeyType>\nconst_iterator find(KeyType&& key) const;\n
      1. Finds an element in a JSON object with a key equivalent to key. If the element is not found or the JSON value is not an object, end() is returned.
      2. See 1. This overload is only available if KeyType is comparable with typename object_t::key_type and typename object_comparator_t::is_transparent denotes a type.
      "},{"location":"api/basic_json/find/#template-parameters","title":"Template parameters","text":"KeyType A type for an object key other than json_pointer that is comparable with string_t using object_comparator_t. This can also be a string view (C++17)."},{"location":"api/basic_json/find/#parameters","title":"Parameters","text":"key (in) key value of the element to search for."},{"location":"api/basic_json/find/#return-value","title":"Return value","text":"

      Iterator to an element with a key equivalent to key. If no such element is found or the JSON value is not an object, a past-the-end iterator (see end()) is returned.

      "},{"location":"api/basic_json/find/#exception-safety","title":"Exception safety","text":"

      Strong exception safety: if an exception occurs, the original value stays intact.

      "},{"location":"api/basic_json/find/#complexity","title":"Complexity","text":"

      Logarithmic in the size of the JSON object.

      "},{"location":"api/basic_json/find/#notes","title":"Notes","text":"

      This method always returns end() when executed on a JSON type that is not an object.

      "},{"location":"api/basic_json/find/#examples","title":"Examples","text":"Example: (1) find object element by key

      The example shows how find() is used.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n\n    // call find\n    auto it_two = j_object.find(\"two\");\n    auto it_three = j_object.find(\"three\");\n\n    // print values\n    std::cout << std::boolalpha;\n    std::cout << \"\\\"two\\\" was found: \" << (it_two != j_object.end()) << '\\n';\n    std::cout << \"value at key \\\"two\\\": \" << *it_two << '\\n';\n    std::cout << \"\\\"three\\\" was found: \" << (it_three != j_object.end()) << '\\n';\n}\n

      Output:

      \"two\" was found: true\nvalue at key \"two\": 2\n\"three\" was found: false\n
      Example: (2) find object element by key using string_view

      The example shows how find() is used.

      #include <iostream>\n#include <string_view>\n#include <nlohmann/json.hpp>\n\nusing namespace std::string_view_literals;\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n\n    // call find\n    auto it_two = j_object.find(\"two\"sv);\n    auto it_three = j_object.find(\"three\"sv);\n\n    // print values\n    std::cout << std::boolalpha;\n    std::cout << \"\\\"two\\\" was found: \" << (it_two != j_object.end()) << '\\n';\n    std::cout << \"value at key \\\"two\\\": \" << *it_two << '\\n';\n    std::cout << \"\\\"three\\\" was found: \" << (it_three != j_object.end()) << '\\n';\n}\n

      Output:

      \"two\" was found: true\nvalue at key \"two\": 2\n\"three\" was found: false\n
      "},{"location":"api/basic_json/find/#see-also","title":"See also","text":"
      • contains checks whether a key exists
      "},{"location":"api/basic_json/find/#version-history","title":"Version history","text":"
      1. Added in version 3.11.0.
      2. Added in version 1.0.0. Changed to support comparable types in version 3.11.0.
      "},{"location":"api/basic_json/flatten/","title":"nlohmann::basic_json::flatten","text":"
      basic_json flatten() const;\n

      The function creates a JSON object whose keys are JSON pointers (see RFC 6901) and whose values are all primitive (see is_primitive() for more information). The original JSON value can be restored using the unflatten() function.

      "},{"location":"api/basic_json/flatten/#return-value","title":"Return value","text":"

      an object that maps JSON pointers to primitive values

      "},{"location":"api/basic_json/flatten/#exception-safety","title":"Exception safety","text":"

      Strong exception safety: if an exception occurs, the original value stays intact.

      "},{"location":"api/basic_json/flatten/#complexity","title":"Complexity","text":"

      Linear in the size the JSON value.

      "},{"location":"api/basic_json/flatten/#notes","title":"Notes","text":"

      Empty objects and arrays are flattened to null and will not be reconstructed correctly by the unflatten() function.

      "},{"location":"api/basic_json/flatten/#examples","title":"Examples","text":"Example

      The following code shows how a JSON object is flattened to an object whose keys consist of JSON pointers.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON value\n    json j =\n    {\n        {\"pi\", 3.141},\n        {\"happy\", true},\n        {\"name\", \"Niels\"},\n        {\"nothing\", nullptr},\n        {\n            \"answer\", {\n                {\"everything\", 42}\n            }\n        },\n        {\"list\", {1, 0, 2}},\n        {\n            \"object\", {\n                {\"currency\", \"USD\"},\n                {\"value\", 42.99}\n            }\n        }\n    };\n\n    // call flatten()\n    std::cout << std::setw(4) << j.flatten() << '\\n';\n}\n

      Output:

      {\n    \"/answer/everything\": 42,\n    \"/happy\": true,\n    \"/list/0\": 1,\n    \"/list/1\": 0,\n    \"/list/2\": 2,\n    \"/name\": \"Niels\",\n    \"/nothing\": null,\n    \"/object/currency\": \"USD\",\n    \"/object/value\": 42.99,\n    \"/pi\": 3.141\n}\n
      "},{"location":"api/basic_json/flatten/#see-also","title":"See also","text":"
      • unflatten the reverse function
      "},{"location":"api/basic_json/flatten/#version-history","title":"Version history","text":"
      • Added in version 2.0.0.
      "},{"location":"api/basic_json/from_bjdata/","title":"nlohmann::basic_json::from_bjdata","text":"
      // (1)\ntemplate<typename InputType>\nstatic basic_json from_bjdata(InputType&& i,\n                              const bool strict = true,\n                              const bool allow_exceptions = true);\n// (2)\ntemplate<typename IteratorType>\nstatic basic_json from_bjdata(IteratorType first, IteratorType last,\n                              const bool strict = true,\n                              const bool allow_exceptions = true);\n

      Deserializes a given input to a JSON value using the BJData (Binary JData) serialization format.

      1. Reads from a compatible input.
      2. Reads from an iterator range.

      The exact mapping and its limitations is described on a dedicated page.

      "},{"location":"api/basic_json/from_bjdata/#template-parameters","title":"Template parameters","text":"InputType

      A compatible input, for instance:

      • an std::istream object
      • a FILE pointer
      • a C-style array of characters
      • a pointer to a null-terminated string of single byte characters
      • an object obj for which begin(obj) and end(obj) produces a valid pair of iterators.
      IteratorType a compatible iterator type"},{"location":"api/basic_json/from_bjdata/#parameters","title":"Parameters","text":"i (in) an input in BJData format convertible to an input adapter first (in) iterator to start of the input last (in) iterator to end of the input strict (in) whether to expect the input to be consumed until EOF (true by default) allow_exceptions (in) whether to throw exceptions in case of a parse error (optional, true by default)"},{"location":"api/basic_json/from_bjdata/#return-value","title":"Return value","text":"

      deserialized JSON value; in case of a parse error and allow_exceptions set to false, the return value will be value_t::discarded. The latter can be checked with is_discarded.

      "},{"location":"api/basic_json/from_bjdata/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

      "},{"location":"api/basic_json/from_bjdata/#exceptions","title":"Exceptions","text":"
      • Throws parse_error.110 if the given input ends prematurely or the end of file was not reached when strict was set to true
      • Throws parse_error.112 if a parse error occurs
      • Throws parse_error.113 if a string could not be parsed successfully
      "},{"location":"api/basic_json/from_bjdata/#complexity","title":"Complexity","text":"

      Linear in the size of the input.

      "},{"location":"api/basic_json/from_bjdata/#examples","title":"Examples","text":"Example

      The example shows the deserialization of a byte vector in BJData format to a JSON value.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create byte vector\n    std::vector<std::uint8_t> v = {0x7B, 0x69, 0x07, 0x63, 0x6F, 0x6D, 0x70, 0x61,\n                                   0x63, 0x74, 0x54, 0x69, 0x06, 0x73, 0x63, 0x68,\n                                   0x65, 0x6D, 0x61, 0x69, 0x00, 0x7D\n                                  };\n\n    // deserialize it with BJData\n    json j = json::from_bjdata(v);\n\n    // print the deserialized JSON value\n    std::cout << std::setw(2) << j << std::endl;\n}\n

      Output:

      {\n  \"compact\": true,\n  \"schema\": 0\n}\n
      "},{"location":"api/basic_json/from_bjdata/#version-history","title":"Version history","text":"
      • Added in version 3.11.0.
      "},{"location":"api/basic_json/from_bson/","title":"nlohmann::basic_json::from_bson","text":"
      // (1)\ntemplate<typename InputType>\nstatic basic_json from_bson(InputType&& i,\n                            const bool strict = true,\n                            const bool allow_exceptions = true);\n// (2)\ntemplate<typename IteratorType>\nstatic basic_json from_bson(IteratorType first, IteratorType last,\n                            const bool strict = true,\n                            const bool allow_exceptions = true);\n

      Deserializes a given input to a JSON value using the BSON (Binary JSON) serialization format.

      1. Reads from a compatible input.
      2. Reads from an iterator range.

      The exact mapping and its limitations is described on a dedicated page.

      "},{"location":"api/basic_json/from_bson/#template-parameters","title":"Template parameters","text":"InputType

      A compatible input, for instance:

      • an std::istream object
      • a FILE pointer
      • a C-style array of characters
      • a pointer to a null-terminated string of single byte characters
      • an object obj for which begin(obj) and end(obj) produces a valid pair of iterators.
      IteratorType a compatible iterator type"},{"location":"api/basic_json/from_bson/#parameters","title":"Parameters","text":"i (in) an input in BSON format convertible to an input adapter first (in) iterator to start of the input last (in) iterator to end of the input strict (in) whether to expect the input to be consumed until EOF (true by default) allow_exceptions (in) whether to throw exceptions in case of a parse error (optional, true by default)"},{"location":"api/basic_json/from_bson/#return-value","title":"Return value","text":"

      deserialized JSON value; in case of a parse error and allow_exceptions set to false, the return value will be value_t::discarded. The latter can be checked with is_discarded.

      "},{"location":"api/basic_json/from_bson/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

      "},{"location":"api/basic_json/from_bson/#exceptions","title":"Exceptions","text":"

      Throws parse_error.114 if an unsupported BSON record type is encountered.

      "},{"location":"api/basic_json/from_bson/#complexity","title":"Complexity","text":"

      Linear in the size of the input.

      "},{"location":"api/basic_json/from_bson/#examples","title":"Examples","text":"Example

      The example shows the deserialization of a byte vector in BSON format to a JSON value.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create byte vector\n    std::vector<std::uint8_t> v = {0x1b, 0x00, 0x00, 0x00, 0x08, 0x63, 0x6f, 0x6d,\n                                   0x70, 0x61, 0x63, 0x74, 0x00, 0x01, 0x10, 0x73,\n                                   0x63, 0x68, 0x65, 0x6d, 0x61, 0x00, 0x00, 0x00,\n                                   0x00, 0x00, 0x00\n                                  };\n\n    // deserialize it with BSON\n    json j = json::from_bson(v);\n\n    // print the deserialized JSON value\n    std::cout << std::setw(2) << j << std::endl;\n}\n

      Output:

      {\n  \"compact\": true,\n  \"schema\": 0\n}\n
      "},{"location":"api/basic_json/from_bson/#see-also","title":"See also","text":"
      • BSON specification
      • to_bson for the analogous serialization
      • from_cbor for the related CBOR format
      • from_msgpack for the related MessagePack format
      • from_ubjson for the related UBJSON format
      "},{"location":"api/basic_json/from_bson/#version-history","title":"Version history","text":"
      • Added in version 3.4.0.

      Deprecation

      • Overload (2) replaces calls to from_bson with a pointer and a length as first two parameters, which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like from_bson(ptr, len, ...); with from_bson(ptr, ptr+len, ...);.
      • Overload (2) replaces calls to from_bson with a pair of iterators as their first parameter, which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like from_bson({ptr, ptr+len}, ...); with from_bson(ptr, ptr+len, ...);.

      You should be warned by your compiler with a -Wdeprecated-declarations warning if you are using a deprecated function.

      "},{"location":"api/basic_json/from_cbor/","title":"nlohmann::basic_json::from_cbor","text":"
      // (1)\ntemplate<typename InputType>\nstatic basic_json from_cbor(InputType&& i,\n                            const bool strict = true,\n                            const bool allow_exceptions = true,\n                            const cbor_tag_handler_t tag_handler = cbor_tag_handler_t::error);\n\n// (2)\ntemplate<typename IteratorType>\nstatic basic_json from_cbor(IteratorType first, IteratorType last,\n                            const bool strict = true,\n                            const bool allow_exceptions = true,\n                            const cbor_tag_handler_t tag_handler = cbor_tag_handler_t::error);\n

      Deserializes a given input to a JSON value using the CBOR (Concise Binary Object Representation) serialization format.

      1. Reads from a compatible input.
      2. Reads from an iterator range.

      The exact mapping and its limitations is described on a dedicated page.

      "},{"location":"api/basic_json/from_cbor/#template-parameters","title":"Template parameters","text":"InputType

      A compatible input, for instance:

      • an std::istream object
      • a FILE pointer
      • a C-style array of characters
      • a pointer to a null-terminated string of single byte characters
      • an object obj for which begin(obj) and end(obj) produces a valid pair of iterators.
      IteratorType a compatible iterator type"},{"location":"api/basic_json/from_cbor/#parameters","title":"Parameters","text":"i (in) an input in CBOR format convertible to an input adapter first (in) iterator to start of the input last (in) iterator to end of the input strict (in) whether to expect the input to be consumed until EOF (true by default) allow_exceptions (in) whether to throw exceptions in case of a parse error (optional, true by default) tag_handler (in) how to treat CBOR tags (optional, error by default); see cbor_tag_handler_t for more information"},{"location":"api/basic_json/from_cbor/#return-value","title":"Return value","text":"

      deserialized JSON value; in case of a parse error and allow_exceptions set to false, the return value will be value_t::discarded. The latter can be checked with is_discarded.

      "},{"location":"api/basic_json/from_cbor/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

      "},{"location":"api/basic_json/from_cbor/#exceptions","title":"Exceptions","text":"
      • Throws parse_error.110 if the given input ends prematurely or the end of file was not reached when strict was set to true
      • Throws parse_error.112 if unsupported features from CBOR were used in the given input or if the input is not valid CBOR
      • Throws parse_error.113 if a string was expected as map key, but not found
      "},{"location":"api/basic_json/from_cbor/#complexity","title":"Complexity","text":"

      Linear in the size of the input.

      "},{"location":"api/basic_json/from_cbor/#examples","title":"Examples","text":"Example

      The example shows the deserialization of a byte vector in CBOR format to a JSON value.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create byte vector\n    std::vector<std::uint8_t> v = {0xa2, 0x67, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x63,\n                                   0x74, 0xf5, 0x66, 0x73, 0x63, 0x68, 0x65, 0x6d,\n                                   0x61, 0x00\n                                  };\n\n    // deserialize it with CBOR\n    json j = json::from_cbor(v);\n\n    // print the deserialized JSON value\n    std::cout << std::setw(2) << j << std::endl;\n}\n

      Output:

      {\n  \"compact\": true,\n  \"schema\": 0\n}\n
      "},{"location":"api/basic_json/from_cbor/#version-history","title":"Version history","text":"
      • Added in version 2.0.9.
      • Parameter start_index since version 2.1.1.
      • Changed to consume input adapters, removed start_index parameter, and added strict parameter in version 3.0.0.
      • Added allow_exceptions parameter in version 3.2.0.
      • Added tag_handler parameter in version 3.9.0.

      Deprecation

      • Overload (2) replaces calls to from_cbor with a pointer and a length as first two parameters, which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like from_cbor(ptr, len, ...); with from_cbor(ptr, ptr+len, ...);.
      • Overload (2) replaces calls to from_cbor with a pair of iterators as their first parameter, which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like from_cbor({ptr, ptr+len}, ...); with from_cbor(ptr, ptr+len, ...);.

      You should be warned by your compiler with a -Wdeprecated-declarations warning if you are using a deprecated function.

      "},{"location":"api/basic_json/from_msgpack/","title":"nlohmann::basic_json::from_msgpack","text":"
      // (1)\ntemplate<typename InputType>\nstatic basic_json from_msgpack(InputType&& i,\n                               const bool strict = true,\n                               const bool allow_exceptions = true);\n// (2)\ntemplate<typename IteratorType>\nstatic basic_json from_msgpack(IteratorType first, IteratorType last,\n                               const bool strict = true,\n                               const bool allow_exceptions = true);\n

      Deserializes a given input to a JSON value using the MessagePack serialization format.

      1. Reads from a compatible input.
      2. Reads from an iterator range.

      The exact mapping and its limitations is described on a dedicated page.

      "},{"location":"api/basic_json/from_msgpack/#template-parameters","title":"Template parameters","text":"InputType

      A compatible input, for instance:

      • an std::istream object
      • a FILE pointer
      • a C-style array of characters
      • a pointer to a null-terminated string of single byte characters
      • an object obj for which begin(obj) and end(obj) produces a valid pair of iterators.
      IteratorType a compatible iterator type"},{"location":"api/basic_json/from_msgpack/#parameters","title":"Parameters","text":"i (in) an input in MessagePack format convertible to an input adapter first (in) iterator to start of the input last (in) iterator to end of the input strict (in) whether to expect the input to be consumed until EOF (true by default) allow_exceptions (in) whether to throw exceptions in case of a parse error (optional, true by default)"},{"location":"api/basic_json/from_msgpack/#return-value","title":"Return value","text":"

      deserialized JSON value; in case of a parse error and allow_exceptions set to false, the return value will be value_t::discarded. The latter can be checked with is_discarded.

      "},{"location":"api/basic_json/from_msgpack/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

      "},{"location":"api/basic_json/from_msgpack/#exceptions","title":"Exceptions","text":"
      • Throws parse_error.110 if the given input ends prematurely or the end of file was not reached when strict was set to true
      • Throws parse_error.112 if unsupported features from MessagePack were used in the given input or if the input is not valid MessagePack
      • Throws parse_error.113 if a string was expected as map key, but not found
      "},{"location":"api/basic_json/from_msgpack/#complexity","title":"Complexity","text":"

      Linear in the size of the input.

      "},{"location":"api/basic_json/from_msgpack/#examples","title":"Examples","text":"Example

      The example shows the deserialization of a byte vector in MessagePack format to a JSON value.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create byte vector\n    std::vector<std::uint8_t> v = {0x82, 0xa7, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x63,\n                                   0x74, 0xc3, 0xa6, 0x73, 0x63, 0x68, 0x65, 0x6d,\n                                   0x61, 0x00\n                                  };\n\n    // deserialize it with MessagePack\n    json j = json::from_msgpack(v);\n\n    // print the deserialized JSON value\n    std::cout << std::setw(2) << j << std::endl;\n}\n

      Output:

      {\n  \"compact\": true,\n  \"schema\": 0\n}\n
      "},{"location":"api/basic_json/from_msgpack/#version-history","title":"Version history","text":"
      • Added in version 2.0.9.
      • Parameter start_index since version 2.1.1.
      • Changed to consume input adapters, removed start_index parameter, and added strict parameter in version 3.0.0.
      • Added allow_exceptions parameter in version 3.2.0.

      Deprecation

      • Overload (2) replaces calls to from_msgpack with a pointer and a length as first two parameters, which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like from_msgpack(ptr, len, ...); with from_msgpack(ptr, ptr+len, ...);.
      • Overload (2) replaces calls to from_cbor with a pair of iterators as their first parameter, which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like from_msgpack({ptr, ptr+len}, ...); with from_msgpack(ptr, ptr+len, ...);.

      You should be warned by your compiler with a -Wdeprecated-declarations warning if you are using a deprecated function.

      "},{"location":"api/basic_json/from_ubjson/","title":"nlohmann::basic_json::from_ubjson","text":"
      // (1)\ntemplate<typename InputType>\nstatic basic_json from_ubjson(InputType&& i,\n                              const bool strict = true,\n                              const bool allow_exceptions = true);\n// (2)\ntemplate<typename IteratorType>\nstatic basic_json from_ubjson(IteratorType first, IteratorType last,\n                              const bool strict = true,\n                              const bool allow_exceptions = true);\n

      Deserializes a given input to a JSON value using the UBJSON (Universal Binary JSON) serialization format.

      1. Reads from a compatible input.
      2. Reads from an iterator range.

      The exact mapping and its limitations is described on a dedicated page.

      "},{"location":"api/basic_json/from_ubjson/#template-parameters","title":"Template parameters","text":"InputType

      A compatible input, for instance:

      • an std::istream object
      • a FILE pointer
      • a C-style array of characters
      • a pointer to a null-terminated string of single byte characters
      • an object obj for which begin(obj) and end(obj) produces a valid pair of iterators.
      IteratorType a compatible iterator type"},{"location":"api/basic_json/from_ubjson/#parameters","title":"Parameters","text":"i (in) an input in UBJSON format convertible to an input adapter first (in) iterator to start of the input last (in) iterator to end of the input strict (in) whether to expect the input to be consumed until EOF (true by default) allow_exceptions (in) whether to throw exceptions in case of a parse error (optional, true by default)"},{"location":"api/basic_json/from_ubjson/#return-value","title":"Return value","text":"

      deserialized JSON value; in case of a parse error and allow_exceptions set to false, the return value will be value_t::discarded. The latter can be checked with is_discarded.

      "},{"location":"api/basic_json/from_ubjson/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

      "},{"location":"api/basic_json/from_ubjson/#exceptions","title":"Exceptions","text":"
      • Throws parse_error.110 if the given input ends prematurely or the end of file was not reached when strict was set to true
      • Throws parse_error.112 if a parse error occurs
      • Throws parse_error.113 if a string could not be parsed successfully
      "},{"location":"api/basic_json/from_ubjson/#complexity","title":"Complexity","text":"

      Linear in the size of the input.

      "},{"location":"api/basic_json/from_ubjson/#examples","title":"Examples","text":"Example

      The example shows the deserialization of a byte vector in UBJSON format to a JSON value.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create byte vector\n    std::vector<std::uint8_t> v = {0x7B, 0x69, 0x07, 0x63, 0x6F, 0x6D, 0x70, 0x61,\n                                   0x63, 0x74, 0x54, 0x69, 0x06, 0x73, 0x63, 0x68,\n                                   0x65, 0x6D, 0x61, 0x69, 0x00, 0x7D\n                                  };\n\n    // deserialize it with UBJSON\n    json j = json::from_ubjson(v);\n\n    // print the deserialized JSON value\n    std::cout << std::setw(2) << j << std::endl;\n}\n

      Output:

      {\n  \"compact\": true,\n  \"schema\": 0\n}\n
      "},{"location":"api/basic_json/from_ubjson/#version-history","title":"Version history","text":"
      • Added in version 3.1.0.
      • Added allow_exceptions parameter in version 3.2.0.

      Deprecation

      • Overload (2) replaces calls to from_ubjson with a pointer and a length as first two parameters, which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like from_ubjson(ptr, len, ...); with from_ubjson(ptr, ptr+len, ...);.
      • Overload (2) replaces calls to from_ubjson with a pair of iterators as their first parameter, which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like from_ubjson({ptr, ptr+len}, ...); with from_ubjson(ptr, ptr+len, ...);.

      You should be warned by your compiler with a -Wdeprecated-declarations warning if you are using a deprecated function.

      "},{"location":"api/basic_json/front/","title":"nlohmann::basic_json::front","text":"
      reference front();\nconst_reference front() const;\n

      Returns a reference to the first element in the container. For a JSON container c, the expression c.front() is equivalent to *c.begin().

      "},{"location":"api/basic_json/front/#return-value","title":"Return value","text":"

      In case of a structured type (array or object), a reference to the first element is returned. In case of number, string, boolean, or binary values, a reference to the value is returned.

      "},{"location":"api/basic_json/front/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

      "},{"location":"api/basic_json/front/#exceptions","title":"Exceptions","text":"

      If the JSON value is null, exception invalid_iterator.214 is thrown.

      "},{"location":"api/basic_json/front/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/front/#notes","title":"Notes","text":"

      Precondition

      The array or object must not be empty. Calling front on an empty array or object yields undefined behavior.

      "},{"location":"api/basic_json/front/#examples","title":"Examples","text":"Example

      The following code shows an example for front().

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_object_empty(json::value_t::object);\n    json j_array = {1, 2, 4, 8, 16};\n    json j_array_empty(json::value_t::array);\n    json j_string = \"Hello, world\";\n\n    // call front()\n    //std::cout << j_null.front() << '\\n';          // would throw\n    std::cout << j_boolean.front() << '\\n';\n    std::cout << j_number_integer.front() << '\\n';\n    std::cout << j_number_float.front() << '\\n';\n    std::cout << j_object.front() << '\\n';\n    //std::cout << j_object_empty.front() << '\\n';  // undefined behavior\n    std::cout << j_array.front() << '\\n';\n    //std::cout << j_array_empty.front() << '\\n';   // undefined behavior\n    std::cout << j_string.front() << '\\n';\n}\n

      Output:

      true\n17\n23.42\n1\n1\n\"Hello, world\"\n
      "},{"location":"api/basic_json/front/#see-also","title":"See also","text":"
      • back to access the last element
      "},{"location":"api/basic_json/front/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      • Adjusted code to return reference to binary values in version 3.8.0.
      "},{"location":"api/basic_json/get/","title":"nlohmann::basic_json::get","text":"
      // (1)\ntemplate<typename ValueType>\nValueType get() const noexcept(\n    noexcept(JSONSerializer<ValueType>::from_json(\n        std::declval<const basic_json_t&>(), std::declval<ValueType&>())));\n\n// (2)\ntemplate<typename BasicJsonType>\nBasicJsonType get() const;\n\n// (3)\ntemplate<typename PointerType>\nPointerType get_ptr();\n\ntemplate<typename PointerType>\nconstexpr const PointerType get_ptr() const noexcept;\n
      1. Explicit type conversion between the JSON value and a compatible value which is CopyConstructible and DefaultConstructible. The value is converted by calling the json_serializer<ValueType> from_json() method.

        The function is equivalent to executing

        ValueType ret;\nJSONSerializer<ValueType>::from_json(*this, ret);\nreturn ret;\n

        This overload is chosen if:

        • ValueType is not basic_json,
        • json_serializer<ValueType> has a from_json() method of the form void from_json(const basic_json&, ValueType&), and
        • json_serializer<ValueType> does not have a from_json() method of the form ValueType from_json(const basic_json&)

        If the type is not CopyConstructible and not DefaultConstructible, the value is converted by calling the json_serializer<ValueType> from_json() method.

        The function is then equivalent to executing

        return JSONSerializer<ValueTypeCV>::from_json(*this);\n

        This overload is chosen if:

        • ValueType is not basic_json and
        • json_serializer<ValueType> has a from_json() method of the form ValueType from_json(const basic_json&)

        If json_serializer<ValueType> has both overloads of from_json(), the latter one is chosen.

      2. Overload for basic_json specializations. The function is equivalent to executing

        return *this;\n

      3. Explicit pointer access to the internally stored JSON value. No copies are made.

      "},{"location":"api/basic_json/get/#template-parameters","title":"Template parameters","text":"ValueType the value type to return BasicJsonType a specialization of basic_json PointerType pointer type; must be a pointer to array_t, object_t, string_t, boolean_t, number_integer_t, or number_unsigned_t, number_float_t, or binary_t. Other types will not compile."},{"location":"api/basic_json/get/#return-value","title":"Return value","text":"
      1. copy of the JSON value, converted to ValueType
      2. a copy of *this, converted into BasicJsonType
      3. pointer to the internally stored JSON value if the requested pointer type fits to the JSON value; nullptr otherwise
      "},{"location":"api/basic_json/get/#exceptions","title":"Exceptions","text":"

      Depends on what json_serializer<ValueType> from_json() method throws

      "},{"location":"api/basic_json/get/#notes","title":"Notes","text":"

      Undefined behavior

      Writing data to the pointee (overload 3) of the result yields an undefined state.

      "},{"location":"api/basic_json/get/#examples","title":"Examples","text":"Example

      The example below shows several conversions from JSON values to other types. There a few things to note: (1) Floating-point numbers can be converted to integers, (2) A JSON array can be converted to a standard std::vector<short>, (3) A JSON object can be converted to C++ associative containers such as std::unordered_map<std::string, json>.

      #include <iostream>\n#include <unordered_map>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON value with different types\n    json json_types =\n    {\n        {\"boolean\", true},\n        {\n            \"number\", {\n                {\"integer\", 42},\n                {\"floating-point\", 17.23}\n            }\n        },\n        {\"string\", \"Hello, world!\"},\n        {\"array\", {1, 2, 3, 4, 5}},\n        {\"null\", nullptr}\n    };\n\n    // use explicit conversions\n    auto v1 = json_types[\"boolean\"].template get<bool>();\n    auto v2 = json_types[\"number\"][\"integer\"].template get<int>();\n    auto v3 = json_types[\"number\"][\"integer\"].template get<short>();\n    auto v4 = json_types[\"number\"][\"floating-point\"].template get<float>();\n    auto v5 = json_types[\"number\"][\"floating-point\"].template get<int>();\n    auto v6 = json_types[\"string\"].template get<std::string>();\n    auto v7 = json_types[\"array\"].template get<std::vector<short>>();\n    auto v8 = json_types.template get<std::unordered_map<std::string, json>>();\n\n    // print the conversion results\n    std::cout << v1 << '\\n';\n    std::cout << v2 << ' ' << v3 << '\\n';\n    std::cout << v4 << ' ' << v5 << '\\n';\n    std::cout << v6 << '\\n';\n\n    for (auto i : v7)\n    {\n        std::cout << i << ' ';\n    }\n    std::cout << \"\\n\\n\";\n\n    for (auto i : v8)\n    {\n        std::cout << i.first << \": \" << i.second << '\\n';\n    }\n}\n

      Output:

      1\n42 42\n17.23 17\nHello, world!\n1 2 3 4 5 \n\nstring: \"Hello, world!\"\nnumber: {\"floating-point\":17.23,\"integer\":42}\nnull: null\nboolean: true\narray: [1,2,3,4,5]\n
      Example

      The example below shows how pointers to internal values of a JSON value can be requested. Note that no type conversions are made and a #cpp nullptr is returned if the value and the requested pointer type does not match.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON number\n    json value = 17;\n\n    // explicitly getting pointers\n    auto p1 = value.template get<const json::number_integer_t*>();\n    auto p2 = value.template get<json::number_integer_t*>();\n    auto p3 = value.template get<json::number_integer_t* const>();\n    auto p4 = value.template get<const json::number_integer_t* const>();\n    auto p5 = value.template get<json::number_float_t*>();\n\n    // print the pointees\n    std::cout << *p1 << ' ' << *p2 << ' ' << *p3 << ' ' << *p4 << '\\n';\n    std::cout << std::boolalpha << (p5 == nullptr) << '\\n';\n}\n

      Output:

      17 17 17 17\ntrue\n
      "},{"location":"api/basic_json/get/#version-history","title":"Version history","text":"
      1. Since version 2.1.0.
      2. Since version 2.1.0. Extended to work with other specializations of basic_json in version 3.2.0.
      3. Since version 1.0.0.
      "},{"location":"api/basic_json/get_allocator/","title":"nlohmann::basic_json::get_allocator","text":"
      static allocator_type get_allocator();\n

      Returns the allocator associated with the container.

      "},{"location":"api/basic_json/get_allocator/#return-value","title":"Return value","text":"

      associated allocator

      "},{"location":"api/basic_json/get_allocator/#examples","title":"Examples","text":"Example

      The example shows how get_allocator() is used to created json values.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    auto alloc = json::get_allocator();\n    using traits_t = std::allocator_traits<decltype(alloc)>;\n\n    json* j = traits_t::allocate(alloc, 1);\n    traits_t::construct(alloc, j, \"Hello, world!\");\n\n    std::cout << *j << std::endl;\n\n    traits_t::destroy(alloc, j);\n    traits_t::deallocate(alloc, j, 1);\n}\n

      Output:

      \"Hello, world!\"\n
      "},{"location":"api/basic_json/get_allocator/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/get_binary/","title":"nlohmann::basic_json::get_binary","text":"
      binary_t& get_binary();\n\nconst binary_t& get_binary() const;\n

      Returns a reference to the stored binary value.

      "},{"location":"api/basic_json/get_binary/#return-value","title":"Return value","text":"

      Reference to binary value.

      "},{"location":"api/basic_json/get_binary/#exception-safety","title":"Exception safety","text":"

      Strong exception safety: if an exception occurs, the original value stays intact.

      "},{"location":"api/basic_json/get_binary/#exceptions","title":"Exceptions","text":"

      Throws type_error.302 if the value is not binary

      "},{"location":"api/basic_json/get_binary/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/get_binary/#examples","title":"Examples","text":"Example

      The following code shows how to query a binary value.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a binary vector\n    std::vector<std::uint8_t> vec = {0xCA, 0xFE, 0xBA, 0xBE};\n\n    // create a binary JSON value with subtype 42\n    json j = json::binary(vec, 42);\n\n    // output type and subtype\n    std::cout << \"type: \" << j.type_name() << \", subtype: \" << j.get_binary().subtype() << std::endl;\n}\n

      Output:

      type: binary, subtype: 42\n
      "},{"location":"api/basic_json/get_binary/#version-history","title":"Version history","text":"
      • Added in version 3.8.0.
      "},{"location":"api/basic_json/get_ptr/","title":"nlohmann::basic_json::get_ptr","text":"
      template<typename PointerType>\nPointerType get_ptr() noexcept;\n\ntemplate<typename PointerType>\nconstexpr const PointerType get_ptr() const noexcept;\n

      Implicit pointer access to the internally stored JSON value. No copies are made.

      "},{"location":"api/basic_json/get_ptr/#template-parameters","title":"Template parameters","text":"PointerType pointer type; must be a pointer to array_t, object_t, string_t, boolean_t, number_integer_t, or number_unsigned_t, number_float_t, or binary_t. Other types will not compile."},{"location":"api/basic_json/get_ptr/#return-value","title":"Return value","text":"

      pointer to the internally stored JSON value if the requested pointer type fits to the JSON value; nullptr otherwise

      "},{"location":"api/basic_json/get_ptr/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this function never throws exceptions.

      "},{"location":"api/basic_json/get_ptr/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/get_ptr/#notes","title":"Notes","text":"

      Undefined behavior

      The pointer becomes invalid if the underlying JSON object changes.

      Consider the following example code where the pointer ptr changes after the array is resized. As a result, reading or writing to ptr after the array change would be undefined behavior. The address of the first array element changes, because the underlying std::vector is resized after adding a fifth element.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    json j = {1, 2, 3, 4};\n    auto* ptr = j[0].get_ptr<std::int64_t*>();\n    std::cout << \"value at \" << ptr << \" is \" << *ptr << std::endl;\n\n    j.push_back(5);\n\n    ptr = j[0].get_ptr<std::int64_t*>();\n    std::cout << \"value at \" << ptr << \" is \" << *ptr << std::endl;\n}\n

      Output:

      value at 0x6000012fc1c8 is 1\nvalue at 0x6000029fc088 is 1\n
      "},{"location":"api/basic_json/get_ptr/#examples","title":"Examples","text":"Example

      The example below shows how pointers to internal values of a JSON value can be requested. Note that no type conversions are made and a nullptr is returned if the value and the requested pointer type does not match.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON number\n    json value = 17;\n\n    // explicitly getting pointers\n    auto p1 = value.get_ptr<const json::number_integer_t*>();\n    auto p2 = value.get_ptr<json::number_integer_t*>();\n    auto p3 = value.get_ptr<json::number_integer_t* const>();\n    auto p4 = value.get_ptr<const json::number_integer_t* const>();\n    auto p5 = value.get_ptr<json::number_float_t*>();\n\n    // print the pointees\n    std::cout << *p1 << ' ' << *p2 << ' ' << *p3 << ' ' << *p4 << '\\n';\n    std::cout << std::boolalpha << (p5 == nullptr) << '\\n';\n}\n

      Output:

      17 17 17 17\ntrue\n
      "},{"location":"api/basic_json/get_ptr/#see-also","title":"See also","text":"
      • get_ref() get a reference value
      "},{"location":"api/basic_json/get_ptr/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      • Extended to binary types in version 3.8.0.
      "},{"location":"api/basic_json/get_ref/","title":"nlohmann::basic_json::get_ref","text":"
      template<typename ReferenceType>\nReferenceType get_ref();\n\ntemplate<typename ReferenceType>\nconst ReferenceType get_ref() const;\n

      Implicit reference access to the internally stored JSON value. No copies are made.

      "},{"location":"api/basic_json/get_ref/#template-parameters","title":"Template parameters","text":"ReferenceType reference type; must be a reference to array_t, object_t, string_t, boolean_t, number_integer_t, or number_unsigned_t, number_float_t, or binary_t. Enforced by a static assertion."},{"location":"api/basic_json/get_ref/#return-value","title":"Return value","text":"

      reference to the internally stored JSON value if the requested reference type fits to the JSON value; throws type_error.303 otherwise

      "},{"location":"api/basic_json/get_ref/#exception-safety","title":"Exception safety","text":"

      Strong exception safety: if an exception occurs, the original value stays intact.

      "},{"location":"api/basic_json/get_ref/#exceptions","title":"Exceptions","text":"

      Throws type_error.303 if the requested reference type does not match the stored JSON value type; example: \"incompatible ReferenceType for get_ref, actual type is binary\".

      "},{"location":"api/basic_json/get_ref/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/get_ref/#notes","title":"Notes","text":"

      Undefined behavior

      The reference becomes invalid if the underlying JSON object changes.

      "},{"location":"api/basic_json/get_ref/#examples","title":"Examples","text":"Example

      The example shows several calls to get_ref().

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON number\n    json value = 17;\n\n    // explicitly getting references\n    auto r1 = value.get_ref<const json::number_integer_t&>();\n    auto r2 = value.get_ref<json::number_integer_t&>();\n\n    // print the values\n    std::cout << r1 << ' ' << r2 << '\\n';\n\n    // incompatible type throws exception\n    try\n    {\n        auto r3 = value.get_ref<json::number_float_t&>();\n    }\n    catch (const json::type_error& ex)\n    {\n        std::cout << ex.what() << '\\n';\n    }\n}\n

      Output:

      17 17\n[json.exception.type_error.303] incompatible ReferenceType for get_ref, actual type is number\n
      "},{"location":"api/basic_json/get_ref/#see-also","title":"See also","text":"
      • get_ptr() get a pointer value
      "},{"location":"api/basic_json/get_ref/#version-history","title":"Version history","text":"
      • Added in version 1.1.0.
      • Extended to binary types in version 3.8.0.
      "},{"location":"api/basic_json/get_to/","title":"nlohmann::basic_json::get_to","text":"
      template<typename ValueType>\nValueType& get_to(ValueType& v) const noexcept(\n    noexcept(JSONSerializer<ValueType>::from_json(\n        std::declval<const basic_json_t&>(), v)));\n

      Explicit type conversion between the JSON value and a compatible value. The value is filled into the input parameter by calling the json_serializer<ValueType> from_json() method.

      The function is equivalent to executing

      ValueType v;\nJSONSerializer<ValueType>::from_json(*this, v);\n

      This overload is chosen if:

      • ValueType is not basic_json,
      • json_serializer<ValueType> has a from_json() method of the form void from_json(const basic_json&, ValueType&)
      "},{"location":"api/basic_json/get_to/#template-parameters","title":"Template parameters","text":"ValueType the value type to return"},{"location":"api/basic_json/get_to/#return-value","title":"Return value","text":"

      the input parameter, allowing chaining calls

      "},{"location":"api/basic_json/get_to/#exceptions","title":"Exceptions","text":"

      Depends on what json_serializer<ValueType> from_json() method throws

      "},{"location":"api/basic_json/get_to/#examples","title":"Examples","text":"Example

      The example below shows several conversions from JSON values to other types. There a few things to note: (1) Floating-point numbers can be converted to integers, (2) A JSON array can be converted to a standard std::vector<short>, (3) A JSON object can be converted to C++ associative containers such as #cpp std::unordered_map<std::string, json>.

      #include <iostream>\n#include <unordered_map>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON value with different types\n    json json_types =\n    {\n        {\"boolean\", true},\n        {\n            \"number\", {\n                {\"integer\", 42},\n                {\"floating-point\", 17.23}\n            }\n        },\n        {\"string\", \"Hello, world!\"},\n        {\"array\", {1, 2, 3, 4, 5}},\n        {\"null\", nullptr}\n    };\n\n    bool v1;\n    int v2;\n    short v3;\n    float v4;\n    int v5;\n    std::string v6;\n    std::vector<short> v7;\n    std::unordered_map<std::string, json> v8;\n\n    // use explicit conversions\n    json_types[\"boolean\"].get_to(v1);\n    json_types[\"number\"][\"integer\"].get_to(v2);\n    json_types[\"number\"][\"integer\"].get_to(v3);\n    json_types[\"number\"][\"floating-point\"].get_to(v4);\n    json_types[\"number\"][\"floating-point\"].get_to(v5);\n    json_types[\"string\"].get_to(v6);\n    json_types[\"array\"].get_to(v7);\n    json_types.get_to(v8);\n\n    // print the conversion results\n    std::cout << v1 << '\\n';\n    std::cout << v2 << ' ' << v3 << '\\n';\n    std::cout << v4 << ' ' << v5 << '\\n';\n    std::cout << v6 << '\\n';\n\n    for (auto i : v7)\n    {\n        std::cout << i << ' ';\n    }\n    std::cout << \"\\n\\n\";\n\n    for (auto i : v8)\n    {\n        std::cout << i.first << \": \" << i.second << '\\n';\n    }\n}\n

      Output:

      1\n42 42\n17.23 17\nHello, world!\n1 2 3 4 5 \n\nstring: \"Hello, world!\"\nnumber: {\"floating-point\":17.23,\"integer\":42}\nnull: null\nboolean: true\narray: [1,2,3,4,5]\n
      "},{"location":"api/basic_json/get_to/#version-history","title":"Version history","text":"
      • Since version 3.3.0.
      "},{"location":"api/basic_json/input_format_t/","title":"nlohmann::basic_json::input_format_t","text":"
      enum class input_format_t {\n    json,\n    cbor,\n    msgpack,\n    ubjson,\n    bson,\n    bjdata\n};\n

      This enumeration is used in the sax_parse function to choose the input format to parse:

      json JSON (JavaScript Object Notation) cbor CBOR (Concise Binary Object Representation) msgpack MessagePack ubjson UBJSON (Universal Binary JSON) bson BSON (Binary JSON) bjdata BJData (Binary JData)"},{"location":"api/basic_json/input_format_t/#examples","title":"Examples","text":"Example

      The example below shows how an input_format_t enum value is passed to sax_parse to set the input format to CBOR.

      #include <iostream>\n#include <iomanip>\n#include <sstream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector<std::string> events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t& s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t& val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t& val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t& val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string& last_token, const json::exception& ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // CBOR byte string\n    std::vector<std::uint8_t> vec = {{0x44, 0xcA, 0xfe, 0xba, 0xbe}};\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse CBOR\n    bool result = json::sax_parse(vec, &sec, json::input_format_t::cbor);\n\n    // output the recorded events\n    for (auto& event : sec.events)\n    {\n        std::cout << event << \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout << \"\\nresult: \" << std::boolalpha << result << std::endl;\n}\n

      Output:

      binary(val=[...])\n\nresult: true\n
      "},{"location":"api/basic_json/input_format_t/#version-history","title":"Version history","text":"
      • Added in version 3.2.0.
      "},{"location":"api/basic_json/insert/","title":"nlohmann::basic_json::insert","text":"
      // (1)\niterator insert(const_iterator pos, const basic_json& val);\niterator insert(const_iterator pos, basic_json&& val);\n\n// (2)\niterator insert(const_iterator pos, size_type cnt, const basic_json& val);\n\n// (3)\niterator insert(const_iterator pos, const_iterator first, const_iterator last);\n\n// (4)\niterator insert(const_iterator pos, initializer_list_t ilist);\n\n// (5)\nvoid insert(const_iterator first, const_iterator last);\n
      1. Inserts element val into array before iterator pos.
      2. Inserts cnt copies of val into array before iterator pos.
      3. Inserts elements from range [first, last) into array before iterator pos.
      4. Inserts elements from initializer list ilist into array before iterator pos.
      5. Inserts elements from range [first, last) into object.
      "},{"location":"api/basic_json/insert/#iterator-invalidation","title":"Iterator invalidation","text":"

      For all cases where an element is added to an array, a reallocation can happen, in which case all iterators (including the end() iterator) and all references to the elements are invalidated. Otherwise, only the end() iterator is invalidated. Also, any iterator or reference after the insertion point will point to the same index which is now a different value.

      For ordered_json, also adding an element to an object can yield a reallocation which again invalidates all iterators and all references. Also, any iterator or reference after the insertion point will point to the same index which is now a different value.

      "},{"location":"api/basic_json/insert/#parameters","title":"Parameters","text":"pos (in) iterator before which the content will be inserted; may be the end() iterator val (in) value to insert cnt (in) number of copies of val to insert first (in) begin of the range of elements to insert last (in) end of the range of elements to insert ilist (in) initializer list to insert the values from"},{"location":"api/basic_json/insert/#return-value","title":"Return value","text":"
      1. iterator pointing to the inserted val.
      2. iterator pointing to the first element inserted, or pos if cnt==0
      3. iterator pointing to the first element inserted, or pos if first==last
      4. iterator pointing to the first element inserted, or pos if ilist is empty
      5. (none)
      "},{"location":"api/basic_json/insert/#exception-safety","title":"Exception safety","text":"

      Strong exception safety: if an exception occurs, the original value stays intact.

      "},{"location":"api/basic_json/insert/#exceptions","title":"Exceptions","text":"
      1. The function can throw the following exceptions:
        • Throws type_error.309 if called on JSON values other than arrays; example: \"cannot use insert() with string\"
        • Throws invalid_iterator.202 if called on an iterator which does not belong to the current JSON value; example: \"iterator does not fit current value\"
      2. The function can throw the following exceptions:
        • Throws type_error.309 if called on JSON values other than arrays; example: \"cannot use insert() with string\"
        • Throws invalid_iterator.202 if called on an iterator which does not belong to the current JSON value; example: \"iterator does not fit current value\"
      3. The function can throw the following exceptions:
        • Throws type_error.309 if called on JSON values other than arrays; example: \"cannot use insert() with string\"
        • Throws invalid_iterator.202 if called on an iterator which does not belong to the current JSON value; example: \"iterator does not fit current value\"
        • Throws invalid_iterator.210 if first and last do not belong to the same JSON value; example: \"iterators do not fit\"
        • Throws invalid_iterator.211 if first or last are iterators into container for which insert is called; example: \"passed iterators may not belong to container\"
      4. The function can throw the following exceptions:
        • Throws type_error.309 if called on JSON values other than arrays; example: \"cannot use insert() with string\"
        • Throws invalid_iterator.202 if called on an iterator which does not belong to the current JSON value; example: \"iterator does not fit current value\"
      5. The function can throw the following exceptions:
        • Throws type_error.309 if called on JSON values other than objects; example: \"cannot use insert() with string\"
        • Throws invalid_iterator.202 if called on an iterator which does not belong to the current JSON value; example: \"iterator does not fit current value\"
        • Throws invalid_iterator.210 if first and last do not belong to the same JSON value; example: \"iterators do not fit\"
      "},{"location":"api/basic_json/insert/#complexity","title":"Complexity","text":"
      1. Constant plus linear in the distance between pos and end of the container.
      2. Linear in cnt plus linear in the distance between pos and end of the container.
      3. Linear in std::distance(first, last) plus linear in the distance between pos and end of the container.
      4. Linear in ilist.size() plus linear in the distance between pos and end of the container.
      5. Logarithmic: O(N*log(size() + N)), where N is the number of elements to insert.
      "},{"location":"api/basic_json/insert/#examples","title":"Examples","text":"Example (1): insert element into array

      The example shows how insert() is used.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON array\n    json v = {1, 2, 3, 4};\n\n    // insert number 10 before number 3\n    auto new_pos = v.insert(v.begin() + 2, 10);\n\n    // output new array and result of insert call\n    std::cout << *new_pos << '\\n';\n    std::cout << v << '\\n';\n}\n

      Output:

      10\n[1,2,10,3,4]\n
      Example (2): insert copies of element into array

      The example shows how insert() is used.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON array\n    json v = {1, 2, 3, 4};\n\n    // insert number 7 copies of number 7 before number 3\n    auto new_pos = v.insert(v.begin() + 2, 7, 7);\n\n    // output new array and result of insert call\n    std::cout << *new_pos << '\\n';\n    std::cout << v << '\\n';\n}\n

      Output:

      7\n[1,2,7,7,7,7,7,7,7,3,4]\n
      Example (3): insert range of elements into array

      The example shows how insert() is used.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON array\n    json v = {1, 2, 3, 4};\n\n    // create a JSON array to copy values from\n    json v2 = {\"one\", \"two\", \"three\", \"four\"};\n\n    // insert range from v2 before the end of array v\n    auto new_pos = v.insert(v.end(), v2.begin(), v2.end());\n\n    // output new array and result of insert call\n    std::cout << *new_pos << '\\n';\n    std::cout << v << '\\n';\n}\n

      Output:

      \"one\"\n[1,2,3,4,\"one\",\"two\",\"three\",\"four\"]\n
      Example (4): insert elements from initializer list into array

      The example shows how insert() is used.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON array\n    json v = {1, 2, 3, 4};\n\n    // insert range from v2 before the end of array v\n    auto new_pos = v.insert(v.end(), {7, 8, 9});\n\n    // output new array and result of insert call\n    std::cout << *new_pos << '\\n';\n    std::cout << v << '\\n';\n}\n

      Output:

      7\n[1,2,3,4,7,8,9]\n
      Example (5): insert range of elements into object

      The example shows how insert() is used.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create two JSON objects\n    json j1 = {{\"one\", \"eins\"}, {\"two\", \"zwei\"}};\n    json j2 = {{\"eleven\", \"elf\"}, {\"seventeen\", \"siebzehn\"}};\n\n    // output objects\n    std::cout << j1 << '\\n';\n    std::cout << j2 << '\\n';\n\n    // insert range from j2 to j1\n    j1.insert(j2.begin(), j2.end());\n\n    // output result of insert call\n    std::cout << j1 << '\\n';\n}\n

      Output:

      {\"one\":\"eins\",\"two\":\"zwei\"}\n{\"eleven\":\"elf\",\"seventeen\":\"siebzehn\"}\n{\"eleven\":\"elf\",\"one\":\"eins\",\"seventeen\":\"siebzehn\",\"two\":\"zwei\"}\n
      "},{"location":"api/basic_json/insert/#version-history","title":"Version history","text":"
      1. Added in version 1.0.0.
      2. Added in version 1.0.0.
      3. Added in version 1.0.0.
      4. Added in version 1.0.0.
      5. Added in version 3.0.0.
      "},{"location":"api/basic_json/invalid_iterator/","title":"nlohmann::basic_json::invalid_iterator","text":"
      class invalid_iterator : public exception;\n

      This exception is thrown if iterators passed to a library function do not match the expected semantics.

      Exceptions have ids 2xx (see list of iterator errors).

      classDiagram\n  direction LR\n\n    class std_exception [\"std::exception\"] {\n        <<interface>>\n    }\n\n    class json_exception [\"basic_json::exception\"] {\n        +const int id\n        +const char* what() const\n    }\n\n    class json_parse_error [\"basic_json::parse_error\"] {\n        +const std::size_t byte\n    }\n\n    class json_invalid_iterator [\"basic_json::invalid_iterator\"]\n    class json_type_error [\"basic_json::type_error\"]\n    class json_out_of_range [\"basic_json::out_of_range\"]\n    class json_other_error [\"basic_json::other_error\"]\n\n    std_exception <|-- json_exception\n    json_exception <|-- json_parse_error\n    json_exception <|-- json_invalid_iterator\n    json_exception <|-- json_type_error\n    json_exception <|-- json_out_of_range\n    json_exception <|-- json_other_error\n\n    style json_invalid_iterator fill:#CCCCFF
      "},{"location":"api/basic_json/invalid_iterator/#member-functions","title":"Member functions","text":"
      • what - returns explanatory string
      "},{"location":"api/basic_json/invalid_iterator/#member-variables","title":"Member variables","text":"
      • id - the id of the exception
      "},{"location":"api/basic_json/invalid_iterator/#examples","title":"Examples","text":"Example

      The following code shows how a invalid_iterator exception can be caught.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    try\n    {\n        // calling iterator::key() on non-object iterator\n        json j = \"string\";\n        json::iterator it = j.begin();\n        auto k = it.key();\n    }\n    catch (const json::invalid_iterator& e)\n    {\n        // output exception information\n        std::cout << \"message: \" << e.what() << '\\n'\n                  << \"exception id: \" << e.id << std::endl;\n    }\n}\n

      Output:

      message: [json.exception.invalid_iterator.207] cannot use key() for non-object iterators\nexception id: 207\n
      "},{"location":"api/basic_json/invalid_iterator/#see-also","title":"See also","text":"
      • List of iterator errors
      • parse_error for exceptions indicating a parse error
      • type_error for exceptions indicating executing a member function with a wrong type
      • out_of_range for exceptions indicating access out of the defined range
      • other_error for exceptions indicating other library errors
      "},{"location":"api/basic_json/invalid_iterator/#version-history","title":"Version history","text":"
      • Since version 3.0.0.
      "},{"location":"api/basic_json/is_array/","title":"nlohmann::basic_json::is_array","text":"
      constexpr bool is_array() const noexcept;\n

      This function returns true if and only if the JSON value is an array.

      "},{"location":"api/basic_json/is_array/#return-value","title":"Return value","text":"

      true if type is an array, false otherwise.

      "},{"location":"api/basic_json/is_array/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/is_array/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/is_array/#examples","title":"Examples","text":"Example

      The following code exemplifies is_array() for all JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_array()\n    std::cout << std::boolalpha;\n    std::cout << j_null.is_array() << '\\n';\n    std::cout << j_boolean.is_array() << '\\n';\n    std::cout << j_number_integer.is_array() << '\\n';\n    std::cout << j_number_unsigned_integer.is_array() << '\\n';\n    std::cout << j_number_float.is_array() << '\\n';\n    std::cout << j_object.is_array() << '\\n';\n    std::cout << j_array.is_array() << '\\n';\n    std::cout << j_string.is_array() << '\\n';\n    std::cout << j_binary.is_array() << '\\n';\n}\n

      Output:

      false\nfalse\nfalse\nfalse\nfalse\nfalse\ntrue\nfalse\nfalse\n
      "},{"location":"api/basic_json/is_array/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/is_binary/","title":"nlohmann::basic_json::is_binary","text":"
      constexpr bool is_binary() const noexcept;\n

      This function returns true if and only if the JSON value is binary array.

      "},{"location":"api/basic_json/is_binary/#return-value","title":"Return value","text":"

      true if type is binary, false otherwise.

      "},{"location":"api/basic_json/is_binary/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/is_binary/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/is_binary/#examples","title":"Examples","text":"Example

      The following code exemplifies is_binary() for all JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_binary()\n    std::cout << std::boolalpha;\n    std::cout << j_null.is_binary() << '\\n';\n    std::cout << j_boolean.is_binary() << '\\n';\n    std::cout << j_number_integer.is_binary() << '\\n';\n    std::cout << j_number_unsigned_integer.is_binary() << '\\n';\n    std::cout << j_number_float.is_binary() << '\\n';\n    std::cout << j_object.is_binary() << '\\n';\n    std::cout << j_array.is_binary() << '\\n';\n    std::cout << j_string.is_binary() << '\\n';\n    std::cout << j_binary.is_binary() << '\\n';\n}\n

      Output:

      false\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\ntrue\n
      "},{"location":"api/basic_json/is_binary/#version-history","title":"Version history","text":"
      • Added in version 3.8.0.
      "},{"location":"api/basic_json/is_boolean/","title":"nlohmann::basic_json::is_boolean","text":"
      constexpr bool is_boolean() const noexcept;\n

      This function returns true if and only if the JSON value is true or false.

      "},{"location":"api/basic_json/is_boolean/#return-value","title":"Return value","text":"

      true if type is boolean, false otherwise.

      "},{"location":"api/basic_json/is_boolean/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/is_boolean/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/is_boolean/#examples","title":"Examples","text":"Example

      The following code exemplifies is_boolean() for all JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_boolean()\n    std::cout << std::boolalpha;\n    std::cout << j_null.is_boolean() << '\\n';\n    std::cout << j_boolean.is_boolean() << '\\n';\n    std::cout << j_number_integer.is_boolean() << '\\n';\n    std::cout << j_number_unsigned_integer.is_boolean() << '\\n';\n    std::cout << j_number_float.is_boolean() << '\\n';\n    std::cout << j_object.is_boolean() << '\\n';\n    std::cout << j_array.is_boolean() << '\\n';\n    std::cout << j_string.is_boolean() << '\\n';\n    std::cout << j_binary.is_boolean() << '\\n';\n}\n

      Output:

      false\ntrue\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\n
      "},{"location":"api/basic_json/is_boolean/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/is_discarded/","title":"nlohmann::basic_json::is_discarded","text":"
      constexpr bool is_discarded() const noexcept;\n

      This function returns true for a JSON value if either:

      • the value was discarded during parsing with a callback function (see parser_callback_t), or
      • the value is the result of parsing invalid JSON with parameter allow_exceptions set to false; see parse for more information.
      "},{"location":"api/basic_json/is_discarded/#return-value","title":"Return value","text":"

      true if type is discarded, false otherwise.

      "},{"location":"api/basic_json/is_discarded/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/is_discarded/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/is_discarded/#notes","title":"Notes","text":"

      Comparisons

      Discarded values are never compared equal with operator==. That is, checking whether a JSON value j is discarded will only work via:

      j.is_discarded()\n

      because

      j == json::value_t::discarded\n

      will always be false.

      Removal during parsing with callback functions

      When a value is discarded by a callback function (see parser_callback_t) during parsing, then it is removed when it is part of a structured value. For instance, if the second value of an array is discarded, instead of [null, discarded, false], the array [null, false] is returned. Only if the top-level value is discarded, the return value of the parse call is discarded.

      This function will always be false for JSON values after parsing. That is, discarded values can only occur during parsing, but will be removed when inside a structured value or replaced by null in other cases.

      "},{"location":"api/basic_json/is_discarded/#examples","title":"Examples","text":"Example

      The following code exemplifies is_discarded() for all JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_discarded()\n    std::cout << std::boolalpha;\n    std::cout << j_null.is_discarded() << '\\n';\n    std::cout << j_boolean.is_discarded() << '\\n';\n    std::cout << j_number_integer.is_discarded() << '\\n';\n    std::cout << j_number_unsigned_integer.is_discarded() << '\\n';\n    std::cout << j_number_float.is_discarded() << '\\n';\n    std::cout << j_object.is_discarded() << '\\n';\n    std::cout << j_array.is_discarded() << '\\n';\n    std::cout << j_string.is_discarded() << '\\n';\n    std::cout << j_binary.is_discarded() << '\\n';\n}\n

      Output:

      false\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\n
      "},{"location":"api/basic_json/is_discarded/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/is_null/","title":"nlohmann::basic_json::is_null","text":"
      constexpr bool is_null() const noexcept;\n

      This function returns true if and only if the JSON value is null.

      "},{"location":"api/basic_json/is_null/#return-value","title":"Return value","text":"

      true if type is null, false otherwise.

      "},{"location":"api/basic_json/is_null/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/is_null/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/is_null/#examples","title":"Examples","text":"Example

      The following code exemplifies is_null() for all JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_null()\n    std::cout << std::boolalpha;\n    std::cout << j_null.is_null() << '\\n';\n    std::cout << j_boolean.is_null() << '\\n';\n    std::cout << j_number_integer.is_null() << '\\n';\n    std::cout << j_number_unsigned_integer.is_null() << '\\n';\n    std::cout << j_number_float.is_null() << '\\n';\n    std::cout << j_object.is_null() << '\\n';\n    std::cout << j_array.is_null() << '\\n';\n    std::cout << j_string.is_null() << '\\n';\n    std::cout << j_binary.is_null() << '\\n';\n}\n

      Output:

      true\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\n
      "},{"location":"api/basic_json/is_null/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/is_number/","title":"nlohmann::basic_json::is_number","text":"
      constexpr bool is_number() const noexcept;\n

      This function returns true if and only if the JSON value is a number. This includes both integer (signed and unsigned) and floating-point values.

      "},{"location":"api/basic_json/is_number/#return-value","title":"Return value","text":"

      true if type is number (regardless whether integer, unsigned integer or floating-type), false otherwise.

      "},{"location":"api/basic_json/is_number/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/is_number/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/is_number/#possible-implementation","title":"Possible implementation","text":"
      constexpr bool is_number() const noexcept\n{\n    return is_number_integer() || is_number_float();\n}\n
      "},{"location":"api/basic_json/is_number/#examples","title":"Examples","text":"Example

      The following code exemplifies is_number() for all JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_number()\n    std::cout << std::boolalpha;\n    std::cout << j_null.is_number() << '\\n';\n    std::cout << j_boolean.is_number() << '\\n';\n    std::cout << j_number_integer.is_number() << '\\n';\n    std::cout << j_number_unsigned_integer.is_number() << '\\n';\n    std::cout << j_number_float.is_number() << '\\n';\n    std::cout << j_object.is_number() << '\\n';\n    std::cout << j_array.is_number() << '\\n';\n    std::cout << j_string.is_number() << '\\n';\n    std::cout << j_binary.is_number() << '\\n';\n}\n

      Output:

      false\nfalse\ntrue\ntrue\ntrue\nfalse\nfalse\nfalse\nfalse\n
      "},{"location":"api/basic_json/is_number/#see-also","title":"See also","text":"
      • is_number_integer() check if value is an integer or unsigned integer number
      • is_number_unsigned() check if value is an unsigned integer number
      • is_number_float() check if value is a floating-point number
      "},{"location":"api/basic_json/is_number/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      • Extended to also return true for unsigned integers in 2.0.0.
      "},{"location":"api/basic_json/is_number_float/","title":"nlohmann::basic_json::is_number_float","text":"
      constexpr bool is_number_float() const noexcept;\n

      This function returns true if and only if the JSON value is a floating-point number. This excludes signed and unsigned integer values.

      "},{"location":"api/basic_json/is_number_float/#return-value","title":"Return value","text":"

      true if type is a floating-point number, false otherwise.

      "},{"location":"api/basic_json/is_number_float/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/is_number_float/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/is_number_float/#examples","title":"Examples","text":"Example

      The following code exemplifies is_number_float() for all JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_number_float()\n    std::cout << std::boolalpha;\n    std::cout << j_null.is_number_float() << '\\n';\n    std::cout << j_boolean.is_number_float() << '\\n';\n    std::cout << j_number_integer.is_number_float() << '\\n';\n    std::cout << j_number_unsigned_integer.is_number_float() << '\\n';\n    std::cout << j_number_float.is_number_float() << '\\n';\n    std::cout << j_object.is_number_float() << '\\n';\n    std::cout << j_array.is_number_float() << '\\n';\n    std::cout << j_string.is_number_float() << '\\n';\n    std::cout << j_binary.is_number_float() << '\\n';\n}\n

      Output:

      false\nfalse\nfalse\nfalse\ntrue\nfalse\nfalse\nfalse\nfalse\n
      "},{"location":"api/basic_json/is_number_float/#see-also","title":"See also","text":"
      • is_number() check if value is a number
      • is_number_integer() check if value is an integer or unsigned integer number
      • is_number_unsigned() check if value is an unsigned integer number
      "},{"location":"api/basic_json/is_number_float/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/is_number_integer/","title":"nlohmann::basic_json::is_number_integer","text":"
      constexpr bool is_number_integer() const noexcept;\n

      This function returns true if and only if the JSON value is a signed or unsigned integer number. This excludes floating-point values.

      "},{"location":"api/basic_json/is_number_integer/#return-value","title":"Return value","text":"

      true if type is an integer or unsigned integer number, false otherwise.

      "},{"location":"api/basic_json/is_number_integer/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/is_number_integer/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/is_number_integer/#examples","title":"Examples","text":"Example

      The following code exemplifies is_number_integer() for all JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_number_integer()\n    std::cout << std::boolalpha;\n    std::cout << j_null.is_number_integer() << '\\n';\n    std::cout << j_boolean.is_number_integer() << '\\n';\n    std::cout << j_number_integer.is_number_integer() << '\\n';\n    std::cout << j_number_unsigned_integer.is_number_integer() << '\\n';\n    std::cout << j_number_float.is_number_integer() << '\\n';\n    std::cout << j_object.is_number_integer() << '\\n';\n    std::cout << j_array.is_number_integer() << '\\n';\n    std::cout << j_string.is_number_integer() << '\\n';\n    std::cout << j_binary.is_number_integer() << '\\n';\n}\n

      Output:

      false\nfalse\ntrue\ntrue\nfalse\nfalse\nfalse\nfalse\nfalse\n
      "},{"location":"api/basic_json/is_number_integer/#see-also","title":"See also","text":"
      • is_number() check if value is a number
      • is_number_unsigned() check if value is an unsigned integer number
      • is_number_float() check if value is a floating-point number
      "},{"location":"api/basic_json/is_number_integer/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      • Extended to also return true for unsigned integers in 2.0.0.
      "},{"location":"api/basic_json/is_number_unsigned/","title":"nlohmann::basic_json::is_number_unsigned","text":"
      constexpr bool is_number_unsigned() const noexcept;\n

      This function returns true if and only if the JSON value is an unsigned integer number. This excludes floating-point and signed integer values.

      "},{"location":"api/basic_json/is_number_unsigned/#return-value","title":"Return value","text":"

      true if type is an unsigned integer number, false otherwise.

      "},{"location":"api/basic_json/is_number_unsigned/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/is_number_unsigned/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/is_number_unsigned/#examples","title":"Examples","text":"Example

      The following code exemplifies is_number_unsigned() for all JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_number_unsigned()\n    std::cout << std::boolalpha;\n    std::cout << j_null.is_number_unsigned() << '\\n';\n    std::cout << j_boolean.is_number_unsigned() << '\\n';\n    std::cout << j_number_integer.is_number_unsigned() << '\\n';\n    std::cout << j_number_unsigned_integer.is_number_unsigned() << '\\n';\n    std::cout << j_number_float.is_number_unsigned() << '\\n';\n    std::cout << j_object.is_number_unsigned() << '\\n';\n    std::cout << j_array.is_number_unsigned() << '\\n';\n    std::cout << j_string.is_number_unsigned() << '\\n';\n    std::cout << j_binary.is_number_unsigned() << '\\n';\n}\n

      Output:

      false\nfalse\nfalse\ntrue\nfalse\nfalse\nfalse\nfalse\nfalse\n
      "},{"location":"api/basic_json/is_number_unsigned/#see-also","title":"See also","text":"
      • is_number() check if value is a number
      • is_number_integer() check if value is an integer or unsigned integer number
      • is_number_float() check if value is a floating-point number
      "},{"location":"api/basic_json/is_number_unsigned/#version-history","title":"Version history","text":"
      • Added in version 2.0.0.
      "},{"location":"api/basic_json/is_object/","title":"nlohmann::basic_json::is_object","text":"
      constexpr bool is_object() const noexcept;\n

      This function returns true if and only if the JSON value is an object.

      "},{"location":"api/basic_json/is_object/#return-value","title":"Return value","text":"

      true if type is an object, false otherwise.

      "},{"location":"api/basic_json/is_object/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/is_object/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/is_object/#examples","title":"Examples","text":"Example

      The following code exemplifies is_object() for all JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_object()\n    std::cout << std::boolalpha;\n    std::cout << j_null.is_object() << '\\n';\n    std::cout << j_boolean.is_object() << '\\n';\n    std::cout << j_number_integer.is_object() << '\\n';\n    std::cout << j_number_unsigned_integer.is_object() << '\\n';\n    std::cout << j_number_float.is_object() << '\\n';\n    std::cout << j_object.is_object() << '\\n';\n    std::cout << j_array.is_object() << '\\n';\n    std::cout << j_string.is_object() << '\\n';\n    std::cout << j_binary.is_object() << '\\n';\n}\n

      Output:

      false\nfalse\nfalse\nfalse\nfalse\ntrue\nfalse\nfalse\nfalse\n
      "},{"location":"api/basic_json/is_object/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/is_primitive/","title":"nlohmann::basic_json::is_primitive","text":"
      constexpr bool is_primitive() const noexcept;\n

      This function returns true if and only if the JSON type is primitive (string, number, boolean, null, binary).

      "},{"location":"api/basic_json/is_primitive/#return-value","title":"Return value","text":"

      true if type is primitive (string, number, boolean, null, or binary), false otherwise.

      "},{"location":"api/basic_json/is_primitive/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/is_primitive/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/is_primitive/#possible-implementation","title":"Possible implementation","text":"
      constexpr bool is_primitive() const noexcept\n{\n    return is_null() || is_string() || is_boolean() || is_number() || is_binary();\n}\n
      "},{"location":"api/basic_json/is_primitive/#notes","title":"Notes","text":"

      The term primitive stems from RFC 8259:

      JSON can represent four primitive types (strings, numbers, booleans, and null) and two structured types (objects and arrays).

      This library extends primitive types to binary types, because binary types are roughly comparable to strings. Hence, is_primitive() returns true for binary values.

      "},{"location":"api/basic_json/is_primitive/#examples","title":"Examples","text":"Example

      The following code exemplifies is_primitive() for all JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_primitive()\n    std::cout << std::boolalpha;\n    std::cout << j_null.is_primitive() << '\\n';\n    std::cout << j_boolean.is_primitive() << '\\n';\n    std::cout << j_number_integer.is_primitive() << '\\n';\n    std::cout << j_number_unsigned_integer.is_primitive() << '\\n';\n    std::cout << j_number_float.is_primitive() << '\\n';\n    std::cout << j_object.is_primitive() << '\\n';\n    std::cout << j_array.is_primitive() << '\\n';\n    std::cout << j_string.is_primitive() << '\\n';\n    std::cout << j_binary.is_primitive() << '\\n';\n}\n

      Output:

      true\ntrue\ntrue\ntrue\ntrue\nfalse\nfalse\ntrue\ntrue\n
      "},{"location":"api/basic_json/is_primitive/#see-also","title":"See also","text":"
      • is_structured() returns whether JSON value is structured
      • is_null() returns whether JSON value is null
      • is_string() returns whether JSON value is a string
      • is_boolean() returns whether JSON value is a boolean
      • is_number() returns whether JSON value is a number
      • is_binary() returns whether JSON value is a binary array
      "},{"location":"api/basic_json/is_primitive/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      • Extended to return true for binary types in version 3.8.0.
      "},{"location":"api/basic_json/is_string/","title":"nlohmann::basic_json::is_string","text":"
      constexpr bool is_string() const noexcept;\n

      This function returns true if and only if the JSON value is a string.

      "},{"location":"api/basic_json/is_string/#return-value","title":"Return value","text":"

      true if type is a string, false otherwise.

      "},{"location":"api/basic_json/is_string/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/is_string/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/is_string/#examples","title":"Examples","text":"Example

      The following code exemplifies is_string() for all JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_string()\n    std::cout << std::boolalpha;\n    std::cout << j_null.is_string() << '\\n';\n    std::cout << j_boolean.is_string() << '\\n';\n    std::cout << j_number_integer.is_string() << '\\n';\n    std::cout << j_number_unsigned_integer.is_string() << '\\n';\n    std::cout << j_number_float.is_string() << '\\n';\n    std::cout << j_object.is_string() << '\\n';\n    std::cout << j_array.is_string() << '\\n';\n    std::cout << j_string.is_string() << '\\n';\n    std::cout << j_binary.is_string() << '\\n';\n}\n

      Output:

      false\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\ntrue\nfalse\n
      "},{"location":"api/basic_json/is_string/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/is_structured/","title":"nlohmann::basic_json::is_structured","text":"
      constexpr bool is_structured() const noexcept;\n

      This function returns true if and only if the JSON type is structured (array or object).

      "},{"location":"api/basic_json/is_structured/#return-value","title":"Return value","text":"

      true if type is structured (array or object), false otherwise.

      "},{"location":"api/basic_json/is_structured/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/is_structured/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/is_structured/#possible-implementation","title":"Possible implementation","text":"
      constexpr bool is_structured() const noexcept\n{\n    return is_array() || is_object();\n}\n
      "},{"location":"api/basic_json/is_structured/#notes","title":"Notes","text":"

      The term structured stems from RFC 8259:

      JSON can represent four primitive types (strings, numbers, booleans, and null) and two structured types (objects and arrays).

      Note that though strings are containers in C++, they are treated as primitive values in JSON.

      "},{"location":"api/basic_json/is_structured/#examples","title":"Examples","text":"Example

      The following code exemplifies is_structured() for all JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_structured()\n    std::cout << std::boolalpha;\n    std::cout << j_null.is_structured() << '\\n';\n    std::cout << j_boolean.is_structured() << '\\n';\n    std::cout << j_number_integer.is_structured() << '\\n';\n    std::cout << j_number_unsigned_integer.is_structured() << '\\n';\n    std::cout << j_number_float.is_structured() << '\\n';\n    std::cout << j_object.is_structured() << '\\n';\n    std::cout << j_array.is_structured() << '\\n';\n    std::cout << j_string.is_structured() << '\\n';\n    std::cout << j_binary.is_structured() << '\\n';\n}\n

      Output:

      false\nfalse\nfalse\nfalse\nfalse\ntrue\ntrue\nfalse\nfalse\n
      "},{"location":"api/basic_json/is_structured/#see-also","title":"See also","text":"
      • is_primitive() returns whether JSON value is primitive
      • is_array() returns whether value is an array
      • is_object() returns whether value is an object
      "},{"location":"api/basic_json/is_structured/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/items/","title":"nlohmann::basic_json::items","text":"
      iteration_proxy<iterator> items() noexcept;\niteration_proxy<const_iterator> items() const noexcept;\n

      This function allows accessing iterator::key() and iterator::value() during range-based for loops. In these loops, a reference to the JSON values is returned, so there is no access to the underlying iterator.

      For loop without items() function:

      for (auto it = j_object.begin(); it != j_object.end(); ++it)\n{\n    std::cout << \"key: \" << it.key() << \", value:\" << it.value() << '\\n';\n}\n

      Range-based for loop without items() function:

      for (auto it : j_object)\n{\n    // \"it\" is of type json::reference and has no key() member\n    std::cout << \"value: \" << it << '\\n';\n}\n

      Range-based for loop with items() function:

      for (auto& el : j_object.items())\n{\n    std::cout << \"key: \" << el.key() << \", value:\" << el.value() << '\\n';\n}\n

      The items() function also allows using structured bindings (C++17):

      for (auto& [key, val] : j_object.items())\n{\n    std::cout << \"key: \" << key << \", value:\" << val << '\\n';\n}\n
      "},{"location":"api/basic_json/items/#return-value","title":"Return value","text":"

      iteration proxy object wrapping the current value with an interface to use in range-based for loops

      "},{"location":"api/basic_json/items/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

      "},{"location":"api/basic_json/items/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/items/#notes","title":"Notes","text":"

      When iterating over an array, key() will return the index of the element as string (see example). For primitive types (e.g., numbers), key() returns an empty string.

      Lifetime issues

      Using items() on temporary objects is dangerous. Make sure the object's lifetime exceeds the iteration. See #2040 for more information.

      "},{"location":"api/basic_json/items/#examples","title":"Examples","text":"Example

      The following code shows an example for items().

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n\n    // example for an object\n    for (auto& x : j_object.items())\n    {\n        std::cout << \"key: \" << x.key() << \", value: \" << x.value() << '\\n';\n    }\n\n    // example for an array\n    for (auto& x : j_array.items())\n    {\n        std::cout << \"key: \" << x.key() << \", value: \" << x.value() << '\\n';\n    }\n}\n

      Output:

      key: one, value: 1\nkey: two, value: 2\nkey: 0, value: 1\nkey: 1, value: 2\nkey: 2, value: 4\nkey: 3, value: 8\nkey: 4, value: 16\n
      "},{"location":"api/basic_json/items/#version-history","title":"Version history","text":"
      • Added iterator_wrapper in version 3.0.0.
      • Added items and deprecated iterator_wrapper in version 3.1.0.
      • Added structured binding support in version 3.5.0.

      Deprecation

      This function replaces the static function iterator_wrapper which was introduced in version 1.0.0, but has been deprecated in version 3.1.0. Function iterator_wrapper will be removed in version 4.0.0. Please replace all occurrences of iterator_wrapper(j) with j.items().

      You should be warned by your compiler with a -Wdeprecated-declarations warning if you are using a deprecated function.

      "},{"location":"api/basic_json/json_base_class_t/","title":"nlohmann::basic_json::json_base_class_t","text":"
      using json_base_class_t = detail::json_base_class<CustomBaseClass>;\n

      The base class used to inject custom functionality into each instance of basic_json. Examples of such functionality might be metadata, additional member functions (e.g., visitors), or other application-specific code.

      "},{"location":"api/basic_json/json_base_class_t/#template-parameters","title":"Template parameters","text":"CustomBaseClass the base class to be added to basic_json"},{"location":"api/basic_json/json_base_class_t/#notes","title":"Notes","text":""},{"location":"api/basic_json/json_base_class_t/#default-type","title":"Default type","text":"

      The default value for CustomBaseClass is void. In this case an empty base class is used and no additional functionality is injected.

      "},{"location":"api/basic_json/json_base_class_t/#limitations","title":"Limitations","text":"

      The type CustomBaseClass has to be a default-constructible class. basic_json only supports copy/move construction/assignment if CustomBaseClass does so as well.

      "},{"location":"api/basic_json/json_base_class_t/#examples","title":"Examples","text":"Example

      The following code shows how to inject custom data and methods for each node.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nclass visitor_adaptor_with_metadata\n{\n  public:\n    template <class Fnc>\n    void visit(const Fnc& fnc) const;\n\n    int metadata = 42;\n  private:\n    template <class Ptr, class Fnc>\n    void do_visit(const Ptr& ptr, const Fnc& fnc) const;\n};\n\nusing json = nlohmann::basic_json <\n             std::map,\n             std::vector,\n             std::string,\n             bool,\n             std::int64_t,\n             std::uint64_t,\n             double,\n             std::allocator,\n             nlohmann::adl_serializer,\n             std::vector<std::uint8_t>,\n             visitor_adaptor_with_metadata\n             >;\n\ntemplate <class Fnc>\nvoid visitor_adaptor_with_metadata::visit(const Fnc& fnc) const\n{\n    do_visit(json::json_pointer{}, fnc);\n}\n\ntemplate <class Ptr, class Fnc>\nvoid visitor_adaptor_with_metadata::do_visit(const Ptr& ptr, const Fnc& fnc) const\n{\n    using value_t = nlohmann::detail::value_t;\n    const json& j = *static_cast<const json*>(this);\n    switch (j.type())\n    {\n        case value_t::object:\n            fnc(ptr, j);\n            for (const auto& entry : j.items())\n            {\n                entry.value().do_visit(ptr / entry.key(), fnc);\n            }\n            break;\n        case value_t::array:\n            fnc(ptr, j);\n            for (std::size_t i = 0; i < j.size(); ++i)\n            {\n                j.at(i).do_visit(ptr / std::to_string(i), fnc);\n            }\n            break;\n        case value_t::null:\n        case value_t::string:\n        case value_t::boolean:\n        case value_t::number_integer:\n        case value_t::number_unsigned:\n        case value_t::number_float:\n        case value_t::binary:\n            fnc(ptr, j);\n            break;\n        case value_t::discarded:\n        default:\n            break;\n    }\n}\n\nint main()\n{\n    // create a json object\n    json j;\n    j[\"null\"];\n    j[\"object\"][\"uint\"] = 1U;\n    j[\"object\"].metadata = 21;\n\n    // visit and output\n    j.visit(\n        [&](const json::json_pointer & p,\n            const json & j)\n    {\n        std::cout << (p.empty() ? std::string{\"/\"} : p.to_string())\n                  << \" - metadata = \" << j.metadata << \" -> \" << j.dump() << '\\n';\n    });\n}\n

      Output:

      / - metadata = 42 -> {\"null\":null,\"object\":{\"uint\":1}}\n/null - metadata = 42 -> null\n/object - metadata = 21 -> {\"uint\":1}\n/object/uint - metadata = 42 -> 1\n
      "},{"location":"api/basic_json/json_base_class_t/#version-history","title":"Version history","text":"
      • Added in version 3.12.0.
      "},{"location":"api/basic_json/json_serializer/","title":"nlohmann::basic_json::json_serializer","text":"
      template<typename T, typename SFINAE>\nusing json_serializer = JSONSerializer<T, SFINAE>;\n
      "},{"location":"api/basic_json/json_serializer/#template-parameters","title":"Template parameters","text":"T type to convert; will be used in the to_json/from_json functions SFINAE type to add compile type checks via SFINAE; usually void"},{"location":"api/basic_json/json_serializer/#notes","title":"Notes","text":""},{"location":"api/basic_json/json_serializer/#default-type","title":"Default type","text":"

      The default values for json_serializer is adl_serializer.

      "},{"location":"api/basic_json/json_serializer/#examples","title":"Examples","text":"Example

      The example below shows how a conversion of a non-default-constructible type is implemented via a specialization of the adl_serializer.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nnamespace ns\n{\n// a simple struct to model a person (not default constructible)\nstruct person\n{\n    person(std::string n, std::string a, int aa)\n        : name(std::move(n)), address(std::move(a)), age(aa)\n    {}\n\n    std::string name;\n    std::string address;\n    int age;\n};\n} // namespace ns\n\nnamespace nlohmann\n{\ntemplate <>\nstruct adl_serializer<ns::person>\n{\n    static ns::person from_json(const json& j)\n    {\n        return {j.at(\"name\"), j.at(\"address\"), j.at(\"age\")};\n    }\n\n    // Here's the catch! You must provide a to_json method! Otherwise, you\n    // will not be able to convert person to json, since you fully\n    // specialized adl_serializer on that type\n    static void to_json(json& j, ns::person p)\n    {\n        j[\"name\"] = p.name;\n        j[\"address\"] = p.address;\n        j[\"age\"] = p.age;\n    }\n};\n} // namespace nlohmann\n\nint main()\n{\n    json j;\n    j[\"name\"] = \"Ned Flanders\";\n    j[\"address\"] = \"744 Evergreen Terrace\";\n    j[\"age\"] = 60;\n\n    auto p = j.template get<ns::person>();\n\n    std::cout << p.name << \" (\" << p.age << \") lives in \" << p.address << std::endl;\n}\n

      Output:

      Ned Flanders (60) lives in 744 Evergreen Terrace\n
      "},{"location":"api/basic_json/json_serializer/#version-history","title":"Version history","text":"
      • Since version 2.0.0.
      "},{"location":"api/basic_json/max_size/","title":"nlohmann::basic_json::max_size","text":"
      size_type max_size() const noexcept;\n

      Returns the maximum number of elements a JSON value is able to hold due to system or library implementation limitations, i.e. std::distance(begin(), end()) for the JSON value.

      "},{"location":"api/basic_json/max_size/#return-value","title":"Return value","text":"

      The return value depends on the different types and is defined as follows:

      Value type return value null 0 (same as size()) boolean 1 (same as size()) string 1 (same as size()) number 1 (same as size()) binary 1 (same as size()) object result of function object_t::max_size() array result of function array_t::max_size()"},{"location":"api/basic_json/max_size/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this function never throws exceptions.

      "},{"location":"api/basic_json/max_size/#complexity","title":"Complexity","text":"

      Constant, as long as array_t and object_t satisfy the Container concept; that is, their max_size() functions have constant complexity.

      "},{"location":"api/basic_json/max_size/#notes","title":"Notes","text":"

      This function does not return the maximal length of a string stored as JSON value -- it returns the maximal number of string elements the JSON value can store which is 1.

      "},{"location":"api/basic_json/max_size/#examples","title":"Examples","text":"Example

      The following code calls max_size() on the different value types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n\n    // call max_size()\n    std::cout << j_null.max_size() << '\\n';\n    std::cout << j_boolean.max_size() << '\\n';\n    std::cout << j_number_integer.max_size() << '\\n';\n    std::cout << j_number_float.max_size() << '\\n';\n    std::cout << j_object.max_size() << '\\n';\n    std::cout << j_array.max_size() << '\\n';\n    std::cout << j_string.max_size() << '\\n';\n}\n

      Output:

      0\n1\n1\n1\n115292150460684697\n576460752303423487\n1\n

      Note the output is platform-dependent.

      "},{"location":"api/basic_json/max_size/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      • Extended to return 1 for binary types in version 3.8.0.
      "},{"location":"api/basic_json/merge_patch/","title":"nlohmann::basic_json::merge_patch","text":"
      void merge_patch(const basic_json& apply_patch);\n

      The merge patch format is primarily intended for use with the HTTP PATCH method as a means of describing a set of modifications to a target resource's content. This function applies a merge patch to the current JSON value.

      The function implements the following algorithm from Section 2 of RFC 7396 (JSON Merge Patch):

      define MergePatch(Target, Patch):\n  if Patch is an Object:\n    if Target is not an Object:\n      Target = {} // Ignore the contents and set it to an empty Object\n    for each Name/Value pair in Patch:\n      if Value is null:\n        if Name exists in Target:\n          remove the Name/Value pair from Target\n      else:\n        Target[Name] = MergePatch(Target[Name], Value)\n    return Target\n  else:\n    return Patch\n

      Thereby, Target is the current object; that is, the patch is applied to the current value.

      "},{"location":"api/basic_json/merge_patch/#parameters","title":"Parameters","text":"apply_patch (in) the patch to apply"},{"location":"api/basic_json/merge_patch/#complexity","title":"Complexity","text":"

      Linear in the lengths of apply_patch.

      "},{"location":"api/basic_json/merge_patch/#examples","title":"Examples","text":"Example

      The following code shows how a JSON Merge Patch is applied to a JSON document.

      #include <iostream>\n#include <nlohmann/json.hpp>\n#include <iomanip> // for std::setw\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // the original document\n    json document = R\"({\n                \"title\": \"Goodbye!\",\n                \"author\": {\n                    \"givenName\": \"John\",\n                    \"familyName\": \"Doe\"\n                },\n                \"tags\": [\n                    \"example\",\n                    \"sample\"\n                ],\n                \"content\": \"This will be unchanged\"\n            })\"_json;\n\n    // the patch\n    json patch = R\"({\n                \"title\": \"Hello!\",\n                \"phoneNumber\": \"+01-123-456-7890\",\n                \"author\": {\n                    \"familyName\": null\n                },\n                \"tags\": [\n                    \"example\"\n                ]\n            })\"_json;\n\n    // apply the patch\n    document.merge_patch(patch);\n\n    // output original and patched document\n    std::cout << std::setw(4) << document << std::endl;\n}\n

      Output:

      {\n    \"author\": {\n        \"givenName\": \"John\"\n    },\n    \"content\": \"This will be unchanged\",\n    \"phoneNumber\": \"+01-123-456-7890\",\n    \"tags\": [\n        \"example\"\n    ],\n    \"title\": \"Hello!\"\n}\n
      "},{"location":"api/basic_json/merge_patch/#see-also","title":"See also","text":"
      • RFC 7396 (JSON Merge Patch)
      • patch apply a JSON patch
      "},{"location":"api/basic_json/merge_patch/#version-history","title":"Version history","text":"
      • Added in version 3.0.0.
      "},{"location":"api/basic_json/meta/","title":"nlohmann::basic_json::meta","text":"
      static basic_json meta();\n

      This function returns a JSON object with information about the library, including the version number and information on the platform and compiler.

      "},{"location":"api/basic_json/meta/#return-value","title":"Return value","text":"

      JSON object holding version information

      key description compiler Information on the used compiler. It is an object with the following keys: c++ (the used C++ standard), family (the compiler family; possible values are clang, icc, gcc, ilecpp, msvc, pgcpp, sunpro, and unknown), and version (the compiler version). copyright The copyright line for the library as string. name The name of the library as string. platform The used platform as string. Possible values are win32, linux, apple, unix, and unknown. url The URL of the project as string. version The version of the library. It is an object with the following keys: major, minor, and patch as defined by Semantic Versioning, and string (the version string)."},{"location":"api/basic_json/meta/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes to any JSON value.

      "},{"location":"api/basic_json/meta/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/meta/#examples","title":"Examples","text":"Example

      The following code shows an example output of the meta() function.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // call meta()\n    std::cout << std::setw(4) << json::meta() << '\\n';\n}\n

      Output:

      {\n    \"compiler\": {\n        \"c++\": \"201103\",\n        \"family\": \"gcc\",\n        \"version\": \"12.3.0\"\n    },\n    \"copyright\": \"(C) 2013-2022 Niels Lohmann\",\n    \"name\": \"JSON for Modern C++\",\n    \"platform\": \"apple\",\n    \"url\": \"https://github.com/nlohmann/json\",\n    \"version\": {\n        \"major\": 3,\n        \"minor\": 11,\n        \"patch\": 3,\n        \"string\": \"3.11.3\"\n    }\n}\n

      Note the output is platform-dependent.

      "},{"location":"api/basic_json/meta/#see-also","title":"See also","text":"
      • NLOHMANN_JSON_VERSION_MAJOR/NLOHMANN_JSON_VERSION_MINOR/NLOHMANN_JSON_VERSION_PATCH - library version information
      "},{"location":"api/basic_json/meta/#version-history","title":"Version history","text":"
      • Added in version 2.1.0.
      "},{"location":"api/basic_json/number_float_t/","title":"nlohmann::basic_json::number_float_t","text":"
      using number_float_t = NumberFloatType;\n

      The type used to store JSON numbers (floating-point).

      RFC 8259 describes numbers as follows:

      The representation of numbers is similar to that used in most programming languages. A number is represented in base 10 using decimal digits. It contains an integer component that may be prefixed with an optional minus sign, which may be followed by a fraction part and/or an exponent part. Leading zeros are not allowed. (...) Numeric values that cannot be represented in the grammar below (such as Infinity and NaN) are not permitted.

      This description includes both integer and floating-point numbers. However, C++ allows more precise storage if it is known whether the number is a signed integer, an unsigned integer or a floating-point number. Therefore, three different types, number_integer_t, number_unsigned_t and number_float_t are used.

      To store floating-point numbers in C++, a type is defined by the template parameter NumberFloatType which chooses the type to use.

      "},{"location":"api/basic_json/number_float_t/#notes","title":"Notes","text":""},{"location":"api/basic_json/number_float_t/#default-type","title":"Default type","text":"

      With the default values for NumberFloatType (double), the default value for number_float_t is double.

      "},{"location":"api/basic_json/number_float_t/#default-behavior","title":"Default behavior","text":"
      • The restrictions about leading zeros is not enforced in C++. Instead, leading zeros in floating-point literals will be ignored. Internally, the value will be stored as decimal number. For instance, the C++ floating-point literal 01.2 will be serialized to 1.2. During deserialization, leading zeros yield an error.
      • Not-a-number (NaN) values will be serialized to null.
      "},{"location":"api/basic_json/number_float_t/#limits","title":"Limits","text":"

      RFC 8259 states:

      This specification allows implementations to set limits on the range and precision of numbers accepted. Since software that implements IEEE 754-2008 binary64 (double precision) numbers is generally available and widely used, good interoperability can be achieved by implementations that expect no more precision or range than these provide, in the sense that implementations will approximate JSON numbers within the expected precision.

      This implementation does exactly follow this approach, as it uses double precision floating-point numbers. Note values smaller than -1.79769313486232e+308 and values greater than 1.79769313486232e+308 will be stored as NaN internally and be serialized to null.

      "},{"location":"api/basic_json/number_float_t/#storage","title":"Storage","text":"

      Floating-point number values are stored directly inside a basic_json type.

      "},{"location":"api/basic_json/number_float_t/#examples","title":"Examples","text":"Example

      The following code shows that number_float_t is by default, a typedef to double.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout << std::boolalpha << std::is_same<double, json::number_float_t>::value << std::endl;\n}\n

      Output:

      true\n
      "},{"location":"api/basic_json/number_float_t/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/number_integer_t/","title":"nlohmann::basic_json::number_integer_t","text":"
      using number_integer_t = NumberIntegerType;\n

      The type used to store JSON numbers (integers).

      RFC 8259 describes numbers as follows:

      The representation of numbers is similar to that used in most programming languages. A number is represented in base 10 using decimal digits. It contains an integer component that may be prefixed with an optional minus sign, which may be followed by a fraction part and/or an exponent part. Leading zeros are not allowed. (...) Numeric values that cannot be represented in the grammar below (such as Infinity and NaN) are not permitted.

      This description includes both integer and floating-point numbers. However, C++ allows more precise storage if it is known whether the number is a signed integer, an unsigned integer or a floating-point number. Therefore, three different types, number_integer_t, number_unsigned_t and number_float_t are used.

      To store integer numbers in C++, a type is defined by the template parameter NumberIntegerType which chooses the type to use.

      "},{"location":"api/basic_json/number_integer_t/#notes","title":"Notes","text":""},{"location":"api/basic_json/number_integer_t/#default-type","title":"Default type","text":"

      With the default values for NumberIntegerType (std::int64_t), the default value for number_integer_t is std::int64_t.

      "},{"location":"api/basic_json/number_integer_t/#default-behavior","title":"Default behavior","text":"
      • The restrictions about leading zeros is not enforced in C++. Instead, leading zeros in integer literals lead to an interpretation as octal number. Internally, the value will be stored as decimal number. For instance, the C++ integer literal 010 will be serialized to 8. During deserialization, leading zeros yield an error.
      • Not-a-number (NaN) values will be serialized to null.
      "},{"location":"api/basic_json/number_integer_t/#limits","title":"Limits","text":"

      RFC 8259 specifies:

      An implementation may set limits on the range and precision of numbers.

      When the default type is used, the maximal integer number that can be stored is 9223372036854775807 (INT64_MAX) and the minimal integer number that can be stored is -9223372036854775808 (INT64_MIN). Integer numbers that are out of range will yield over/underflow when used in a constructor. During deserialization, too large or small integer numbers will be automatically be stored as number_unsigned_t or number_float_t.

      RFC 8259 further states:

      Note that when such software is used, numbers that are integers and are in the range [-2^{53}+1, 2^{53}-1] are interoperable in the sense that implementations will agree exactly on their numeric values.

      As this range is a subrange of the exactly supported range [INT64_MIN, INT64_MAX], this class's integer type is interoperable.

      "},{"location":"api/basic_json/number_integer_t/#storage","title":"Storage","text":"

      Integer number values are stored directly inside a basic_json type.

      "},{"location":"api/basic_json/number_integer_t/#examples","title":"Examples","text":"Example

      The following code shows that number_integer_t is by default, a typedef to std::int64_t.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout << std::boolalpha << std::is_same<std::int64_t, json::number_integer_t>::value << std::endl;\n}\n

      Output:

      true\n
      "},{"location":"api/basic_json/number_integer_t/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/number_unsigned_t/","title":"nlohmann::basic_json::number_unsigned_t","text":"
      using number_unsigned_t = NumberUnsignedType;\n

      The type used to store JSON numbers (unsigned).

      RFC 8259 describes numbers as follows:

      The representation of numbers is similar to that used in most programming languages. A number is represented in base 10 using decimal digits. It contains an integer component that may be prefixed with an optional minus sign, which may be followed by a fraction part and/or an exponent part. Leading zeros are not allowed. (...) Numeric values that cannot be represented in the grammar below (such as Infinity and NaN) are not permitted.

      This description includes both integer and floating-point numbers. However, C++ allows more precise storage if it is known whether the number is a signed integer, an unsigned integer or a floating-point number. Therefore, three different types, number_integer_t, number_unsigned_t and number_float_t are used.

      To store unsigned integer numbers in C++, a type is defined by the template parameter NumberUnsignedType which chooses the type to use.

      "},{"location":"api/basic_json/number_unsigned_t/#notes","title":"Notes","text":""},{"location":"api/basic_json/number_unsigned_t/#default-type","title":"Default type","text":"

      With the default values for NumberUnsignedType (std::uint64_t), the default value for number_unsigned_t is std::uint64_t.

      "},{"location":"api/basic_json/number_unsigned_t/#default-behavior","title":"Default behavior","text":"
      • The restrictions about leading zeros is not enforced in C++. Instead, leading zeros in integer literals lead to an interpretation as octal number. Internally, the value will be stored as decimal number. For instance, the C++ integer literal 010 will be serialized to 8. During deserialization, leading zeros yield an error.
      • Not-a-number (NaN) values will be serialized to null.
      "},{"location":"api/basic_json/number_unsigned_t/#limits","title":"Limits","text":"

      RFC 8259 specifies:

      An implementation may set limits on the range and precision of numbers.

      When the default type is used, the maximal integer number that can be stored is 18446744073709551615 (UINT64_MAX) and the minimal integer number that can be stored is 0. Integer numbers that are out of range will yield over/underflow when used in a constructor. During deserialization, too large or small integer numbers will be automatically be stored as number_integer_t or number_float_t.

      RFC 8259 further states:

      Note that when such software is used, numbers that are integers and are in the range \\f[-2^{53}+1, 2^{53}-1]\\f are interoperable in the sense that implementations will agree exactly on their numeric values.

      As this range is a subrange (when considered in conjunction with the number_integer_t type) of the exactly supported range [0, UINT64_MAX], this class's integer type is interoperable.

      "},{"location":"api/basic_json/number_unsigned_t/#storage","title":"Storage","text":"

      Integer number values are stored directly inside a basic_json type.

      "},{"location":"api/basic_json/number_unsigned_t/#examples","title":"Examples","text":"Example

      The following code shows that number_unsigned_t is by default, a typedef to std::uint64_t.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout << std::boolalpha << std::is_same<std::uint64_t, json::number_unsigned_t>::value << std::endl;\n}\n

      Output:

      true\n
      "},{"location":"api/basic_json/number_unsigned_t/#version-history","title":"Version history","text":"
      • Added in version 2.0.0.
      "},{"location":"api/basic_json/object/","title":"nlohmann::basic_json::object","text":"
      static basic_json object(initializer_list_t init = {});\n

      Creates a JSON object value from a given initializer list. The initializer lists elements must be pairs, and their first elements must be strings. If the initializer list is empty, the empty object {} is created.

      "},{"location":"api/basic_json/object/#parameters","title":"Parameters","text":"init (in) initializer list with JSON values to create an object from (optional)"},{"location":"api/basic_json/object/#return-value","title":"Return value","text":"

      JSON object value

      "},{"location":"api/basic_json/object/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

      "},{"location":"api/basic_json/object/#exceptions","title":"Exceptions","text":"

      Throws type_error.301 if init is not a list of pairs whose first elements are strings. In this case, no object can be created. When such a value is passed to basic_json(initializer_list_t, bool, value_t), an array would have been created from the passed initializer list init. See example below.

      "},{"location":"api/basic_json/object/#complexity","title":"Complexity","text":"

      Linear in the size of init.

      "},{"location":"api/basic_json/object/#notes","title":"Notes","text":"

      This function is only added for symmetry reasons. In contrast to the related function array(initializer_list_t), there are no cases which can only be expressed by this function. That is, any initializer list init can also be passed to the initializer list constructor basic_json(initializer_list_t, bool, value_t).

      "},{"location":"api/basic_json/object/#examples","title":"Examples","text":"Example

      The following code shows an example for the object function.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON objects\n    json j_no_init_list = json::object();\n    json j_empty_init_list = json::object({});\n    json j_list_of_pairs = json::object({ {\"one\", 1}, {\"two\", 2} });\n\n    // serialize the JSON objects\n    std::cout << j_no_init_list << '\\n';\n    std::cout << j_empty_init_list << '\\n';\n    std::cout << j_list_of_pairs << '\\n';\n\n    // example for an exception\n    try\n    {\n        // can only create an object from a list of pairs\n        json j_invalid_object = json::object({{ \"one\", 1, 2 }});\n    }\n    catch (const json::type_error& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n}\n

      Output:

      {}\n{}\n{\"one\":1,\"two\":2}\n[json.exception.type_error.301] cannot create object from initializer list\n
      "},{"location":"api/basic_json/object/#see-also","title":"See also","text":"
      • basic_json(initializer_list_t) - create a JSON value from an initializer list
      • array - create a JSON array value from an initializer list
      "},{"location":"api/basic_json/object/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/object_comparator_t/","title":"nlohmann::basic_json::object_comparator_t","text":"
      using object_comparator_t = typename object_t::key_compare;\n// or\nusing object_comparator_t = default_object_comparator_t;\n

      The comparator used by object_t. Defined as typename object_t::key_compare if available, and default_object_comparator_t otherwise.

      "},{"location":"api/basic_json/object_comparator_t/#examples","title":"Examples","text":"Example

      The example below demonstrates the used object comparator.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout << std::boolalpha\n              << \"json::object_comparator_t(\\\"one\\\", \\\"two\\\") = \" << json::object_comparator_t{}(\"one\", \"two\") << \"\\n\"\n              << \"json::object_comparator_t(\\\"three\\\", \\\"four\\\") = \" << json::object_comparator_t{}(\"three\", \"four\") << std::endl;\n}\n

      Output:

      json::object_comparator_t(\"one\", \"two\") = true\njson::object_comparator_t(\"three\", \"four\") = false\n
      "},{"location":"api/basic_json/object_comparator_t/#version-history","title":"Version history","text":"
      • Added in version 3.0.0.
      • Changed to be conditionally defined as typename object_t::key_compare or default_object_comparator_t in version 3.11.0.
      "},{"location":"api/basic_json/object_t/","title":"nlohmann::basic_json::object_t","text":"
      using object_t = ObjectType<StringType,\n                            basic_json,\n                            default_object_comparator_t,\n                            AllocatorType<std::pair<const StringType, basic_json>>>;\n

      The type used to store JSON objects.

      RFC 8259 describes JSON objects as follows:

      An object is an unordered collection of zero or more name/value pairs, where a name is a string and a value is a string, number, boolean, null, object, or array.

      To store objects in C++, a type is defined by the template parameters described below.

      "},{"location":"api/basic_json/object_t/#template-parameters","title":"Template parameters","text":"ObjectType the container to store objects (e.g., std::map or std::unordered_map) StringType the type of the keys or names (e.g., std::string). The comparison function std::less<StringType> is used to order elements inside the container. AllocatorType the allocator to use for objects (e.g., std::allocator)"},{"location":"api/basic_json/object_t/#notes","title":"Notes","text":""},{"location":"api/basic_json/object_t/#default-type","title":"Default type","text":"

      With the default values for ObjectType (std::map), StringType (std::string), and AllocatorType (std::allocator), the default value for object_t is:

      // until C++14\nstd::map<\n  std::string, // key_type\n  basic_json, // value_type\n  std::less<std::string>, // key_compare\n  std::allocator<std::pair<const std::string, basic_json>> // allocator_type\n>\n\n// since C++14\nstd::map<\n  std::string, // key_type\n  basic_json, // value_type\n  std::less<>, // key_compare\n  std::allocator<std::pair<const std::string, basic_json>> // allocator_type\n>\n

      See default_object_comparator_t for more information.

      "},{"location":"api/basic_json/object_t/#behavior","title":"Behavior","text":"

      The choice of object_t influences the behavior of the JSON class. With the default type, objects have the following behavior:

      • When all names are unique, objects will be interoperable in the sense that all software implementations receiving that object will agree on the name-value mappings.
      • When the names within an object are not unique, it is unspecified which one of the values for a given key will be chosen. For instance, {\"key\": 2, \"key\": 1} could be equal to either {\"key\": 1} or {\"key\": 2}.
      • Internally, name/value pairs are stored in lexicographical order of the names. Objects will also be serialized (see dump) in this order. For instance, {\"b\": 1, \"a\": 2} and {\"a\": 2, \"b\": 1} will be stored and serialized as {\"a\": 2, \"b\": 1}.
      • When comparing objects, the order of the name/value pairs is irrelevant. This makes objects interoperable in the sense that they will not be affected by these differences. For instance, {\"b\": 1, \"a\": 2} and {\"a\": 2, \"b\": 1} will be treated as equal.
      "},{"location":"api/basic_json/object_t/#limits","title":"Limits","text":"

      RFC 8259 specifies:

      An implementation may set limits on the maximum depth of nesting.

      In this class, the object's limit of nesting is not explicitly constrained. However, a maximum depth of nesting may be introduced by the compiler or runtime environment. A theoretical limit can be queried by calling the max_size function of a JSON object.

      "},{"location":"api/basic_json/object_t/#storage","title":"Storage","text":"

      Objects are stored as pointers in a basic_json type. That is, for any access to object values, a pointer of type object_t* must be dereferenced.

      "},{"location":"api/basic_json/object_t/#object-key-order","title":"Object key order","text":"

      The order name/value pairs are added to the object is not preserved by the library. Therefore, iterating an object may return name/value pairs in a different order than they were originally stored. In fact, keys will be traversed in alphabetical order as std::map with std::less is used by default. Please note this behavior conforms to RFC 8259, because any order implements the specified \"unordered\" nature of JSON objects.

      "},{"location":"api/basic_json/object_t/#examples","title":"Examples","text":"Example

      The following code shows that object_t is by default, a typedef to std::map<json::string_t, json>.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout << std::boolalpha << std::is_same<std::map<json::string_t, json>, json::object_t>::value << std::endl;\n}\n

      Output:

      true\n
      "},{"location":"api/basic_json/object_t/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/operator%2B%3D/","title":"nlohmann::basic_json::operator+=","text":"
      // (1)\nreference operator+=(basic_json&& val);\nreference operator+=(const basic_json& val);\n\n// (2)\nreference operator+=(const typename object_t::value_type& val);\n\n// (3)\nreference operator+=(initializer_list_t init);\n
      1. Appends the given element val to the end of the JSON array. If the function is called on a JSON null value, an empty array is created before appending val.

      2. Inserts the given element val to the JSON object. If the function is called on a JSON null value, an empty object is created before inserting val.

      3. This function allows using operator+= with an initializer list. In case

        1. the current value is an object,
        2. the initializer list init contains only two elements, and
        3. the first element of init is a string,

        init is converted into an object element and added using operator+=(const typename object_t::value_type&). Otherwise, init is converted to a JSON value and added using operator+=(basic_json&&).

      "},{"location":"api/basic_json/operator%2B%3D/#iterator-invalidation","title":"Iterator invalidation","text":"

      For all cases where an element is added to an array, a reallocation can happen, in which case all iterators (including the end() iterator) and all references to the elements are invalidated. Otherwise, only the end() iterator is invalidated.

      For ordered_json, also adding an element to an object can yield a reallocation which again invalidates all iterators and all references.

      "},{"location":"api/basic_json/operator%2B%3D/#parameters","title":"Parameters","text":"val (in) the value to add to the JSON array/object init (in) an initializer list"},{"location":"api/basic_json/operator%2B%3D/#return-value","title":"Return value","text":"

      *this

      "},{"location":"api/basic_json/operator%2B%3D/#exceptions","title":"Exceptions","text":"

      All functions can throw the following exception: - Throws type_error.308 when called on a type other than JSON array or null; example: \"cannot use operator+=() with number\"

      "},{"location":"api/basic_json/operator%2B%3D/#complexity","title":"Complexity","text":"
      1. Amortized constant.
      2. Logarithmic in the size of the container, O(log(size())).
      3. Linear in the size of the initializer list init.
      "},{"location":"api/basic_json/operator%2B%3D/#notes","title":"Notes","text":"

      (3) This function is required to resolve an ambiguous overload error, because pairs like {\"key\", \"value\"} can be both interpreted as object_t::value_type or std::initializer_list<basic_json>, see #235 for more information.

      "},{"location":"api/basic_json/operator%2B%3D/#examples","title":"Examples","text":"Example: (1) add element to array

      The example shows how push_back() and += can be used to add elements to a JSON array. Note how the null value was silently converted to a JSON array.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json array = {1, 2, 3, 4, 5};\n    json null;\n\n    // print values\n    std::cout << array << '\\n';\n    std::cout << null << '\\n';\n\n    // add values\n    array.push_back(6);\n    array += 7;\n    null += \"first\";\n    null += \"second\";\n\n    // print values\n    std::cout << array << '\\n';\n    std::cout << null << '\\n';\n}\n

      Output:

      [1,2,3,4,5]\nnull\n[1,2,3,4,5,6,7]\n[\"first\",\"second\"]\n
      Example: (2) add element to object

      The example shows how push_back() and += can be used to add elements to a JSON object. Note how the null value was silently converted to a JSON object.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json object = {{\"one\", 1}, {\"two\", 2}};\n    json null;\n\n    // print values\n    std::cout << object << '\\n';\n    std::cout << null << '\\n';\n\n    // add values\n    object.push_back(json::object_t::value_type(\"three\", 3));\n    object += json::object_t::value_type(\"four\", 4);\n    null += json::object_t::value_type(\"A\", \"a\");\n    null += json::object_t::value_type(\"B\", \"b\");\n\n    // print values\n    std::cout << object << '\\n';\n    std::cout << null << '\\n';\n}\n

      Output:

      {\"one\":1,\"two\":2}\nnull\n{\"four\":4,\"one\":1,\"three\":3,\"two\":2}\n{\"A\":\"a\",\"B\":\"b\"}\n
      Example: (3) add to object from initializer list

      The example shows how initializer lists are treated as objects when possible.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json object = {{\"one\", 1}, {\"two\", 2}};\n    json null;\n\n    // print values\n    std::cout << object << '\\n';\n    std::cout << null << '\\n';\n\n    // add values:\n    object.push_back({\"three\", 3});  // object is extended\n    object += {\"four\", 4};           // object is extended\n    null.push_back({\"five\", 5});     // null is converted to array\n\n    // print values\n    std::cout << object << '\\n';\n    std::cout << null << '\\n';\n\n    // would throw:\n    //object.push_back({1, 2, 3});\n}\n

      Output:

      {\"one\":1,\"two\":2}\nnull\n{\"four\":4,\"one\":1,\"three\":3,\"two\":2}\n[[\"five\",5]]\n
      "},{"location":"api/basic_json/operator%2B%3D/#see-also","title":"See also","text":"
      • emplace_back add a value to an array
      • push_back add a value to an array/object
      "},{"location":"api/basic_json/operator%2B%3D/#version-history","title":"Version history","text":"
      1. Since version 1.0.0.
      2. Since version 1.0.0.
      3. Since version 2.0.0.
      "},{"location":"api/basic_json/operator%3D/","title":"nlohmann::basic_json::operator=","text":"
      basic_json& operator=(basic_json other) noexcept (\n    std::is_nothrow_move_constructible<value_t>::value &&\n    std::is_nothrow_move_assignable<value_t>::value &&\n    std::is_nothrow_move_constructible<json_value>::value &&\n    std::is_nothrow_move_assignable<json_value>::value\n);\n

      Copy assignment operator. Copies a JSON value via the \"copy and swap\" strategy: It is expressed in terms of the copy constructor, destructor, and the swap() member function.

      "},{"location":"api/basic_json/operator%3D/#parameters","title":"Parameters","text":"other (in) value to copy from"},{"location":"api/basic_json/operator%3D/#complexity","title":"Complexity","text":"

      Linear.

      "},{"location":"api/basic_json/operator%3D/#examples","title":"Examples","text":"Example

      The code below shows and example for the copy assignment. It creates a copy of value a which is then swapped with b. Finally, the copy of a (which is the null value after the swap) is destroyed.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json a = 23;\n    json b = 42;\n\n    // copy-assign a to b\n    b = a;\n\n    // serialize the JSON arrays\n    std::cout << a << '\\n';\n    std::cout << b << '\\n';\n}\n

      Output:

      23\n23\n
      "},{"location":"api/basic_json/operator%3D/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/operator%5B%5D/","title":"nlohmann::basic_json::operator[]","text":"
      // (1)\nreference operator[](size_type idx);\nconst_reference operator[](size_type idx) const;\n\n// (2)\nreference operator[](typename object_t::key_type key);\nconst_reference operator[](const typename object_t::key_type& key) const;\n\n// (3)\ntemplate<typename KeyType>\nreference operator[](KeyType&& key);\ntemplate<typename KeyType>\nconst_reference operator[](KeyType&& key) const;\n\n// (4)\nreference operator[](const json_pointer& ptr);\nconst_reference operator[](const json_pointer& ptr) const;\n
      1. Returns a reference to the array element at specified location idx.
      2. Returns a reference to the object element with specified key key. The non-const qualified overload takes the key by value.
      3. See 2. This overload is only available if KeyType is comparable with typename object_t::key_type and typename object_comparator_t::is_transparent denotes a type.
      4. Returns a reference to the element with specified JSON pointer ptr.
      "},{"location":"api/basic_json/operator%5B%5D/#template-parameters","title":"Template parameters","text":"KeyType A type for an object key other than json_pointer that is comparable with string_t using object_comparator_t. This can also be a string view (C++17)."},{"location":"api/basic_json/operator%5B%5D/#iterator-invalidation","title":"Iterator invalidation","text":"

      For the non-const versions 1. and 4., when passing an array index that does not exist, it is created and filled with a null value before a reference to it is returned. For this, a reallocation can happen, in which case all iterators (including the end() iterator) and all references to the elements are invalidated.

      For ordered_json, also passing an object key to the non-const versions 2., 3., and 4., a reallocation can happen which again invalidates all iterators and all references.

      "},{"location":"api/basic_json/operator%5B%5D/#parameters","title":"Parameters","text":"idx (in) index of the element to access key (in) object key of the element to access ptr (in) JSON pointer to the desired element"},{"location":"api/basic_json/operator%5B%5D/#return-value","title":"Return value","text":"
      1. (const) reference to the element at index idx
      2. (const) reference to the element at key key
      3. (const) reference to the element at key key
      4. (const) reference to the element pointed to by ptr
      "},{"location":"api/basic_json/operator%5B%5D/#exception-safety","title":"Exception safety","text":"

      Strong exception safety: if an exception occurs, the original value stays intact.

      "},{"location":"api/basic_json/operator%5B%5D/#exceptions","title":"Exceptions","text":"
      1. The function can throw the following exceptions:
        • Throws type_error.305 if the JSON value is not an array or null; in that case, using the [] operator with an index makes no sense.
      2. The function can throw the following exceptions:
        • Throws type_error.305 if the JSON value is not an object or null; in that case, using the [] operator with a key makes no sense.
      3. See 2.
      4. The function can throw the following exceptions:
        • Throws parse_error.106 if an array index in the passed JSON pointer ptr begins with '0'.
        • Throws parse_error.109 if an array index in the passed JSON pointer ptr is not a number.
        • Throws out_of_range.402 if the array index '-' is used in the passed JSON pointer ptr for the const version.
        • Throws out_of_range.404 if the JSON pointer ptr can not be resolved.
      "},{"location":"api/basic_json/operator%5B%5D/#complexity","title":"Complexity","text":"
      1. Constant if idx is in the range of the array. Otherwise, linear in idx - size().
      2. Logarithmic in the size of the container.
      3. Logarithmic in the size of the container.
      4. Logarithmic in the size of the container.
      "},{"location":"api/basic_json/operator%5B%5D/#notes","title":"Notes","text":"

      Undefined behavior and runtime assertions

      1. If the element with key idx does not exist, the behavior is undefined.
      2. If the element with key key does not exist, the behavior is undefined and is guarded by a runtime assertion!
      1. The non-const version may add values: If idx is beyond the range of the array (i.e., idx >= size()), then the array is silently filled up with null values to make idx a valid reference to the last stored element. In case the value was null before, it is converted to an array.

      2. If key is not found in the object, then it is silently added to the object and filled with a null value to make key a valid reference. In case the value was null before, it is converted to an object.

      3. See 2.

      4. null values are created in arrays and objects if necessary.

        In particular:

        • If the JSON pointer points to an object key that does not exist, it is created and filled with a null value before a reference to it is returned.
        • If the JSON pointer points to an array index that does not exist, it is created and filled with a null value before a reference to it is returned. All indices between the current maximum and the given index are also filled with null.
        • The special value - is treated as a synonym for the index past the end.
      "},{"location":"api/basic_json/operator%5B%5D/#examples","title":"Examples","text":"Example: (1) access specified array element

      The example below shows how array elements can be read and written using [] operator. Note the addition of null values.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON array\n    json array = {1, 2, 3, 4, 5};\n\n    // output element at index 3 (fourth element)\n    std::cout << array[3] << '\\n';\n\n    // change last element to 6\n    array[array.size() - 1] = 6;\n\n    // output changed array\n    std::cout << array << '\\n';\n\n    // write beyond array limit\n    array[10] = 11;\n\n    // output changed array\n    std::cout << array << '\\n';\n}\n

      Output:

      4\n[1,2,3,4,6]\n[1,2,3,4,6,null,null,null,null,null,11]\n
      Example: (1) access specified array element (const)

      The example below shows how array elements can be read using the [] operator.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON array\n    const json array = {\"first\", \"2nd\", \"third\", \"fourth\"};\n\n    // output element at index 2 (third element)\n    std::cout << array.at(2) << '\\n';\n}\n

      Output:

      \"third\"\n
      Example: (2) access specified object element

      The example below shows how object elements can be read and written using the [] operator.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    json object =\n    {\n        {\"one\", 1}, {\"two\", 2}, {\"three\", 2.9}\n    };\n\n    // output element with key \"two\"\n    std::cout << object[\"two\"] << \"\\n\\n\";\n\n    // change element with key \"three\"\n    object[\"three\"] = 3;\n\n    // output changed array\n    std::cout << std::setw(4) << object << \"\\n\\n\";\n\n    // mention nonexisting key\n    object[\"four\"];\n\n    // write to nonexisting key\n    object[\"five\"][\"really\"][\"nested\"] = true;\n\n    // output changed object\n    std::cout << std::setw(4) << object << '\\n';\n}\n

      Output:

      2\n\n{\n    \"one\": 1,\n    \"three\": 3,\n    \"two\": 2\n}\n\n{\n    \"five\": {\n        \"really\": {\n            \"nested\": true\n        }\n    },\n    \"four\": null,\n    \"one\": 1,\n    \"three\": 3,\n    \"two\": 2\n}\n
      Example: (2) access specified object element (const)

      The example below shows how object elements can be read using the [] operator.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    const json object =\n    {\n        {\"one\", 1}, {\"two\", 2}, {\"three\", 2.9}\n    };\n\n    // output element with key \"two\"\n    std::cout << object[\"two\"] << '\\n';\n}\n

      Output:

      2\n
      Example: (3) access specified object element using string_view

      The example below shows how object elements can be read using the [] operator.

      #include <iostream>\n#include <iomanip>\n#include <string_view>\n#include <nlohmann/json.hpp>\n\nusing namespace std::string_view_literals;\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    json object =\n    {\n        {\"one\", 1}, {\"two\", 2}, {\"three\", 2.9}\n    };\n\n    // output element with key \"two\"\n    std::cout << object[\"two\"sv] << \"\\n\\n\";\n\n    // change element with key \"three\"\n    object[\"three\"sv] = 3;\n\n    // output changed array\n    std::cout << std::setw(4) << object << \"\\n\\n\";\n\n    // mention nonexisting key\n    object[\"four\"sv];\n\n    // write to nonexisting key\n    object[\"five\"sv][\"really\"sv][\"nested\"sv] = true;\n\n    // output changed object\n    std::cout << std::setw(4) << object << '\\n';\n}\n

      Output:

      2\n\n{\n    \"one\": 1,\n    \"three\": 3,\n    \"two\": 2\n}\n\n{\n    \"five\": {\n        \"really\": {\n            \"nested\": true\n        }\n    },\n    \"four\": null,\n    \"one\": 1,\n    \"three\": 3,\n    \"two\": 2\n}\n
      Example: (3) access specified object element using string_view (const)

      The example below shows how object elements can be read using the [] operator.

      #include <iostream>\n#include <string_view>\n#include <nlohmann/json.hpp>\n\nusing namespace std::string_view_literals;\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    const json object =\n    {\n        {\"one\", 1}, {\"two\", 2}, {\"three\", 2.9}\n    };\n\n    // output element with key \"two\"\n    std::cout << object[\"two\"sv] << '\\n';\n}\n

      Output:

      2\n
      Example: (4) access specified element via JSON Pointer

      The example below shows how values can be read and written using JSON Pointers.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON value\n    json j =\n    {\n        {\"number\", 1}, {\"string\", \"foo\"}, {\"array\", {1, 2}}\n    };\n\n    // read-only access\n\n    // output element with JSON pointer \"/number\"\n    std::cout << j[\"/number\"_json_pointer] << '\\n';\n    // output element with JSON pointer \"/string\"\n    std::cout << j[\"/string\"_json_pointer] << '\\n';\n    // output element with JSON pointer \"/array\"\n    std::cout << j[\"/array\"_json_pointer] << '\\n';\n    // output element with JSON pointer \"/array/1\"\n    std::cout << j[\"/array/1\"_json_pointer] << '\\n';\n\n    // writing access\n\n    // change the string\n    j[\"/string\"_json_pointer] = \"bar\";\n    // output the changed string\n    std::cout << j[\"string\"] << '\\n';\n\n    // \"change\" a nonexisting object entry\n    j[\"/boolean\"_json_pointer] = true;\n    // output the changed object\n    std::cout << j << '\\n';\n\n    // change an array element\n    j[\"/array/1\"_json_pointer] = 21;\n    // \"change\" an array element with nonexisting index\n    j[\"/array/4\"_json_pointer] = 44;\n    // output the changed array\n    std::cout << j[\"array\"] << '\\n';\n\n    // \"change\" the array element past the end\n    j[\"/array/-\"_json_pointer] = 55;\n    // output the changed array\n    std::cout << j[\"array\"] << '\\n';\n}\n

      Output:

      1\n\"foo\"\n[1,2]\n2\n\"bar\"\n{\"array\":[1,2],\"boolean\":true,\"number\":1,\"string\":\"bar\"}\n[1,21,null,null,44]\n[1,21,null,null,44,55]\n
      Example: (4) access specified element via JSON Pointer (const)

      The example below shows how values can be read using JSON Pointers.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON value\n    const json j =\n    {\n        {\"number\", 1}, {\"string\", \"foo\"}, {\"array\", {1, 2}}\n    };\n\n    // read-only access\n\n    // output element with JSON pointer \"/number\"\n    std::cout << j[\"/number\"_json_pointer] << '\\n';\n    // output element with JSON pointer \"/string\"\n    std::cout << j[\"/string\"_json_pointer] << '\\n';\n    // output element with JSON pointer \"/array\"\n    std::cout << j[\"/array\"_json_pointer] << '\\n';\n    // output element with JSON pointer \"/array/1\"\n    std::cout << j[\"/array/1\"_json_pointer] << '\\n';\n}\n

      Output:

      1\n\"foo\"\n[1,2]\n2\n
      "},{"location":"api/basic_json/operator%5B%5D/#see-also","title":"See also","text":"
      • documentation on unchecked access
      • documentation on runtime assertions
      • see at for access by reference with range checking
      • see value for access with default value
      "},{"location":"api/basic_json/operator%5B%5D/#version-history","title":"Version history","text":"
      1. Added in version 1.0.0.
      2. Added in version 1.0.0. Added overloads for T* key in version 1.1.0. Removed overloads for T* key (replaced by 3) in version 3.11.0.
      3. Added in version 3.11.0.
      4. Added in version 2.0.0.
      "},{"location":"api/basic_json/operator_ValueType/","title":"nlohmann::basic_json::operator ValueType","text":"
      template<typename ValueType>\nJSON_EXPLICIT operator ValueType() const;\n

      Implicit type conversion between the JSON value and a compatible value. The call is realized by calling get(). See Notes for the meaning of JSON_EXPLICIT.

      "},{"location":"api/basic_json/operator_ValueType/#template-parameters","title":"Template parameters","text":"ValueType the value type to return"},{"location":"api/basic_json/operator_ValueType/#return-value","title":"Return value","text":"

      copy of the JSON value, converted to ValueType

      "},{"location":"api/basic_json/operator_ValueType/#exceptions","title":"Exceptions","text":"

      Depends on what json_serializer<ValueType> from_json() method throws

      "},{"location":"api/basic_json/operator_ValueType/#complexity","title":"Complexity","text":"

      Linear in the size of the JSON value.

      "},{"location":"api/basic_json/operator_ValueType/#notes","title":"Notes","text":"

      Definition of JSON_EXPLICIT

      By default JSON_EXPLICIT is defined to the empty string, so the signature is:

      template<typename ValueType>\noperator ValueType() const;\n

      If JSON_USE_IMPLICIT_CONVERSIONS is set to 0, JSON_EXPLICIT is defined to explicit:

      template<typename ValueType>\nexplicit operator ValueType() const;\n

      That is, implicit conversions can be switched off by defining JSON_USE_IMPLICIT_CONVERSIONS to 0.

      Future behavior change

      Implicit conversions will be switched off by default in the next major release of the library. That is, JSON_EXPLICIT will be set to explicit by default.

      You can prepare existing code by already defining JSON_USE_IMPLICIT_CONVERSIONS to 0 and replace any implicit conversions with calls to get.

      "},{"location":"api/basic_json/operator_ValueType/#examples","title":"Examples","text":"Example

      The example below shows several conversions from JSON values to other types. There are a few things to note: (1) Floating-point numbers can be converted to integers, (2) A JSON array can be converted to a standard std::vector<short>, (3) A JSON object can be converted to C++ associative containers such as std::unordered_map<std::string, json>.

      #include <iostream>\n#include <unordered_map>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON value with different types\n    json json_types =\n    {\n        {\"boolean\", true},\n        {\n            \"number\", {\n                {\"integer\", 42},\n                {\"floating-point\", 17.23}\n            }\n        },\n        {\"string\", \"Hello, world!\"},\n        {\"array\", {1, 2, 3, 4, 5}},\n        {\"null\", nullptr}\n    };\n\n    // use implicit conversions\n    bool v1 = json_types[\"boolean\"];\n    int v2 = json_types[\"number\"][\"integer\"];\n    short v3 = json_types[\"number\"][\"integer\"];\n    float v4 = json_types[\"number\"][\"floating-point\"];\n    int v5 = json_types[\"number\"][\"floating-point\"];\n    std::string v6 = json_types[\"string\"];\n    std::vector<short> v7 = json_types[\"array\"];\n    std::unordered_map<std::string, json> v8 = json_types;\n\n    // print the conversion results\n    std::cout << v1 << '\\n';\n    std::cout << v2 << ' ' << v3 << '\\n';\n    std::cout << v4 << ' ' << v5 << '\\n';\n    std::cout << v6 << '\\n';\n\n    for (auto i : v7)\n    {\n        std::cout << i << ' ';\n    }\n    std::cout << \"\\n\\n\";\n\n    for (auto i : v8)\n    {\n        std::cout << i.first << \": \" << i.second << '\\n';\n    }\n\n    // example for an exception\n    try\n    {\n        bool v1 = json_types[\"string\"];\n    }\n    catch (const json::type_error& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n}\n

      Output:

      1\n42 42\n17.23 17\nHello, world!\n1 2 3 4 5 \n\nstring: \"Hello, world!\"\nnumber: {\"floating-point\":17.23,\"integer\":42}\nnull: null\nboolean: true\narray: [1,2,3,4,5]\n[json.exception.type_error.302] type must be boolean, but is string\n
      "},{"location":"api/basic_json/operator_ValueType/#version-history","title":"Version history","text":"
      • Since version 1.0.0.
      • Macros JSON_EXPLICIT/JSON_USE_IMPLICIT_CONVERSIONS added in version 3.9.0.
      "},{"location":"api/basic_json/operator_eq/","title":"nlohmann::basic_json::operator==","text":"
      // until C++20\nbool operator==(const_reference lhs, const_reference rhs) noexcept;   // (1)\n\ntemplate<typename ScalarType>\nbool operator==(const_reference lhs, const ScalarType rhs) noexcept;  // (2)\n\ntemplate<typename ScalarType>\nbool operator==(ScalarType lhs, const const_reference rhs) noexcept;  // (2)\n\n// since C++20\nclass basic_json {\n    bool operator==(const_reference rhs) const noexcept;              // (1)\n\n    template<typename ScalarType>\n    bool operator==(ScalarType rhs) const noexcept;                   // (2)\n};\n
      1. Compares two JSON values for equality according to the following rules:

        • Two JSON values are equal if (1) neither value is discarded, or (2) they are of the same type and their stored values are the same according to their respective operator==.
        • Integer and floating-point numbers are automatically converted before comparison.
      2. Compares a JSON value and a scalar or a scalar and a JSON value for equality by converting the scalar to a JSON value and comparing both JSON values according to 1.

      "},{"location":"api/basic_json/operator_eq/#template-parameters","title":"Template parameters","text":"ScalarType a scalar type according to std::is_scalar<ScalarType>::value"},{"location":"api/basic_json/operator_eq/#parameters","title":"Parameters","text":"lhs (in) first value to consider rhs (in) second value to consider"},{"location":"api/basic_json/operator_eq/#return-value","title":"Return value","text":"

      whether the values lhs/*this and rhs are equal

      "},{"location":"api/basic_json/operator_eq/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this function never throws exceptions.

      "},{"location":"api/basic_json/operator_eq/#complexity","title":"Complexity","text":"

      Linear.

      "},{"location":"api/basic_json/operator_eq/#notes","title":"Notes","text":"

      Comparing special values

      • NaN values are unordered within the domain of numbers. The following comparisons all yield false:
        1. Comparing a NaN with itself.
        2. Comparing a NaN with another NaN.
        3. Comparing a NaN and any other number.
      • JSON null values are all equal.
      • Discarded values never compare equal to themselves.

      Comparing floating-point numbers

      Floating-point numbers inside JSON values numbers are compared with json::number_float_t::operator== which is double::operator== by default. To compare floating-point while respecting an epsilon, an alternative comparison function could be used, for instance

      template<typename T, typename = typename std::enable_if<std::is_floating_point<T>::value, T>::type>\ninline bool is_same(T a, T b, T epsilon = std::numeric_limits<T>::epsilon()) noexcept\n{\n    return std::abs(a - b) <= epsilon;\n}\n

      Or you can self-defined operator equal function like this:

      bool my_equal(const_reference lhs, const_reference rhs)\n{\n    const auto lhs_type lhs.type();\n    const auto rhs_type rhs.type();\n    if (lhs_type == rhs_type)\n    {\n        switch(lhs_type)\n            // self_defined case\n            case value_t::number_float:\n                return std::abs(lhs - rhs) <= std::numeric_limits<float>::epsilon();\n            // other cases remain the same with the original\n            ...\n    }\n...\n}\n

      Comparing different basic_json specializations

      Comparing different basic_json specializations can have surprising effects. For instance, the result of comparing the JSON objects

      {\n   \"version\": 1,\n   \"type\": \"integer\"\n}\n

      and

      {\n   \"type\": \"integer\",\n   \"version\": 1\n}\n

      depends on whether nlohmann::json or nlohmann::ordered_json is used:

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    nlohmann::json uj1 = {{\"version\", 1}, {\"type\", \"integer\"}};\n    nlohmann::json uj2 = {{\"type\", \"integer\"}, {\"version\", 1}};\n\n    nlohmann::ordered_json oj1 = {{\"version\", 1}, {\"type\", \"integer\"}};\n    nlohmann::ordered_json oj2 = {{\"type\", \"integer\"}, {\"version\", 1}};\n\n    std::cout << std::boolalpha << (uj1 == uj2) << '\\n' << (oj1 == oj2) << std::endl;\n}\n

      Output:

      true\nfalse\n
      "},{"location":"api/basic_json/operator_eq/#examples","title":"Examples","text":"Example

      The example demonstrates comparing several JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create several JSON values\n    json array_1 = {1, 2, 3};\n    json array_2 = {1, 2, 4};\n    json object_1 = {{\"A\", \"a\"}, {\"B\", \"b\"}};\n    json object_2 = {{\"B\", \"b\"}, {\"A\", \"a\"}};\n    json number_1 = 17;\n    json number_2 = 17.000000000000001L;\n    json string_1 = \"foo\";\n    json string_2 = \"bar\";\n\n    // output values and comparisons\n    std::cout << std::boolalpha;\n    std::cout << array_1 << \" == \" << array_2 << \" \" << (array_1 == array_2) << '\\n';\n    std::cout << object_1 << \" == \" << object_2 << \" \" << (object_1 == object_2) << '\\n';\n    std::cout << number_1 << \" == \" << number_2 << \" \" << (number_1 == number_2) << '\\n';\n    std::cout << string_1 << \" == \" << string_2 << \" \" << (string_1 == string_2) << '\\n';\n}\n

      Output:

      [1,2,3] == [1,2,4] false\n{\"A\":\"a\",\"B\":\"b\"} == {\"A\":\"a\",\"B\":\"b\"} true\n17 == 17.0 true\n\"foo\" == \"bar\" false\n
      Example

      The example demonstrates comparing several JSON types against the null pointer (JSON null).

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create several JSON values\n    json array = {1, 2, 3};\n    json object = {{\"A\", \"a\"}, {\"B\", \"b\"}};\n    json number = 17;\n    json string = \"foo\";\n    json null;\n\n    // output values and comparisons\n    std::cout << std::boolalpha;\n    std::cout << array << \" == nullptr \" << (array == nullptr) << '\\n';\n    std::cout << object << \" == nullptr \" << (object == nullptr) << '\\n';\n    std::cout << number << \" == nullptr \" << (number == nullptr) << '\\n';\n    std::cout << string << \" == nullptr \" << (string == nullptr) << '\\n';\n    std::cout << null << \" == nullptr \" << (null == nullptr) << '\\n';\n}\n

      Output:

      [1,2,3] == nullptr false\n{\"A\":\"a\",\"B\":\"b\"} == nullptr false\n17 == nullptr false\n\"foo\" == nullptr false\nnull == nullptr true\n
      "},{"location":"api/basic_json/operator_eq/#version-history","title":"Version history","text":"
      1. Added in version 1.0.0. Added C++20 member functions in version 3.11.0.
      2. Added in version 1.0.0. Added C++20 member functions in version 3.11.0.
      "},{"location":"api/basic_json/operator_ge/","title":"nlohmann::basic_json::operator>=","text":"
      // until C++20\nbool operator>=(const_reference lhs, const_reference rhs) noexcept;   // (1)\n\ntemplate<typename ScalarType>\nbool operator>=(const_reference lhs, const ScalarType rhs) noexcept;  // (2)\n\ntemplate<typename ScalarType>\nbool operator>=(ScalarType lhs, const const_reference rhs) noexcept;  // (2)\n
      1. Compares whether one JSON value lhs is greater than or equal to another JSON value rhs according to the following rules:

        • The comparison always yields false if (1) either operand is discarded, or (2) either operand is NaN and the other operand is either NaN or any other number.
        • Otherwise, returns the result of !(lhs < rhs) (see operator<).
      2. Compares whether a JSON value is greater than or equal to a scalar or a scalar is greater than or equal to a JSON value by converting the scalar to a JSON value and comparing both JSON values according to 1.

      "},{"location":"api/basic_json/operator_ge/#template-parameters","title":"Template parameters","text":"ScalarType a scalar type according to std::is_scalar<ScalarType>::value"},{"location":"api/basic_json/operator_ge/#parameters","title":"Parameters","text":"lhs (in) first value to consider rhs (in) second value to consider"},{"location":"api/basic_json/operator_ge/#return-value","title":"Return value","text":"

      whether lhs is less than or equal to rhs

      "},{"location":"api/basic_json/operator_ge/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this function never throws exceptions.

      "},{"location":"api/basic_json/operator_ge/#complexity","title":"Complexity","text":"

      Linear.

      "},{"location":"api/basic_json/operator_ge/#notes","title":"Notes","text":"

      Comparing NaN

      NaN values are unordered within the domain of numbers. The following comparisons all yield false: 1. Comparing a NaN with itself. 2. Comparing a NaN with another NaN. 3. Comparing a NaN and any other number.

      Operator overload resolution

      Since C++20 overload resolution will consider the rewritten candidate generated from operator<=>.

      "},{"location":"api/basic_json/operator_ge/#examples","title":"Examples","text":"Example

      The example demonstrates comparing several JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create several JSON values\n    json array_1 = {1, 2, 3};\n    json array_2 = {1, 2, 4};\n    json object_1 = {{\"A\", \"a\"}, {\"B\", \"b\"}};\n    json object_2 = {{\"B\", \"b\"}, {\"A\", \"a\"}};\n    json number_1 = 17;\n    json number_2 = 17.0000000000001L;\n    json string_1 = \"foo\";\n    json string_2 = \"bar\";\n\n    // output values and comparisons\n    std::cout << std::boolalpha;\n    std::cout << array_1 << \" >= \" << array_2 << \" \" << (array_1 >= array_2) << '\\n';\n    std::cout << object_1 << \" >= \" << object_2 << \" \" << (object_1 >= object_2) << '\\n';\n    std::cout << number_1 << \" >= \" << number_2 << \" \" << (number_1 >= number_2) << '\\n';\n    std::cout << string_1 << \" >= \" << string_2 << \" \" << (string_1 >= string_2) << '\\n';\n}\n

      Output:

      [1,2,3] >= [1,2,4] false\n{\"A\":\"a\",\"B\":\"b\"} >= {\"A\":\"a\",\"B\":\"b\"} true\n17 >= 17.0000000000001 false\n\"foo\" >= \"bar\" true\n
      "},{"location":"api/basic_json/operator_ge/#see-also","title":"See also","text":"
      • operator<=> comparison: 3-way
      "},{"location":"api/basic_json/operator_ge/#version-history","title":"Version history","text":"
      1. Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.
      2. Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.
      "},{"location":"api/basic_json/operator_gt/","title":"nlohmann::basic_json::operator>","text":"
      // until C++20\nbool operator>(const_reference lhs, const_reference rhs) noexcept;   // (1)\n\ntemplate<typename ScalarType>\nbool operator>(const_reference lhs, const ScalarType rhs) noexcept;  // (2)\n\ntemplate<typename ScalarType>\nbool operator>(ScalarType lhs, const const_reference rhs) noexcept;  // (2)\n
      1. Compares whether one JSON value lhs is greater than another JSON value rhs according to the following rules:

        • The comparison always yields false if (1) either operand is discarded, or (2) either operand is NaN and the other operand is either NaN or any other number.
        • Otherwise, returns the result of !(lhs <= rhs) (see operator<=).
      2. Compares whether a JSON value is greater than a scalar or a scalar is greater than a JSON value by converting the scalar to a JSON value and comparing both JSON values according to 1.

      "},{"location":"api/basic_json/operator_gt/#template-parameters","title":"Template parameters","text":"ScalarType a scalar type according to std::is_scalar<ScalarType>::value"},{"location":"api/basic_json/operator_gt/#parameters","title":"Parameters","text":"lhs (in) first value to consider rhs (in) second value to consider"},{"location":"api/basic_json/operator_gt/#return-value","title":"Return value","text":"

      whether lhs is greater than rhs

      "},{"location":"api/basic_json/operator_gt/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this function never throws exceptions.

      "},{"location":"api/basic_json/operator_gt/#complexity","title":"Complexity","text":"

      Linear.

      "},{"location":"api/basic_json/operator_gt/#notes","title":"Notes","text":"

      Comparing NaN

      NaN values are unordered within the domain of numbers. The following comparisons all yield false: 1. Comparing a NaN with itself. 2. Comparing a NaN with another NaN. 3. Comparing a NaN and any other number.

      Operator overload resolution

      Since C++20 overload resolution will consider the rewritten candidate generated from operator<=>.

      "},{"location":"api/basic_json/operator_gt/#examples","title":"Examples","text":"Example

      The example demonstrates comparing several JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create several JSON values\n    json array_1 = {1, 2, 3};\n    json array_2 = {1, 2, 4};\n    json object_1 = {{\"A\", \"a\"}, {\"B\", \"b\"}};\n    json object_2 = {{\"B\", \"b\"}, {\"A\", \"a\"}};\n    json number_1 = 17;\n    json number_2 = 17.0000000000001L;\n    json string_1 = \"foo\";\n    json string_2 = \"bar\";\n\n    // output values and comparisons\n    std::cout << std::boolalpha;\n    std::cout << array_1 << \" > \" << array_2 << \" \" << (array_1 > array_2) << '\\n';\n    std::cout << object_1 << \" > \" << object_2 << \" \" << (object_1 > object_2) << '\\n';\n    std::cout << number_1 << \" > \" << number_2 << \" \" << (number_1 > number_2) << '\\n';\n    std::cout << string_1 << \" > \" << string_2 << \" \" << (string_1 > string_2) << '\\n';\n}\n

      Output:

      [1,2,3] > [1,2,4] false\n{\"A\":\"a\",\"B\":\"b\"} > {\"A\":\"a\",\"B\":\"b\"} false\n17 > 17.0000000000001 false\n\"foo\" > \"bar\" true\n
      "},{"location":"api/basic_json/operator_gt/#see-also","title":"See also","text":"
      • operator<=> comparison: 3-way
      "},{"location":"api/basic_json/operator_gt/#version-history","title":"Version history","text":"
      1. Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.
      2. Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.
      "},{"location":"api/basic_json/operator_le/","title":"nlohmann::basic_json::operator<=","text":"
      // until C++20\nbool operator<=(const_reference lhs, const_reference rhs) noexcept;   // (1)\n\ntemplate<typename ScalarType>\nbool operator<=(const_reference lhs, const ScalarType rhs) noexcept;  // (2)\n\ntemplate<typename ScalarType>\nbool operator<=(ScalarType lhs, const const_reference rhs) noexcept;  // (2)\n
      1. Compares whether one JSON value lhs is less than or equal to another JSON value rhs according to the following rules:

        • The comparison always yields false if (1) either operand is discarded, or (2) either operand is NaN and the other operand is either NaN or any other number.
        • Otherwise, returns the result of !(rhs < lhs) (see operator<).
      2. Compares whether a JSON value is less than or equal to a scalar or a scalar is less than or equal to a JSON value by converting the scalar to a JSON value and comparing both JSON values according to 1.

      "},{"location":"api/basic_json/operator_le/#template-parameters","title":"Template parameters","text":"ScalarType a scalar type according to std::is_scalar<ScalarType>::value"},{"location":"api/basic_json/operator_le/#parameters","title":"Parameters","text":"lhs (in) first value to consider rhs (in) second value to consider"},{"location":"api/basic_json/operator_le/#return-value","title":"Return value","text":"

      whether lhs is less than or equal to rhs

      "},{"location":"api/basic_json/operator_le/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this function never throws exceptions.

      "},{"location":"api/basic_json/operator_le/#complexity","title":"Complexity","text":"

      Linear.

      "},{"location":"api/basic_json/operator_le/#notes","title":"Notes","text":"

      Comparing NaN

      NaN values are unordered within the domain of numbers. The following comparisons all yield false: 1. Comparing a NaN with itself. 2. Comparing a NaN with another NaN. 3. Comparing a NaN and any other number.

      Operator overload resolution

      Since C++20 overload resolution will consider the rewritten candidate generated from operator<=>.

      "},{"location":"api/basic_json/operator_le/#examples","title":"Examples","text":"Example

      The example demonstrates comparing several JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create several JSON values\n    json array_1 = {1, 2, 3};\n    json array_2 = {1, 2, 4};\n    json object_1 = {{\"A\", \"a\"}, {\"B\", \"b\"}};\n    json object_2 = {{\"B\", \"b\"}, {\"A\", \"a\"}};\n    json number_1 = 17;\n    json number_2 = 17.0000000000001L;\n    json string_1 = \"foo\";\n    json string_2 = \"bar\";\n\n    // output values and comparisons\n    std::cout << std::boolalpha;\n    std::cout << array_1 << \" <= \" << array_2 << \" \" << (array_1 <= array_2) << '\\n';\n    std::cout << object_1 << \" <= \" << object_2 << \" \" << (object_1 <= object_2) << '\\n';\n    std::cout << number_1 << \" <= \" << number_2 << \" \" << (number_1 <= number_2) << '\\n';\n    std::cout << string_1 << \" <= \" << string_2 << \" \" << (string_1 <= string_2) << '\\n';\n}\n

      Output:

      [1,2,3] <= [1,2,4] true\n{\"A\":\"a\",\"B\":\"b\"} <= {\"A\":\"a\",\"B\":\"b\"} true\n17 <= 17.0000000000001 true\n\"foo\" <= \"bar\" false\n
      "},{"location":"api/basic_json/operator_le/#see-also","title":"See also","text":"
      • operator<=> comparison: 3-way
      "},{"location":"api/basic_json/operator_le/#version-history","title":"Version history","text":"
      1. Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.
      2. Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.
      "},{"location":"api/basic_json/operator_lt/","title":"nlohmann::basic_json::operator<","text":"
      // until C++20\nbool operator<(const_reference lhs, const_reference rhs) noexcept;   // (1)\n\ntemplate<typename ScalarType>\nbool operator<(const_reference lhs, const ScalarType rhs) noexcept;  // (2)\n\ntemplate<typename ScalarType>\nbool operator<(ScalarType lhs, const const_reference rhs) noexcept;  // (2)\n
      1. Compares whether one JSON value lhs is less than another JSON value rhs according to the following rules:

        • If either operand is discarded, the comparison yields false.
        • If both operands have the same type, the values are compared using their respective operator<.
        • Integer and floating-point numbers are automatically converted before comparison.
        • In case lhs and rhs have different types, the values are ignored and the order of the types is considered, which is:
          1. null
          2. boolean
          3. number (all types)
          4. object
          5. array
          6. string
          7. binary For instance, any boolean value is considered less than any string.
      2. Compares whether a JSON value is less than a scalar or a scalar is less than a JSON value by converting the scalar to a JSON value and comparing both JSON values according to 1.

      "},{"location":"api/basic_json/operator_lt/#template-parameters","title":"Template parameters","text":"ScalarType a scalar type according to std::is_scalar<ScalarType>::value"},{"location":"api/basic_json/operator_lt/#parameters","title":"Parameters","text":"lhs (in) first value to consider rhs (in) second value to consider"},{"location":"api/basic_json/operator_lt/#return-value","title":"Return value","text":"

      whether lhs is less than rhs

      "},{"location":"api/basic_json/operator_lt/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this function never throws exceptions.

      "},{"location":"api/basic_json/operator_lt/#complexity","title":"Complexity","text":"

      Linear.

      "},{"location":"api/basic_json/operator_lt/#notes","title":"Notes","text":"

      Comparing NaN

      NaN values are unordered within the domain of numbers. The following comparisons all yield false: 1. Comparing a NaN with itself. 2. Comparing a NaN with another NaN. 3. Comparing a NaN and any other number.

      Operator overload resolution

      Since C++20 overload resolution will consider the rewritten candidate generated from operator<=>.

      "},{"location":"api/basic_json/operator_lt/#examples","title":"Examples","text":"Example

      The example demonstrates comparing several JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create several JSON values\n    json array_1 = {1, 2, 3};\n    json array_2 = {1, 2, 4};\n    json object_1 = {{\"A\", \"a\"}, {\"B\", \"b\"}};\n    json object_2 = {{\"B\", \"b\"}, {\"A\", \"a\"}};\n    json number_1 = 17;\n    json number_2 = 17.0000000000001L;\n    json string_1 = \"foo\";\n    json string_2 = \"bar\";\n\n    // output values and comparisons\n    std::cout << std::boolalpha;\n    std::cout << array_1 << \" == \" << array_2 << \" \" << (array_1 < array_2) << '\\n';\n    std::cout << object_1 << \" == \" << object_2 << \" \" << (object_1 < object_2) << '\\n';\n    std::cout << number_1 << \" == \" << number_2 << \" \" << (number_1 < number_2) << '\\n';\n    std::cout << string_1 << \" == \" << string_2 << \" \" << (string_1 < string_2) << '\\n';\n}\n

      Output:

      [1,2,3] == [1,2,4] true\n{\"A\":\"a\",\"B\":\"b\"} == {\"A\":\"a\",\"B\":\"b\"} false\n17 == 17.0000000000001 true\n\"foo\" == \"bar\" false\n
      "},{"location":"api/basic_json/operator_lt/#see-also","title":"See also","text":"
      • operator<=> comparison: 3-way
      "},{"location":"api/basic_json/operator_lt/#version-history","title":"Version history","text":"
      1. Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.
      2. Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.
      "},{"location":"api/basic_json/operator_ne/","title":"nlohmann::basic_json::operator!=","text":"
      // until C++20\nbool operator!=(const_reference lhs, const_reference rhs) noexcept;   // (1)\n\ntemplate<typename ScalarType>\nbool operator!=(const_reference lhs, const ScalarType rhs) noexcept;  // (2)\n\ntemplate<typename ScalarType>\nbool operator!=(ScalarType lhs, const const_reference rhs) noexcept;  // (2)\n\n// since C++20\nclass basic_json {\n    bool operator!=(const_reference rhs) const noexcept;              // (1)\n\n    template<typename ScalarType>\n    bool operator!=(ScalarType rhs) const noexcept;                   // (2)\n};\n
      1. Compares two JSON values for inequality according to the following rules:

        • The comparison always yields false if (1) either operand is discarded, or (2) either operand is NaN and the other operand is either NaN or any other number.
        • Otherwise, returns the result of !(lhs == rhs) (until C++20) or !(*this == rhs) (since C++20).
      2. Compares a JSON value and a scalar or a scalar and a JSON value for inequality by converting the scalar to a JSON value and comparing both JSON values according to 1.

      "},{"location":"api/basic_json/operator_ne/#template-parameters","title":"Template parameters","text":"ScalarType a scalar type according to std::is_scalar<ScalarType>::value"},{"location":"api/basic_json/operator_ne/#parameters","title":"Parameters","text":"lhs (in) first value to consider rhs (in) second value to consider"},{"location":"api/basic_json/operator_ne/#return-value","title":"Return value","text":"

      whether the values lhs/*this and rhs are not equal

      "},{"location":"api/basic_json/operator_ne/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this function never throws exceptions.

      "},{"location":"api/basic_json/operator_ne/#complexity","title":"Complexity","text":"

      Linear.

      "},{"location":"api/basic_json/operator_ne/#notes","title":"Notes","text":"

      Comparing NaN

      NaN values are unordered within the domain of numbers. The following comparisons all yield false: 1. Comparing a NaN with itself. 2. Comparing a NaN with another NaN. 3. Comparing a NaN and any other number.

      "},{"location":"api/basic_json/operator_ne/#examples","title":"Examples","text":"Example

      The example demonstrates comparing several JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create several JSON values\n    json array_1 = {1, 2, 3};\n    json array_2 = {1, 2, 4};\n    json object_1 = {{\"A\", \"a\"}, {\"B\", \"b\"}};\n    json object_2 = {{\"B\", \"b\"}, {\"A\", \"a\"}};\n    json number_1 = 17;\n    json number_2 = 17.000000000000001L;\n    json string_1 = \"foo\";\n    json string_2 = \"bar\";\n\n    // output values and comparisons\n    std::cout << std::boolalpha;\n    std::cout << array_1 << \" != \" << array_2 << \" \" << (array_1 != array_2) << '\\n';\n    std::cout << object_1 << \" != \" << object_2 << \" \" << (object_1 != object_2) << '\\n';\n    std::cout << number_1 << \" != \" << number_2 << \" \" << (number_1 != number_2) << '\\n';\n    std::cout << string_1 << \" != \" << string_2 << \" \" << (string_1 != string_2) << '\\n';\n}\n

      Output:

      [1,2,3] != [1,2,4] true\n{\"A\":\"a\",\"B\":\"b\"} != {\"A\":\"a\",\"B\":\"b\"} false\n17 != 17.0 false\n\"foo\" != \"bar\" true\n
      Example

      The example demonstrates comparing several JSON types against the null pointer (JSON null).

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create several JSON values\n    json array = {1, 2, 3};\n    json object = {{\"A\", \"a\"}, {\"B\", \"b\"}};\n    json number = 17;\n    json string = \"foo\";\n    json null;\n\n    // output values and comparisons\n    std::cout << std::boolalpha;\n    std::cout << array << \" != nullptr \" << (array != nullptr) << '\\n';\n    std::cout << object << \" != nullptr \" << (object != nullptr) << '\\n';\n    std::cout << number << \" != nullptr \" << (number != nullptr) << '\\n';\n    std::cout << string << \" != nullptr \" << (string != nullptr) << '\\n';\n    std::cout << null << \" != nullptr \" << (null != nullptr) << '\\n';\n}\n

      Output:

      [1,2,3] != nullptr true\n{\"A\":\"a\",\"B\":\"b\"} != nullptr true\n17 != nullptr true\n\"foo\" != nullptr true\nnull != nullptr false\n
      "},{"location":"api/basic_json/operator_ne/#version-history","title":"Version history","text":"
      1. Added in version 1.0.0. Added C++20 member functions in version 3.11.0.
      2. Added in version 1.0.0. Added C++20 member functions in version 3.11.0.
      "},{"location":"api/basic_json/operator_spaceship/","title":"nlohmann::basic_json::operator<=>","text":"
      // since C++20\nclass basic_json {\n    std::partial_ordering operator<=>(const_reference rhs) const noexcept;  // (1)\n\n    template<typename ScalarType>\n    std::partial_ordering operator<=>(const ScalarType rhs) const noexcept; // (2)\n};\n
      1. 3-way compares two JSON values producing a result of type std::partial_ordering according to the following rules:

        • Two JSON values compare with a result of std::partial_ordering::unordered if either value is discarded.
        • If both JSON values are of the same type, the result is produced by 3-way comparing their stored values using their respective operator<=>.
        • Integer and floating-point numbers are converted to their common type and then 3-way compared using their respective operator<=>. For instance, comparing an integer and a floating-point value will 3-way compare the first value converted to floating-point with the second value.
        • Otherwise, yields a result by comparing the type (see value_t).
      2. 3-way compares a JSON value and a scalar or a scalar and a JSON value by converting the scalar to a JSON value and 3-way comparing both JSON values (see 1).

      "},{"location":"api/basic_json/operator_spaceship/#template-parameters","title":"Template parameters","text":"ScalarType a scalar type according to std::is_scalar<ScalarType>::value"},{"location":"api/basic_json/operator_spaceship/#parameters","title":"Parameters","text":"rhs (in) second value to consider"},{"location":"api/basic_json/operator_spaceship/#return-value","title":"Return value","text":"

      the std::partial_ordering of the 3-way comparison of *this and rhs

      "},{"location":"api/basic_json/operator_spaceship/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this function never throws exceptions.

      "},{"location":"api/basic_json/operator_spaceship/#complexity","title":"Complexity","text":"

      Linear.

      "},{"location":"api/basic_json/operator_spaceship/#notes","title":"Notes","text":"

      Comparing NaN

      • NaN values are unordered within the domain of numbers. The following comparisons all yield std::partial_ordering::unordered:
        1. Comparing a NaN with itself.
        2. Comparing a NaN with another NaN.
        3. Comparing a NaN and any other number.
      "},{"location":"api/basic_json/operator_spaceship/#examples","title":"Examples","text":"Example: (1) comparing JSON values

      The example demonstrates comparing several JSON values.

      #include <compare>\n#include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nconst char* to_string(const std::partial_ordering& po)\n{\n    if (std::is_lt(po))\n    {\n        return \"less\";\n    }\n    else if (std::is_gt(po))\n    {\n        return \"greater\";\n    }\n    else if (std::is_eq(po))\n    {\n        return \"equivalent\";\n    }\n    return \"unordered\";\n}\n\nint main()\n{\n    // create several JSON values\n    json array_1 = {1, 2, 3};\n    json array_2 = {1, 2, 4};\n    json object_1 = {{\"A\", \"a\"}, {\"B\", \"b\"}};\n    json object_2 = {{\"B\", \"b\"}, {\"A\", \"a\"}};\n    json number = 17;\n    json string = \"foo\";\n    json discarded = json(json::value_t::discarded);\n\n    // output values and comparisons\n    std::cout << array_1 << \" <=> \" << array_2 << \" := \" << to_string(array_1 <=> array_2) << '\\n'; // *NOPAD*\n    std::cout << object_1 << \" <=> \" << object_2 << \" := \" << to_string(object_1 <=> object_2) << '\\n'; // *NOPAD*\n    std::cout << string << \" <=> \" << number << \" := \" << to_string(string <=> number) << '\\n'; // *NOPAD*\n    std::cout << string << \" <=> \" << discarded << \" := \" << to_string(string <=> discarded) << '\\n'; // *NOPAD*\n}\n

      Output:

      [1,2,3] <=> [1,2,4] := less\n{\"A\":\"a\",\"B\":\"b\"} <=> {\"A\":\"a\",\"B\":\"b\"} := equivalent\n\"foo\" <=> 17 := greater\n\"foo\" <=> <discarded> := unordered\n
      Example: (2) comparing JSON values and scalars

      The example demonstrates comparing several JSON values and scalars.

      #include <compare>\n#include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nconst char* to_string(const std::partial_ordering& po)\n{\n    if (std::is_lt(po))\n    {\n        return \"less\";\n    }\n    else if (std::is_gt(po))\n    {\n        return \"greater\";\n    }\n    else if (std::is_eq(po))\n    {\n        return \"equivalent\";\n    }\n    return \"unordered\";\n}\n\nint main()\n{\n    using float_limits = std::numeric_limits<json::number_float_t>;\n    constexpr auto nan = float_limits::quiet_NaN();\n\n    // create several JSON values\n    json boolean = false;\n    json number = 17;\n    json string = \"17\";\n\n    // output values and comparisons\n    std::cout << std::boolalpha << std::fixed;\n    std::cout << boolean << \" <=> \" << true << \" := \" << to_string(boolean <=> true) << '\\n'; // *NOPAD*\n    std::cout << number << \" <=> \" << 17.0 << \" := \" << to_string(number <=> 17.0) << '\\n'; // *NOPAD*\n    std::cout << number << \" <=> \" << nan << \" := \" << to_string(number <=> nan) << '\\n'; // *NOPAD*\n    std::cout << string << \" <=> \" << 17 << \" := \" << to_string(string <=> 17) << '\\n'; // *NOPAD*\n}\n

      Output:

      false <=> true := less\n17 <=> 17.000000 := equivalent\n17 <=> nan := unordered\n\"17\" <=> 17 := greater\n
      "},{"location":"api/basic_json/operator_spaceship/#see-also","title":"See also","text":"
      • operator== - comparison: equal
      • operator!= - comparison: not equal
      • operator< - comparison: less than
      • operator<= - comparison: less than or equal
      • operator> - comparison: greater than
      • operator>= - comparison: greater than or equal
      "},{"location":"api/basic_json/operator_spaceship/#version-history","title":"Version history","text":"
      1. Added in version 3.11.0.
      2. Added in version 3.11.0.
      "},{"location":"api/basic_json/operator_value_t/","title":"nlohmann::basic_json::operator value_t","text":"
      constexpr operator value_t() const noexcept;\n

      Return the type of the JSON value as a value from the value_t enumeration.

      "},{"location":"api/basic_json/operator_value_t/#return-value","title":"Return value","text":"

      the type of the JSON value

      Value type return value null value_t::null boolean value_t::boolean string value_t::string number (integer) value_t::number_integer number (unsigned integer) value_t::number_unsigned number (floating-point) value_t::number_float object value_t::object array value_t::array binary value_t::binary discarded value_t::discarded"},{"location":"api/basic_json/operator_value_t/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/operator_value_t/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/operator_value_t/#examples","title":"Examples","text":"Example

      The following code exemplifies operator value_t() for all JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = -17;\n    json j_number_unsigned = 42u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n\n    // call operator value_t()\n    json::value_t t_null = j_null;\n    json::value_t t_boolean = j_boolean;\n    json::value_t t_number_integer = j_number_integer;\n    json::value_t t_number_unsigned = j_number_unsigned;\n    json::value_t t_number_float = j_number_float;\n    json::value_t t_object = j_object;\n    json::value_t t_array = j_array;\n    json::value_t t_string = j_string;\n\n    // print types\n    std::cout << std::boolalpha;\n    std::cout << (t_null == json::value_t::null) << '\\n';\n    std::cout << (t_boolean == json::value_t::boolean) << '\\n';\n    std::cout << (t_number_integer == json::value_t::number_integer) << '\\n';\n    std::cout << (t_number_unsigned == json::value_t::number_unsigned) << '\\n';\n    std::cout << (t_number_float == json::value_t::number_float) << '\\n';\n    std::cout << (t_object == json::value_t::object) << '\\n';\n    std::cout << (t_array == json::value_t::array) << '\\n';\n    std::cout << (t_string == json::value_t::string) << '\\n';\n}\n

      Output:

      true\ntrue\ntrue\ntrue\ntrue\ntrue\ntrue\ntrue\n
      "},{"location":"api/basic_json/operator_value_t/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      • Added unsigned integer type in version 2.0.0.
      • Added binary type in version 3.8.0.
      "},{"location":"api/basic_json/other_error/","title":"nlohmann::basic_json::other_error","text":"
      class other_error : public exception;\n

      This exception is thrown in case of errors that cannot be classified with the other exception types.

      Exceptions have ids 5xx (see list of other errors).

      classDiagram\n  direction LR\n\n    class std_exception [\"std::exception\"] {\n        <<interface>>\n    }\n\n    class json_exception [\"basic_json::exception\"] {\n        +const int id\n        +const char* what() const\n    }\n\n    class json_parse_error [\"basic_json::parse_error\"] {\n        +const std::size_t byte\n    }\n\n    class json_invalid_iterator [\"basic_json::invalid_iterator\"]\n    class json_type_error [\"basic_json::type_error\"]\n    class json_out_of_range [\"basic_json::out_of_range\"]\n    class json_other_error [\"basic_json::other_error\"]\n\n    std_exception <|-- json_exception\n    json_exception <|-- json_parse_error\n    json_exception <|-- json_invalid_iterator\n    json_exception <|-- json_type_error\n    json_exception <|-- json_out_of_range\n    json_exception <|-- json_other_error\n\n    style json_other_error fill:#CCCCFF
      "},{"location":"api/basic_json/other_error/#member-functions","title":"Member functions","text":"
      • what - returns explanatory string
      "},{"location":"api/basic_json/other_error/#member-variables","title":"Member variables","text":"
      • id - the id of the exception
      "},{"location":"api/basic_json/other_error/#examples","title":"Examples","text":"Example

      The following code shows how a other_error exception can be caught.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    try\n    {\n        // executing a failing JSON Patch operation\n        json value = R\"({\n            \"best_biscuit\": {\n                \"name\": \"Oreo\"\n            }\n        })\"_json;\n        json patch = R\"([{\n            \"op\": \"test\",\n            \"path\": \"/best_biscuit/name\",\n            \"value\": \"Choco Leibniz\"\n        }])\"_json;\n        value.patch(patch);\n    }\n    catch (const json::other_error& e)\n    {\n        // output exception information\n        std::cout << \"message: \" << e.what() << '\\n'\n                  << \"exception id: \" << e.id << std::endl;\n    }\n}\n

      Output:

      message: [json.exception.other_error.501] unsuccessful: {\"op\":\"test\",\"path\":\"/best_biscuit/name\",\"value\":\"Choco Leibniz\"}\nexception id: 501\n
      "},{"location":"api/basic_json/other_error/#see-also","title":"See also","text":"
      • List of other errors
      • parse_error for exceptions indicating a parse error
      • invalid_iterator for exceptions indicating errors with iterators
      • type_error for exceptions indicating executing a member function with a wrong type
      • out_of_range for exceptions indicating access out of the defined range
      "},{"location":"api/basic_json/other_error/#version-history","title":"Version history","text":"
      • Since version 3.0.0.
      "},{"location":"api/basic_json/out_of_range/","title":"nlohmann::basic_json::out_of_range","text":"
      class out_of_range : public exception;\n

      This exception is thrown in case a library function is called on an input parameter that exceeds the expected range, for instance in case of array indices or nonexisting object keys.

      Exceptions have ids 4xx (see list of out-of-range errors).

      classDiagram\n  direction LR\n\n    class std_exception [\"std::exception\"] {\n        <<interface>>\n    }\n\n    class json_exception [\"basic_json::exception\"] {\n        +const int id\n        +const char* what() const\n    }\n\n    class json_parse_error [\"basic_json::parse_error\"] {\n        +const std::size_t byte\n    }\n\n    class json_invalid_iterator [\"basic_json::invalid_iterator\"]\n    class json_type_error [\"basic_json::type_error\"]\n    class json_out_of_range [\"basic_json::out_of_range\"]\n    class json_other_error [\"basic_json::other_error\"]\n\n    std_exception <|-- json_exception\n    json_exception <|-- json_parse_error\n    json_exception <|-- json_invalid_iterator\n    json_exception <|-- json_type_error\n    json_exception <|-- json_out_of_range\n    json_exception <|-- json_other_error\n\n    style json_out_of_range fill:#CCCCFF
      "},{"location":"api/basic_json/out_of_range/#member-functions","title":"Member functions","text":"
      • what - returns explanatory string
      "},{"location":"api/basic_json/out_of_range/#member-variables","title":"Member variables","text":"
      • id - the id of the exception
      "},{"location":"api/basic_json/out_of_range/#examples","title":"Examples","text":"Example

      The following code shows how a out_of_range exception can be caught.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    try\n    {\n        // calling at() for an invalid index\n        json j = {1, 2, 3, 4};\n        j.at(4) = 10;\n    }\n    catch (const json::out_of_range& e)\n    {\n        // output exception information\n        std::cout << \"message: \" << e.what() << '\\n'\n                  << \"exception id: \" << e.id << std::endl;\n    }\n}\n

      Output:

      message: [json.exception.out_of_range.401] array index 4 is out of range\nexception id: 401\n
      "},{"location":"api/basic_json/out_of_range/#see-also","title":"See also","text":"
      • List of out-of-range errors
      • parse_error for exceptions indicating a parse error
      • invalid_iterator for exceptions indicating errors with iterators
      • type_error for exceptions indicating executing a member function with a wrong type
      • other_error for exceptions indicating other library errors
      "},{"location":"api/basic_json/out_of_range/#version-history","title":"Version history","text":"
      • Since version 3.0.0.
      "},{"location":"api/basic_json/parse/","title":"nlohmann::basic_json::parse","text":"
      // (1)\ntemplate<typename InputType>\nstatic basic_json parse(InputType&& i,\n                        const parser_callback_t cb = nullptr,\n                        const bool allow_exceptions = true,\n                        const bool ignore_comments = false);\n\n// (2)\ntemplate<typename IteratorType>\nstatic basic_json parse(IteratorType first, IteratorType last,\n                        const parser_callback_t cb = nullptr,\n                        const bool allow_exceptions = true,\n                        const bool ignore_comments = false);\n
      1. Deserialize from a compatible input.
      2. Deserialize from a pair of character iterators

        The value_type of the iterator must be an integral type with size of 1, 2 or 4 bytes, which will be interpreted respectively as UTF-8, UTF-16 and UTF-32.

      "},{"location":"api/basic_json/parse/#template-parameters","title":"Template parameters","text":"InputType

      A compatible input, for instance:

      • an std::istream object
      • a FILE pointer (throws if null)
      • a C-style array of characters
      • a pointer to a null-terminated string of single byte characters (throws if null)
      • a std::string
      • an object obj for which begin(obj) and end(obj) produces a valid pair of iterators.
      IteratorType

      a compatible iterator type, for instance.

      • a pair of std::string::iterator or std::vector<std::uint8_t>::iterator
      • a pair of pointers such as ptr and ptr + len
      "},{"location":"api/basic_json/parse/#parameters","title":"Parameters","text":"i (in) Input to parse from. cb (in) a parser callback function of type parser_callback_t which is used to control the deserialization by filtering unwanted values (optional) allow_exceptions (in) whether to throw exceptions in case of a parse error (optional, true by default) ignore_comments (in) whether comments should be ignored and treated like whitespace (true) or yield a parse error (false); (optional, false by default) first (in) iterator to start of character range last (in) iterator to end of character range"},{"location":"api/basic_json/parse/#return-value","title":"Return value","text":"

      Deserialized JSON value; in case of a parse error and allow_exceptions set to false, the return value will be value_t::discarded. The latter can be checked with is_discarded.

      "},{"location":"api/basic_json/parse/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

      "},{"location":"api/basic_json/parse/#exceptions","title":"Exceptions","text":"
      • Throws parse_error.101 in case of an unexpected token, or empty input like a null FILE* or char* pointer.
      • Throws parse_error.102 if to_unicode fails or surrogate error.
      • Throws parse_error.103 if to_unicode fails.
      "},{"location":"api/basic_json/parse/#complexity","title":"Complexity","text":"

      Linear in the length of the input. The parser is a predictive LL(1) parser. The complexity can be higher if the parser callback function cb or reading from (1) the input i or (2) the iterator range [first, last] has a super-linear complexity.

      "},{"location":"api/basic_json/parse/#notes","title":"Notes","text":"

      A UTF-8 byte order mark is silently ignored.

      "},{"location":"api/basic_json/parse/#examples","title":"Examples","text":"Parsing from a character array

      The example below demonstrates the parse() function reading from an array.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // a JSON text\n    char text[] = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, 38793]\n        }\n    }\n    )\";\n\n    // parse and serialize JSON\n    json j_complete = json::parse(text);\n    std::cout << std::setw(4) << j_complete << \"\\n\\n\";\n}\n

      Output:

      {\n    \"Image\": {\n        \"Animated\": false,\n        \"Height\": 600,\n        \"IDs\": [\n            116,\n            943,\n            234,\n            38793\n        ],\n        \"Thumbnail\": {\n            \"Height\": 125,\n            \"Url\": \"http://www.example.com/image/481989943\",\n            \"Width\": 100\n        },\n        \"Title\": \"View from 15th Floor\",\n        \"Width\": 800\n    }\n}\n
      Parsing from a string

      The example below demonstrates the parse() function with and without callback function.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, 38793]\n        }\n    }\n    )\";\n\n    // parse and serialize JSON\n    json j_complete = json::parse(text);\n    std::cout << std::setw(4) << j_complete << \"\\n\\n\";\n\n    // define parser callback\n    json::parser_callback_t cb = [](int depth, json::parse_event_t event, json & parsed)\n    {\n        // skip object elements with key \"Thumbnail\"\n        if (event == json::parse_event_t::key and parsed == json(\"Thumbnail\"))\n        {\n            return false;\n        }\n        else\n        {\n            return true;\n        }\n    };\n\n    // parse (with callback) and serialize JSON\n    json j_filtered = json::parse(text, cb);\n    std::cout << std::setw(4) << j_filtered << '\\n';\n}\n

      Output:

      {\n    \"Image\": {\n        \"Animated\": false,\n        \"Height\": 600,\n        \"IDs\": [\n            116,\n            943,\n            234,\n            38793\n        ],\n        \"Thumbnail\": {\n            \"Height\": 125,\n            \"Url\": \"http://www.example.com/image/481989943\",\n            \"Width\": 100\n        },\n        \"Title\": \"View from 15th Floor\",\n        \"Width\": 800\n    }\n}\n\n{\n    \"Image\": {\n        \"Animated\": false,\n        \"Height\": 600,\n        \"IDs\": [\n            116,\n            943,\n            234,\n            38793\n        ],\n        \"Title\": \"View from 15th Floor\",\n        \"Width\": 800\n    }\n}\n
      Parsing from an input stream

      The example below demonstrates the parse() function with and without callback function.

      #include <iostream>\n#include <iomanip>\n#include <sstream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, 38793]\n        }\n    }\n    )\";\n\n    // fill a stream with JSON text\n    std::stringstream ss;\n    ss << text;\n\n    // parse and serialize JSON\n    json j_complete = json::parse(ss);\n    std::cout << std::setw(4) << j_complete << \"\\n\\n\";\n\n    // define parser callback\n    json::parser_callback_t cb = [](int depth, json::parse_event_t event, json & parsed)\n    {\n        // skip object elements with key \"Thumbnail\"\n        if (event == json::parse_event_t::key and parsed == json(\"Thumbnail\"))\n        {\n            return false;\n        }\n        else\n        {\n            return true;\n        }\n    };\n\n    // fill a stream with JSON text\n    ss.clear();\n    ss << text;\n\n    // parse (with callback) and serialize JSON\n    json j_filtered = json::parse(ss, cb);\n    std::cout << std::setw(4) << j_filtered << '\\n';\n}\n

      Output:

      {\n    \"Image\": {\n        \"Animated\": false,\n        \"Height\": 600,\n        \"IDs\": [\n            116,\n            943,\n            234,\n            38793\n        ],\n        \"Thumbnail\": {\n            \"Height\": 125,\n            \"Url\": \"http://www.example.com/image/481989943\",\n            \"Width\": 100\n        },\n        \"Title\": \"View from 15th Floor\",\n        \"Width\": 800\n    }\n}\n\n{\n    \"Image\": {\n        \"Animated\": false,\n        \"Height\": 600,\n        \"IDs\": [\n            116,\n            943,\n            234,\n            38793\n        ],\n        \"Title\": \"View from 15th Floor\",\n        \"Width\": 800\n    }\n}\n
      Parsing from a contiguous container

      The example below demonstrates the parse() function reading from a contiguous container.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // a JSON text given as std::vector\n    std::vector<std::uint8_t> text = {'[', '1', ',', '2', ',', '3', ']', '\\0'};\n\n    // parse and serialize JSON\n    json j_complete = json::parse(text);\n    std::cout << std::setw(4) << j_complete << \"\\n\\n\";\n}\n

      Output:

      [\n    1,\n    2,\n    3\n]\n
      Parsing from a non null-terminated string

      The example below demonstrates the parse() function reading from a string that is not null-terminated.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // a JSON text given as string that is not null-terminated\n    const char* ptr = \"[1,2,3]another value\";\n\n    // parse and serialize JSON\n    json j_complete = json::parse(ptr, ptr + 7);\n    std::cout << std::setw(4) << j_complete << \"\\n\\n\";\n}\n

      Output:

      [\n    1,\n    2,\n    3\n]\n
      Parsing from an iterator pair

      The example below demonstrates the parse() function reading from an iterator pair.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // a JSON text given an input with other values\n    std::vector<std::uint8_t> input = {'[', '1', ',', '2', ',', '3', ']', 'o', 't', 'h', 'e', 'r'};\n\n    // parse and serialize JSON\n    json j_complete = json::parse(input.begin(), input.begin() + 7);\n    std::cout << std::setw(4) << j_complete << \"\\n\\n\";\n}\n

      Output:

      [\n    1,\n    2,\n    3\n]\n
      Effect of allow_exceptions parameter

      The example below demonstrates the effect of the allow_exceptions parameter in the \u00b4parse()` function.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // an invalid JSON text\n    std::string text = R\"(\n    {\n        \"key\": \"value without closing quotes\n    }\n    )\";\n\n    // parse with exceptions\n    try\n    {\n        json j = json::parse(text);\n    }\n    catch (const json::parse_error& e)\n    {\n        std::cout << e.what() << std::endl;\n    }\n\n    // parse without exceptions\n    json j = json::parse(text, nullptr, false);\n\n    if (j.is_discarded())\n    {\n        std::cout << \"the input is invalid JSON\" << std::endl;\n    }\n    else\n    {\n        std::cout << \"the input is valid JSON: \" << j << std::endl;\n    }\n}\n

      Output:

      [json.exception.parse_error.101] parse error at line 4, column 0: syntax error while parsing value - invalid string: control character U+000A (LF) must be escaped to \\u000A or \\n; last read: '\"value without closing quotes<U+000A>'\nthe input is invalid JSON\n
      "},{"location":"api/basic_json/parse/#see-also","title":"See also","text":"
      • accept - check if the input is valid JSON
      • operator>> - deserialize from stream
      "},{"location":"api/basic_json/parse/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      • Overload for contiguous containers (1) added in version 2.0.3.
      • Ignoring comments via ignore_comments added in version 3.9.0.
      • Changed runtime assertion in case of FILE* null pointers to exception in version 3.11.4.

      Deprecation

      Overload (2) replaces calls to parse with a pair of iterators as their first parameter which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like parse({ptr, ptr+len}, ...); with parse(ptr, ptr+len, ...);.

      You should be warned by your compiler with a -Wdeprecated-declarations warning if you are using a deprecated function.

      "},{"location":"api/basic_json/parse_error/","title":"nlohmann::basic_json::parse_error","text":"
      class parse_error : public exception;\n

      This exception is thrown by the library when a parse error occurs. Parse errors can occur during the deserialization of JSON text, BSON, CBOR, MessagePack, UBJSON, as well as when using JSON Patch.

      Member byte holds the byte index of the last read character in the input file (see note below).

      Exceptions have ids 1xx (see list of parse errors).

      classDiagram\n  direction LR\n\n    class std_exception [\"std::exception\"] {\n        <<interface>>\n    }\n\n    class json_exception [\"basic_json::exception\"] {\n        +const int id\n        +const char* what() const\n    }\n\n    class json_parse_error [\"basic_json::parse_error\"] {\n        +const std::size_t byte\n    }\n\n    class json_invalid_iterator [\"basic_json::invalid_iterator\"]\n    class json_type_error [\"basic_json::type_error\"]\n    class json_out_of_range [\"basic_json::out_of_range\"]\n    class json_other_error [\"basic_json::other_error\"]\n\n    std_exception <|-- json_exception\n    json_exception <|-- json_parse_error\n    json_exception <|-- json_invalid_iterator\n    json_exception <|-- json_type_error\n    json_exception <|-- json_out_of_range\n    json_exception <|-- json_other_error\n\n    style json_parse_error fill:#CCCCFF
      "},{"location":"api/basic_json/parse_error/#member-functions","title":"Member functions","text":"
      • what - returns explanatory string
      "},{"location":"api/basic_json/parse_error/#member-variables","title":"Member variables","text":"
      • id - the id of the exception
      • byte - byte index of the parse error
      "},{"location":"api/basic_json/parse_error/#notes","title":"Notes","text":"

      For an input with n bytes, 1 is the index of the first character and n+1 is the index of the terminating null byte or the end of file. This also holds true when reading a byte vector for binary formats.

      "},{"location":"api/basic_json/parse_error/#examples","title":"Examples","text":"Example

      The following code shows how a parse_error exception can be caught.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    try\n    {\n        // parsing input with a syntax error\n        json::parse(\"[1,2,3,]\");\n    }\n    catch (const json::parse_error& e)\n    {\n        // output exception information\n        std::cout << \"message: \" << e.what() << '\\n'\n                  << \"exception id: \" << e.id << '\\n'\n                  << \"byte position of error: \" << e.byte << std::endl;\n    }\n}\n

      Output:

      message: [json.exception.parse_error.101] parse error at line 1, column 8: syntax error while parsing value - unexpected ']'; expected '[', '{', or a literal\nexception id: 101\nbyte position of error: 8\n
      "},{"location":"api/basic_json/parse_error/#see-also","title":"See also","text":"
      • List of parse errors
      • invalid_iterator for exceptions indicating errors with iterators
      • type_error for exceptions indicating executing a member function with a wrong type
      • out_of_range for exceptions indicating access out of the defined range
      • other_error for exceptions indicating other library errors
      "},{"location":"api/basic_json/parse_error/#version-history","title":"Version history","text":"
      • Since version 3.0.0.
      "},{"location":"api/basic_json/parse_event_t/","title":"nlohmann::basic_json::parse_event_t","text":"
      enum class parse_event_t : std::uint8_t {\n    object_start,\n    object_end,\n    array_start,\n    array_end,\n    key,\n    value\n};\n

      The parser callback distinguishes the following events:

      • object_start: the parser read { and started to process a JSON object
      • key: the parser read a key of a value in an object
      • object_end: the parser read } and finished processing a JSON object
      • array_start: the parser read [ and started to process a JSON array
      • array_end: the parser read ] and finished processing a JSON array
      • value: the parser finished reading a JSON value
      "},{"location":"api/basic_json/parse_event_t/#examples","title":"Examples","text":""},{"location":"api/basic_json/parse_event_t/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/parser_callback_t/","title":"nlohmann::basic_json::parser_callback_t","text":"
      template<typename BasicJsonType>\nusing parser_callback_t =\n    std::function<bool(int depth, parse_event_t event, BasicJsonType& parsed)>;\n

      With a parser callback function, the result of parsing a JSON text can be influenced. When passed to parse, it is called on certain events (passed as parse_event_t via parameter event) with a set recursion depth depth and context JSON value parsed. The return value of the callback function is a boolean indicating whether the element that emitted the callback shall be kept or not.

      We distinguish six scenarios (determined by the event type) in which the callback function can be called. The following table describes the values of the parameters depth, event, and parsed.

      parameter event description parameter depth parameter parsed parse_event_t::object_start the parser read { and started to process a JSON object depth of the parent of the JSON object a JSON value with type discarded parse_event_t::key the parser read a key of a value in an object depth of the currently parsed JSON object a JSON string containing the key parse_event_t::object_end the parser read } and finished processing a JSON object depth of the parent of the JSON object the parsed JSON object parse_event_t::array_start the parser read [ and started to process a JSON array depth of the parent of the JSON array a JSON value with type discarded parse_event_t::array_end the parser read ] and finished processing a JSON array depth of the parent of the JSON array the parsed JSON array parse_event_t::value the parser finished reading a JSON value depth of the value the parsed JSON value

      Discarding a value (i.e., returning false) has different effects depending on the context in which function was called:

      • Discarded values in structured types are skipped. That is, the parser will behave as if the discarded value was never read.
      • In case a value outside a structured type is skipped, it is replaced with null. This case happens if the top-level element is skipped.
      "},{"location":"api/basic_json/parser_callback_t/#parameters","title":"Parameters","text":"depth (in) the depth of the recursion during parsing event (in) an event of type parse_event_t indicating the context in the callback function has been called parsed (in, out) the current intermediate parse result; note that writing to this value has no effect for parse_event_t::key events"},{"location":"api/basic_json/parser_callback_t/#return-value","title":"Return value","text":"

      Whether the JSON value which called the function during parsing should be kept (true) or not (false). In the latter case, it is either skipped completely or replaced by an empty discarded object.

      "},{"location":"api/basic_json/parser_callback_t/#examples","title":"Examples","text":"Example

      The example below demonstrates the parse() function with and without callback function.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, 38793]\n        }\n    }\n    )\";\n\n    // parse and serialize JSON\n    json j_complete = json::parse(text);\n    std::cout << std::setw(4) << j_complete << \"\\n\\n\";\n\n    // define parser callback\n    json::parser_callback_t cb = [](int depth, json::parse_event_t event, json & parsed)\n    {\n        // skip object elements with key \"Thumbnail\"\n        if (event == json::parse_event_t::key and parsed == json(\"Thumbnail\"))\n        {\n            return false;\n        }\n        else\n        {\n            return true;\n        }\n    };\n\n    // parse (with callback) and serialize JSON\n    json j_filtered = json::parse(text, cb);\n    std::cout << std::setw(4) << j_filtered << '\\n';\n}\n

      Output:

      {\n    \"Image\": {\n        \"Animated\": false,\n        \"Height\": 600,\n        \"IDs\": [\n            116,\n            943,\n            234,\n            38793\n        ],\n        \"Thumbnail\": {\n            \"Height\": 125,\n            \"Url\": \"http://www.example.com/image/481989943\",\n            \"Width\": 100\n        },\n        \"Title\": \"View from 15th Floor\",\n        \"Width\": 800\n    }\n}\n\n{\n    \"Image\": {\n        \"Animated\": false,\n        \"Height\": 600,\n        \"IDs\": [\n            116,\n            943,\n            234,\n            38793\n        ],\n        \"Title\": \"View from 15th Floor\",\n        \"Width\": 800\n    }\n}\n
      "},{"location":"api/basic_json/parser_callback_t/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/patch/","title":"nlohmann::basic_json::patch","text":"
      basic_json patch(const basic_json& json_patch) const;\n

      JSON Patch defines a JSON document structure for expressing a sequence of operations to apply to a JSON document. With this function, a JSON Patch is applied to the current JSON value by executing all operations from the patch.

      "},{"location":"api/basic_json/patch/#parameters","title":"Parameters","text":"json_patch (in) JSON patch document"},{"location":"api/basic_json/patch/#return-value","title":"Return value","text":"

      patched document

      "},{"location":"api/basic_json/patch/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

      "},{"location":"api/basic_json/patch/#exceptions","title":"Exceptions","text":"
      • Throws parse_error.104 if the JSON patch does not consist of an array of objects.
      • Throws parse_error.105 if the JSON patch is malformed (e.g., mandatory attributes are missing); example: \"operation add must have member path\".
      • Throws out_of_range.401 if an array index is out of range.
      • Throws out_of_range.403 if a JSON pointer inside the patch could not be resolved successfully in the current JSON value; example: \"key baz not found\".
      • Throws out_of_range.405 if JSON pointer has no parent (\"add\", \"remove\", \"move\")
      • Throws out_of_range.501 if \"test\" operation was unsuccessful.
      "},{"location":"api/basic_json/patch/#complexity","title":"Complexity","text":"

      Linear in the size of the JSON value and the length of the JSON patch. As usually only a fraction of the JSON value is affected by the patch, the complexity can usually be neglected.

      "},{"location":"api/basic_json/patch/#notes","title":"Notes","text":"

      The application of a patch is atomic: Either all operations succeed and the patched document is returned or an exception is thrown. In any case, the original value is not changed: the patch is applied to a copy of the value.

      "},{"location":"api/basic_json/patch/#examples","title":"Examples","text":"Example

      The following code shows how a JSON patch is applied to a value.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // the original document\n    json doc = R\"(\n        {\n          \"baz\": \"qux\",\n          \"foo\": \"bar\"\n        }\n    )\"_json;\n\n    // the patch\n    json patch = R\"(\n        [\n          { \"op\": \"replace\", \"path\": \"/baz\", \"value\": \"boo\" },\n          { \"op\": \"add\", \"path\": \"/hello\", \"value\": [\"world\"] },\n          { \"op\": \"remove\", \"path\": \"/foo\"}\n        ]\n    )\"_json;\n\n    // apply the patch\n    json patched_doc = doc.patch(patch);\n\n    // output original and patched document\n    std::cout << std::setw(4) << doc << \"\\n\\n\"\n              << std::setw(4) << patched_doc << std::endl;\n}\n

      Output:

      {\n    \"baz\": \"qux\",\n    \"foo\": \"bar\"\n}\n\n{\n    \"baz\": \"boo\",\n    \"hello\": [\n        \"world\"\n    ]\n}\n
      "},{"location":"api/basic_json/patch/#see-also","title":"See also","text":"
      • RFC 6902 (JSON Patch)
      • RFC 6901 (JSON Pointer)
      • patch_inplace applies a JSON Patch without creating a copy of the document
      • merge_patch applies a JSON Merge Patch
      "},{"location":"api/basic_json/patch/#version-history","title":"Version history","text":"
      • Added in version 2.0.0.
      "},{"location":"api/basic_json/patch_inplace/","title":"nlohmann::basic_json::patch_inplace","text":"
      void patch_inplace(const basic_json& json_patch) const;\n

      JSON Patch defines a JSON document structure for expressing a sequence of operations to apply to a JSON document. With this function, a JSON Patch is applied to the current JSON value by executing all operations from the patch. This function applies a JSON patch in place and returns void.

      "},{"location":"api/basic_json/patch_inplace/#parameters","title":"Parameters","text":"json_patch (in) JSON patch document"},{"location":"api/basic_json/patch_inplace/#exception-safety","title":"Exception safety","text":"

      No guarantees, value may be corrupted by an unsuccessful patch operation.

      "},{"location":"api/basic_json/patch_inplace/#exceptions","title":"Exceptions","text":"
      • Throws parse_error.104 if the JSON patch does not consist of an array of objects.
      • Throws parse_error.105 if the JSON patch is malformed (e.g., mandatory attributes are missing); example: \"operation add must have member path\".
      • Throws out_of_range.401 if an array index is out of range.
      • Throws out_of_range.403 if a JSON pointer inside the patch could not be resolved successfully in the current JSON value; example: \"key baz not found\".
      • Throws out_of_range.405 if JSON pointer has no parent (\"add\", \"remove\", \"move\")
      • Throws out_of_range.501 if \"test\" operation was unsuccessful.
      "},{"location":"api/basic_json/patch_inplace/#complexity","title":"Complexity","text":"

      Linear in the size of the JSON value and the length of the JSON patch. As usually only a fraction of the JSON value is affected by the patch, the complexity can usually be neglected.

      "},{"location":"api/basic_json/patch_inplace/#notes","title":"Notes","text":"

      Unlike patch, patch_inplace applies the operation \"in place\" and no copy of the JSON value is created. That makes it faster for large documents by avoiding the copy. However, the JSON value might be corrupted if the function throws an exception.

      "},{"location":"api/basic_json/patch_inplace/#examples","title":"Examples","text":"Example

      The following code shows how a JSON patch is applied to a value.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // the original document\n    json doc = R\"(\n        {\n          \"baz\": \"qux\",\n          \"foo\": \"bar\"\n        }\n    )\"_json;\n\n    // the patch\n    json patch = R\"(\n        [\n          { \"op\": \"replace\", \"path\": \"/baz\", \"value\": \"boo\" },\n          { \"op\": \"add\", \"path\": \"/hello\", \"value\": [\"world\"] },\n          { \"op\": \"remove\", \"path\": \"/foo\"}\n        ]\n    )\"_json;\n\n    // output original document\n    std::cout << \"Before\\n\" << std::setw(4) << doc << std::endl;\n\n    // apply the patch\n    doc.patch_inplace(patch);\n\n    // output patched document\n    std::cout << \"\\nAfter\\n\" << std::setw(4) << doc << std::endl;\n}\n

      Output:

      Before\n{\n    \"baz\": \"qux\",\n    \"foo\": \"bar\"\n}\n\nAfter\n{\n    \"baz\": \"boo\",\n    \"hello\": [\n        \"world\"\n    ]\n}\n
      "},{"location":"api/basic_json/patch_inplace/#see-also","title":"See also","text":"
      • RFC 6902 (JSON Patch)
      • RFC 6901 (JSON Pointer)
      • patch applies a JSON Merge Patch
      • merge_patch applies a JSON Merge Patch
      "},{"location":"api/basic_json/patch_inplace/#version-history","title":"Version history","text":"
      • Added in version 3.11.0.
      "},{"location":"api/basic_json/push_back/","title":"nlohmann::basic_json::push_back","text":"
      // (1)\nvoid push_back(basic_json&& val);\nvoid push_back(const basic_json& val);\n\n// (2)\nvoid push_back(const typename object_t::value_type& val);\n\n// (3)\nvoid push_back(initializer_list_t init);\n
      1. Appends the given element val to the end of the JSON array. If the function is called on a JSON null value, an empty array is created before appending val.

      2. Inserts the given element val to the JSON object. If the function is called on a JSON null value, an empty object is created before inserting val.

      3. This function allows using push_back with an initializer list. In case

        1. the current value is an object,
        2. the initializer list init contains only two elements, and
        3. the first element of init is a string,

        init is converted into an object element and added using push_back(const typename object_t::value_type&). Otherwise, init is converted to a JSON value and added using push_back(basic_json&&).

      "},{"location":"api/basic_json/push_back/#iterator-invalidation","title":"Iterator invalidation","text":"

      For all cases where an element is added to an array, a reallocation can happen, in which case all iterators (including the end() iterator) and all references to the elements are invalidated. Otherwise, only the end() iterator is invalidated.

      For ordered_json, also adding an element to an object can yield a reallocation which again invalidates all iterators and all references.

      "},{"location":"api/basic_json/push_back/#parameters","title":"Parameters","text":"val (in) the value to add to the JSON array/object init (in) an initializer list"},{"location":"api/basic_json/push_back/#exceptions","title":"Exceptions","text":"

      All functions can throw the following exception: - Throws type_error.308 when called on a type other than JSON array or null; example: \"cannot use push_back() with number\"

      "},{"location":"api/basic_json/push_back/#complexity","title":"Complexity","text":"
      1. Amortized constant.
      2. Logarithmic in the size of the container, O(log(size())).
      3. Linear in the size of the initializer list init.
      "},{"location":"api/basic_json/push_back/#notes","title":"Notes","text":"

      (3) This function is required to resolve an ambiguous overload error, because pairs like {\"key\", \"value\"} can be both interpreted as object_t::value_type or std::initializer_list<basic_json>, see #235 for more information.

      "},{"location":"api/basic_json/push_back/#examples","title":"Examples","text":"Example: (1) add element to array

      The example shows how push_back() and += can be used to add elements to a JSON array. Note how the null value was silently converted to a JSON array.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json array = {1, 2, 3, 4, 5};\n    json null;\n\n    // print values\n    std::cout << array << '\\n';\n    std::cout << null << '\\n';\n\n    // add values\n    array.push_back(6);\n    array += 7;\n    null += \"first\";\n    null += \"second\";\n\n    // print values\n    std::cout << array << '\\n';\n    std::cout << null << '\\n';\n}\n

      Output:

      [1,2,3,4,5]\nnull\n[1,2,3,4,5,6,7]\n[\"first\",\"second\"]\n
      Example: (2) add element to object

      The example shows how push_back() and += can be used to add elements to a JSON object. Note how the null value was silently converted to a JSON object.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json object = {{\"one\", 1}, {\"two\", 2}};\n    json null;\n\n    // print values\n    std::cout << object << '\\n';\n    std::cout << null << '\\n';\n\n    // add values\n    object.push_back(json::object_t::value_type(\"three\", 3));\n    object += json::object_t::value_type(\"four\", 4);\n    null += json::object_t::value_type(\"A\", \"a\");\n    null += json::object_t::value_type(\"B\", \"b\");\n\n    // print values\n    std::cout << object << '\\n';\n    std::cout << null << '\\n';\n}\n

      Output:

      {\"one\":1,\"two\":2}\nnull\n{\"four\":4,\"one\":1,\"three\":3,\"two\":2}\n{\"A\":\"a\",\"B\":\"b\"}\n
      Example: (3) add to object from initializer list

      The example shows how initializer lists are treated as objects when possible.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json object = {{\"one\", 1}, {\"two\", 2}};\n    json null;\n\n    // print values\n    std::cout << object << '\\n';\n    std::cout << null << '\\n';\n\n    // add values:\n    object.push_back({\"three\", 3});  // object is extended\n    object += {\"four\", 4};           // object is extended\n    null.push_back({\"five\", 5});     // null is converted to array\n\n    // print values\n    std::cout << object << '\\n';\n    std::cout << null << '\\n';\n\n    // would throw:\n    //object.push_back({1, 2, 3});\n}\n

      Output:

      {\"one\":1,\"two\":2}\nnull\n{\"four\":4,\"one\":1,\"three\":3,\"two\":2}\n[[\"five\",5]]\n
      "},{"location":"api/basic_json/push_back/#see-also","title":"See also","text":"
      • emplace_back add a value to an array
      • operator+= add a value to an array/object
      "},{"location":"api/basic_json/push_back/#version-history","title":"Version history","text":"
      1. Since version 1.0.0.
      2. Since version 1.0.0.
      3. Since version 2.0.0.
      "},{"location":"api/basic_json/rbegin/","title":"nlohmann::basic_json::rbegin","text":"
      reverse_iterator rbegin() noexcept;\nconst_reverse_iterator rbegin() const noexcept;\n

      Returns an iterator to the reverse-beginning; that is, the last element.

      "},{"location":"api/basic_json/rbegin/#return-value","title":"Return value","text":"

      reverse iterator to the first element

      "},{"location":"api/basic_json/rbegin/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/rbegin/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/rbegin/#examples","title":"Examples","text":"Example

      The following code shows an example for rbegin().

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create an array value\n    json array = {1, 2, 3, 4, 5};\n\n    // get an iterator to the reverse-beginning\n    json::reverse_iterator it = array.rbegin();\n\n    // serialize the element that the iterator points to\n    std::cout << *it << '\\n';\n}\n

      Output:

      5\n
      "},{"location":"api/basic_json/rbegin/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/rend/","title":"nlohmann::basic_json::rend","text":"
      reverse_iterator rend() noexcept;\nconst_reverse_iterator rend() const noexcept;\n

      Returns an iterator to the reverse-end; that is, one before the first element. This element acts as a placeholder, attempting to access it results in undefined behavior.

      "},{"location":"api/basic_json/rend/#return-value","title":"Return value","text":"

      reverse iterator to the element following the last element

      "},{"location":"api/basic_json/rend/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/rend/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/rend/#examples","title":"Examples","text":"Example

      The following code shows an example for eend().

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create an array value\n    json array = {1, 2, 3, 4, 5};\n\n    // get an iterator to the reverse-end\n    json::reverse_iterator it = array.rend();\n\n    // increment the iterator to point to the first element\n    --it;\n\n    // serialize the element that the iterator points to\n    std::cout << *it << '\\n';\n}\n

      Output:

      1\n
      "},{"location":"api/basic_json/rend/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/sax_parse/","title":"nlohmann::basic_json::sax_parse","text":"
      // (1)\ntemplate <typename InputType, typename SAX>\nstatic bool sax_parse(InputType&& i,\n                      SAX* sax,\n                      input_format_t format = input_format_t::json,\n                      const bool strict = true,\n                      const bool ignore_comments = false);\n\n// (2)\ntemplate<class IteratorType, class SAX>\nstatic bool sax_parse(IteratorType first, IteratorType last,\n                      SAX* sax,\n                      input_format_t format = input_format_t::json,\n                      const bool strict = true,\n                      const bool ignore_comments = false);\n

      Read from input and generate SAX events

      1. Read from a compatible input.
      2. Read from a pair of character iterators

        The value_type of the iterator must be an integral type with size of 1, 2 or 4 bytes, which will be interpreted respectively as UTF-8, UTF-16 and UTF-32.

      The SAX event lister must follow the interface of json_sax.

      "},{"location":"api/basic_json/sax_parse/#template-parameters","title":"Template parameters","text":"InputType

      A compatible input, for instance:

      • an std::istream object
      • a FILE pointer
      • a C-style array of characters
      • a pointer to a null-terminated string of single byte characters
      • an object obj for which begin(obj) and end(obj) produces a valid pair of iterators.
      IteratorType Description SAX Description"},{"location":"api/basic_json/sax_parse/#parameters","title":"Parameters","text":"i (in) Input to parse from. sax (in) SAX event listener format (in) the format to parse (JSON, CBOR, MessagePack, or UBJSON) (optional, input_format_t::json by default), see input_format_t for more information strict (in) whether the input has to be consumed completely (optional, true by default) ignore_comments (in) whether comments should be ignored and treated like whitespace (true) or yield a parse error (false); (optional, false by default) first (in) iterator to start of character range last (in) iterator to end of character range"},{"location":"api/basic_json/sax_parse/#return-value","title":"Return value","text":"

      return value of the last processed SAX event

      "},{"location":"api/basic_json/sax_parse/#exception-safety","title":"Exception safety","text":""},{"location":"api/basic_json/sax_parse/#complexity","title":"Complexity","text":"

      Linear in the length of the input. The parser is a predictive LL(1) parser. The complexity can be higher if the SAX consumer sax has a super-linear complexity.

      "},{"location":"api/basic_json/sax_parse/#notes","title":"Notes","text":"

      A UTF-8 byte order mark is silently ignored.

      "},{"location":"api/basic_json/sax_parse/#examples","title":"Examples","text":"Example

      The example below demonstrates the sax_parse() function reading from string and processing the events with a user-defined SAX event consumer.

      #include <iostream>\n#include <iomanip>\n#include <sstream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector<std::string> events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t& s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t& val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t& val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t& val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string& last_token, const json::exception& ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &sec);\n\n    // output the recorded events\n    for (auto& event : sec.events)\n    {\n        std::cout << event << \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout << \"\\nresult: \" << std::boolalpha << result << std::endl;\n}\n

      Output:

      start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634<U+000A>        }<U+000A>    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n
      "},{"location":"api/basic_json/sax_parse/#version-history","title":"Version history","text":"
      • Added in version 3.2.0.
      • Ignoring comments via ignore_comments added in version 3.9.0.

      Deprecation

      Overload (2) replaces calls to sax_parse with a pair of iterators as their first parameter which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like sax_parse({ptr, ptr+len}); with sax_parse(ptr, ptr+len);.

      "},{"location":"api/basic_json/size/","title":"nlohmann::basic_json::size","text":"
      size_type size() const noexcept;\n

      Returns the number of elements in a JSON value.

      "},{"location":"api/basic_json/size/#return-value","title":"Return value","text":"

      The return value depends on the different types and is defined as follows:

      Value type return value null 0 boolean 1 string 1 number 1 binary 1 object result of function object_t::size() array result of function array_t::size()"},{"location":"api/basic_json/size/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this function never throws exceptions.

      "},{"location":"api/basic_json/size/#complexity","title":"Complexity","text":"

      Constant, as long as array_t and object_t satisfy the Container concept; that is, their size() functions have constant complexity.

      "},{"location":"api/basic_json/size/#notes","title":"Notes","text":"

      This function does not return the length of a string stored as JSON value -- it returns the number of elements in the JSON value which is 1 in the case of a string.

      "},{"location":"api/basic_json/size/#examples","title":"Examples","text":"Example

      The following code calls size() on the different value types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_object_empty(json::value_t::object);\n    json j_array = {1, 2, 4, 8, 16};\n    json j_array_empty(json::value_t::array);\n    json j_string = \"Hello, world\";\n\n    // call size()\n    std::cout << j_null.size() << '\\n';\n    std::cout << j_boolean.size() << '\\n';\n    std::cout << j_number_integer.size() << '\\n';\n    std::cout << j_number_float.size() << '\\n';\n    std::cout << j_object.size() << '\\n';\n    std::cout << j_object_empty.size() << '\\n';\n    std::cout << j_array.size() << '\\n';\n    std::cout << j_array_empty.size() << '\\n';\n    std::cout << j_string.size() << '\\n';\n}\n

      Output:

      0\n1\n1\n1\n2\n0\n5\n0\n1\n
      "},{"location":"api/basic_json/size/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      • Extended to return 1 for binary types in version 3.8.0.
      "},{"location":"api/basic_json/std_hash/","title":"std::hash<nlohmann::basic_json>","text":"
      namespace std {\n    struct hash<nlohmann::basic_json>;\n}\n

      Return a hash value for a JSON object. The hash function tries to rely on std::hash where possible. Furthermore, the type of the JSON value is taken into account to have different hash values for null, 0, 0U, and false, etc.

      "},{"location":"api/basic_json/std_hash/#examples","title":"Examples","text":"Example

      The example shows how to calculate hash values for different JSON values.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    std::cout << \"hash(null) = \" << std::hash<json> {}(json(nullptr)) << '\\n'\n              << \"hash(false) = \" << std::hash<json> {}(json(false)) << '\\n'\n              << \"hash(0) = \" << std::hash<json> {}(json(0)) << '\\n'\n              << \"hash(0U) = \" << std::hash<json> {}(json(0U)) << '\\n'\n              << \"hash(\\\"\\\") = \" << std::hash<json> {}(json(\"\")) << '\\n'\n              << \"hash({}) = \" << std::hash<json> {}(json::object()) << '\\n'\n              << \"hash([]) = \" << std::hash<json> {}(json::array()) << '\\n'\n              << \"hash({\\\"hello\\\": \\\"world\\\"}) = \" << std::hash<json> {}(\"{\\\"hello\\\": \\\"world\\\"}\"_json)\n              << std::endl;\n}\n

      Output:

      hash(null) = 2654435769\nhash(false) = 2654436030\nhash(0) = 2654436095\nhash(0U) = 2654436156\nhash(\"\") = 6142509191626859748\nhash({}) = 2654435832\nhash([]) = 2654435899\nhash({\"hello\": \"world\"}) = 4469488738203676328\n

      Note the output is platform-dependent.

      "},{"location":"api/basic_json/std_hash/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      • Extended for arbitrary basic_json types in version 3.10.5.
      "},{"location":"api/basic_json/std_swap/","title":"std::swap<basic_json>","text":"
      namespace std {\n    void swap(nlohmann::basic_json& j1, nlohmann::basic_json& j2);\n}\n

      Exchanges the values of two JSON objects.

      "},{"location":"api/basic_json/std_swap/#parameters","title":"Parameters","text":"j1 (in, out) value to be replaced by j2 j2 (in, out) value to be replaced by j1"},{"location":"api/basic_json/std_swap/#possible-implementation","title":"Possible implementation","text":"
      void swap(nlohmann::basic_json& j1, nlohmann::basic_json& j2)\n{\n    j1.swap(j2);\n}\n
      "},{"location":"api/basic_json/std_swap/#examples","title":"Examples","text":"Example

      The following code shows how two values are swapped with std::swap.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j1 = {{\"one\", 1}, {\"two\", 2}};\n    json j2 = {1, 2, 4, 8, 16};\n\n    std::cout << \"j1 = \" << j1 << \" | j2 = \" << j2 << '\\n';\n\n    // swap values\n    std::swap(j1, j2);\n\n    std::cout << \"j1 = \" << j1 << \" | j2 = \" << j2 << std::endl;\n}\n

      Output:

      j1 = {\"one\":1,\"two\":2} | j2 = [1,2,4,8,16]\nj1 = [1,2,4,8,16] | j2 = {\"one\":1,\"two\":2}\n
      "},{"location":"api/basic_json/std_swap/#see-also","title":"See also","text":"
      • swap
      "},{"location":"api/basic_json/std_swap/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      • Extended for arbitrary basic_json types in version 3.10.5.
      "},{"location":"api/basic_json/string_t/","title":"nlohmann::basic_json::string_t","text":"
      using string_t = StringType;\n

      The type used to store JSON strings.

      RFC 8259 describes JSON strings as follows:

      A string is a sequence of zero or more Unicode characters.

      To store objects in C++, a type is defined by the template parameter described below. Unicode values are split by the JSON class into byte-sized characters during deserialization.

      "},{"location":"api/basic_json/string_t/#template-parameters","title":"Template parameters","text":"StringType the container to store strings (e.g., std::string). Note this container is used for keys/names in objects, see object_t."},{"location":"api/basic_json/string_t/#notes","title":"Notes","text":""},{"location":"api/basic_json/string_t/#default-type","title":"Default type","text":"

      With the default values for StringType (std::string), the default value for string_t is std::string.

      "},{"location":"api/basic_json/string_t/#encoding","title":"Encoding","text":"

      Strings are stored in UTF-8 encoding. Therefore, functions like std::string::size() or std::string::length() return the number of bytes in the string rather than the number of characters or glyphs.

      "},{"location":"api/basic_json/string_t/#string-comparison","title":"String comparison","text":"

      RFC 8259 states:

      Software implementations are typically required to test names of object members for equality. Implementations that transform the textual representation into sequences of Unicode code units and then perform the comparison numerically, code unit by code unit, are interoperable in the sense that implementations will agree in all cases on equality or inequality of two strings. For example, implementations that compare strings with escaped characters unconverted may incorrectly find that \"a\\\\b\" and \"a\\u005Cb\" are not equal.

      This implementation is interoperable as it does compare strings code unit by code unit.

      "},{"location":"api/basic_json/string_t/#storage","title":"Storage","text":"

      String values are stored as pointers in a basic_json type. That is, for any access to string values, a pointer of type string_t* must be dereferenced.

      "},{"location":"api/basic_json/string_t/#examples","title":"Examples","text":"Example

      The following code shows that string_t is by default, a typedef to std::string.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout << std::boolalpha << std::is_same<std::string, json::string_t>::value << std::endl;\n}\n

      Output:

      true\n
      "},{"location":"api/basic_json/string_t/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/swap/","title":"nlohmann::basic_json::swap","text":"
      // (1)\nvoid swap(reference other) noexcept;\n\n// (2)\nvoid swap(reference left, reference right) noexcept;\n\n// (3)\nvoid swap(array_t& other);\n\n// (4)\nvoid swap(object_t& other);\n\n// (5)\nvoid swap(string_t& other);\n\n// (6)\nvoid swap(binary_t& other);\n\n// (7)\nvoid swap(typename binary_t::container_type& other);\n
      1. Exchanges the contents of the JSON value with those of other. Does not invoke any move, copy, or swap operations on individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated.
      2. Exchanges the contents of the JSON value from left with those of right. Does not invoke any move, copy, or swap operations on individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated. Implemented as a friend function callable via ADL.
      3. Exchanges the contents of a JSON array with those of other. Does not invoke any move, copy, or swap operations on individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated.
      4. Exchanges the contents of a JSON object with those of other. Does not invoke any move, copy, or swap operations on individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated.
      5. Exchanges the contents of a JSON string with those of other. Does not invoke any move, copy, or swap operations on individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated.
      6. Exchanges the contents of a binary value with those of other. Does not invoke any move, copy, or swap operations on individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated.
      7. Exchanges the contents of a binary value with those of other. Does not invoke any move, copy, or swap operations on individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated. Unlike version (6), no binary subtype is involved.
      "},{"location":"api/basic_json/swap/#parameters","title":"Parameters","text":"other (in, out) value to exchange the contents with left (in, out) value to exchange the contents with right (in, out) value to exchange the contents with"},{"location":"api/basic_json/swap/#exceptions","title":"Exceptions","text":"
      1. No-throw guarantee: this function never throws exceptions.
      2. No-throw guarantee: this function never throws exceptions.
      3. Throws type_error.310 if called on JSON values other than arrays; example: \"cannot use swap() with boolean\"
      4. Throws type_error.310 if called on JSON values other than objects; example: \"cannot use swap() with boolean\"
      5. Throws type_error.310 if called on JSON values other than strings; example: \"cannot use swap() with boolean\"
      6. Throws type_error.310 if called on JSON values other than binaries; example: \"cannot use swap() with boolean\"
      7. Throws type_error.310 if called on JSON values other than binaries; example: \"cannot use swap() with boolean\"
      "},{"location":"api/basic_json/swap/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/swap/#examples","title":"Examples","text":"Example: Swap JSON value (1, 2)

      The example below shows how JSON values can be swapped with swap().

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create two JSON values\n    json j1 = {1, 2, 3, 4, 5};\n    json j2 = {{\"pi\", 3.141592653589793}, {\"e\", 2.718281828459045}};\n\n    // swap the values\n    j1.swap(j2);\n\n    // output the values\n    std::cout << \"j1 = \" << j1 << '\\n';\n    std::cout << \"j2 = \" << j2 << '\\n';\n}\n

      Output:

      j1 = {\"e\":2.718281828459045,\"pi\":3.141592653589793}\nj2 = [1,2,3,4,5]\n
      Example: Swap array (3)

      The example below shows how arrays can be swapped with swap().

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON value\n    json value = {{\"array\", {1, 2, 3, 4}}};\n\n    // create an array_t\n    json::array_t array = {\"Snap\", \"Crackle\", \"Pop\"};\n\n    // swap the array stored in the JSON value\n    value[\"array\"].swap(array);\n\n    // output the values\n    std::cout << \"value = \" << value << '\\n';\n    std::cout << \"array = \" << array << '\\n';\n}\n

      Output:

      value = {\"array\":[\"Snap\",\"Crackle\",\"Pop\"]}\narray = [1,2,3,4]\n
      Example: Swap object (4)

      The example below shows how objects can be swapped with swap().

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON value\n    json value = { {\"translation\", {{\"one\", \"eins\"}, {\"two\", \"zwei\"}}} };\n\n    // create an object_t\n    json::object_t object = {{\"cow\", \"Kuh\"}, {\"dog\", \"Hund\"}};\n\n    // swap the object stored in the JSON value\n    value[\"translation\"].swap(object);\n\n    // output the values\n    std::cout << \"value = \" << value << '\\n';\n    std::cout << \"object = \" << object << '\\n';\n}\n

      Output:

      value = {\"translation\":{\"cow\":\"Kuh\",\"dog\":\"Hund\"}}\nobject = {\"one\":\"eins\",\"two\":\"zwei\"}\n
      Example: Swap string (5)

      The example below shows how strings can be swapped with swap().

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON value\n    json value = { \"the good\", \"the bad\", \"the ugly\" };\n\n    // create string_t\n    json::string_t string = \"the fast\";\n\n    // swap the object stored in the JSON value\n    value[1].swap(string);\n\n    // output the values\n    std::cout << \"value = \" << value << '\\n';\n    std::cout << \"string = \" << string << '\\n';\n}\n

      Output:

      value = [\"the good\",\"the fast\",\"the ugly\"]\nstring = the bad\n
      Example: Swap string (6)

      The example below shows how binary values can be swapped with swap().

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a binary value\n    json value = json::binary({1, 2, 3});\n\n    // create a binary_t\n    json::binary_t binary = {{4, 5, 6}};\n\n    // swap the object stored in the JSON value\n    value.swap(binary);\n\n    // output the values\n    std::cout << \"value = \" << value << '\\n';\n    std::cout << \"binary = \" << json(binary) << '\\n';\n}\n

      Output:

      value = {\"bytes\":[4,5,6],\"subtype\":null}\nbinary = {\"bytes\":[1,2,3],\"subtype\":null}\n
      "},{"location":"api/basic_json/swap/#see-also","title":"See also","text":"
      • std::swap<basic_json>
      "},{"location":"api/basic_json/swap/#version-history","title":"Version history","text":"
      1. Since version 1.0.0.
      2. Since version 1.0.0.
      3. Since version 1.0.0.
      4. Since version 1.0.0.
      5. Since version 1.0.0.
      6. Since version 3.8.0.
      7. Since version 3.8.0.
      "},{"location":"api/basic_json/to_bjdata/","title":"nlohmann::basic_json::to_bjdata","text":"
      // (1)\nstatic std::vector<std::uint8_t> to_bjdata(const basic_json& j,\n                                           const bool use_size = false,\n                                           const bool use_type = false);\n\n// (2)\nstatic void to_bjdata(const basic_json& j, detail::output_adapter<std::uint8_t> o,\n                      const bool use_size = false, const bool use_type = false);\nstatic void to_bjdata(const basic_json& j, detail::output_adapter<char> o,\n                      const bool use_size = false, const bool use_type = false);\n

      Serializes a given JSON value j to a byte vector using the BJData (Binary JData) serialization format. BJData aims to be more compact than JSON itself, yet more efficient to parse.

      1. Returns a byte vector containing the BJData serialization.
      2. Writes the BJData serialization to an output adapter.

      The exact mapping and its limitations is described on a dedicated page.

      "},{"location":"api/basic_json/to_bjdata/#parameters","title":"Parameters","text":"j (in) JSON value to serialize o (in) output adapter to write serialization to use_size (in) whether to add size annotations to container types; optional, false by default. use_type (in) whether to add type annotations to container types (must be combined with use_size = true); optional, false by default."},{"location":"api/basic_json/to_bjdata/#return-value","title":"Return value","text":"
      1. BJData serialization as byte vector
      2. (none)
      "},{"location":"api/basic_json/to_bjdata/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

      "},{"location":"api/basic_json/to_bjdata/#complexity","title":"Complexity","text":"

      Linear in the size of the JSON value j.

      "},{"location":"api/basic_json/to_bjdata/#examples","title":"Examples","text":"Example

      The example shows the serialization of a JSON value to a byte vector in BJData format.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\n// function to print BJData's diagnostic format\nvoid print_byte(uint8_t byte)\n{\n    if (32 < byte and byte < 128)\n    {\n        std::cout << (char)byte;\n    }\n    else\n    {\n        std::cout << (int)byte;\n    }\n}\n\nint main()\n{\n    // create a JSON value\n    json j = R\"({\"compact\": true, \"schema\": false})\"_json;\n\n    // serialize it to BJData\n    std::vector<std::uint8_t> v = json::to_bjdata(j);\n\n    // print the vector content\n    for (auto& byte : v)\n    {\n        print_byte(byte);\n    }\n    std::cout << std::endl;\n\n    // create an array of numbers\n    json array = {1, 2, 3, 4, 5, 6, 7, 8};\n\n    // serialize it to BJData using default representation\n    std::vector<std::uint8_t> v_array = json::to_bjdata(array);\n    // serialize it to BJData using size optimization\n    std::vector<std::uint8_t> v_array_size = json::to_bjdata(array, true);\n    // serialize it to BJData using type optimization\n    std::vector<std::uint8_t> v_array_size_and_type = json::to_bjdata(array, true, true);\n\n    // print the vector contents\n    for (auto& byte : v_array)\n    {\n        print_byte(byte);\n    }\n    std::cout << std::endl;\n\n    for (auto& byte : v_array_size)\n    {\n        print_byte(byte);\n    }\n    std::cout << std::endl;\n\n    for (auto& byte : v_array_size_and_type)\n    {\n        print_byte(byte);\n    }\n    std::cout << std::endl;\n}\n

      Output:

      {i7compactTi6schemaF}\n[i1i2i3i4i5i6i7i8]\n[#i8i1i2i3i4i5i6i7i8\n[$i#i812345678\n
      "},{"location":"api/basic_json/to_bjdata/#version-history","title":"Version history","text":"
      • Added in version 3.11.0.
      "},{"location":"api/basic_json/to_bson/","title":"nlohmann::basic_json::to_bson","text":"
      // (1)\nstatic std::vector<std::uint8_t> to_bson(const basic_json& j);\n\n// (2)\nstatic void to_bson(const basic_json& j, detail::output_adapter<std::uint8_t> o);\nstatic void to_bson(const basic_json& j, detail::output_adapter<char> o);\n

      BSON (Binary JSON) is a binary format in which zero or more ordered key/value pairs are stored as a single entity (a so-called document).

      1. Returns a byte vector containing the BSON serialization.
      2. Writes the BSON serialization to an output adapter.

      The exact mapping and its limitations is described on a dedicated page.

      "},{"location":"api/basic_json/to_bson/#parameters","title":"Parameters","text":"j (in) JSON value to serialize o (in) output adapter to write serialization to"},{"location":"api/basic_json/to_bson/#return-value","title":"Return value","text":"
      1. BSON serialization as byte vector
      2. (none)
      "},{"location":"api/basic_json/to_bson/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

      "},{"location":"api/basic_json/to_bson/#complexity","title":"Complexity","text":"

      Linear in the size of the JSON value j.

      "},{"location":"api/basic_json/to_bson/#examples","title":"Examples","text":"Example

      The example shows the serialization of a JSON value to a byte vector in BSON format.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON value\n    json j = R\"({\"compact\": true, \"schema\": 0})\"_json;\n\n    // serialize it to BSON\n    std::vector<std::uint8_t> v = json::to_bson(j);\n\n    // print the vector content\n    for (auto& byte : v)\n    {\n        std::cout << \"0x\" << std::hex << std::setw(2) << std::setfill('0') << (int)byte << \" \";\n    }\n    std::cout << std::endl;\n}\n

      Output:

      0x1b 0x00 0x00 0x00 0x08 0x63 0x6f 0x6d 0x70 0x61 0x63 0x74 0x00 0x01 0x10 0x73 0x63 0x68 0x65 0x6d 0x61 0x00 0x00 0x00 0x00 0x00 0x00 \n
      "},{"location":"api/basic_json/to_bson/#version-history","title":"Version history","text":"
      • Added in version 3.4.0.
      "},{"location":"api/basic_json/to_cbor/","title":"nlohmann::basic_json::to_cbor","text":"
      // (1)\nstatic std::vector<std::uint8_t> to_cbor(const basic_json& j);\n\n// (2)\nstatic void to_cbor(const basic_json& j, detail::output_adapter<std::uint8_t> o);\nstatic void to_cbor(const basic_json& j, detail::output_adapter<char> o);\n

      Serializes a given JSON value j to a byte vector using the CBOR (Concise Binary Object Representation) serialization format. CBOR is a binary serialization format which aims to be more compact than JSON itself, yet more efficient to parse.

      1. Returns a byte vector containing the CBOR serialization.
      2. Writes the CBOR serialization to an output adapter.

      The exact mapping and its limitations is described on a dedicated page.

      "},{"location":"api/basic_json/to_cbor/#parameters","title":"Parameters","text":"j (in) JSON value to serialize o (in) output adapter to write serialization to"},{"location":"api/basic_json/to_cbor/#return-value","title":"Return value","text":"
      1. CBOR serialization as byte vector
      2. (none)
      "},{"location":"api/basic_json/to_cbor/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

      "},{"location":"api/basic_json/to_cbor/#complexity","title":"Complexity","text":"

      Linear in the size of the JSON value j.

      "},{"location":"api/basic_json/to_cbor/#examples","title":"Examples","text":"Example

      The example shows the serialization of a JSON value to a byte vector in CBOR format.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON value\n    json j = R\"({\"compact\": true, \"schema\": 0})\"_json;\n\n    // serialize it to CBOR\n    std::vector<std::uint8_t> v = json::to_cbor(j);\n\n    // print the vector content\n    for (auto& byte : v)\n    {\n        std::cout << \"0x\" << std::hex << std::setw(2) << std::setfill('0') << (int)byte << \" \";\n    }\n    std::cout << std::endl;\n}\n

      Output:

      0xa2 0x67 0x63 0x6f 0x6d 0x70 0x61 0x63 0x74 0xf5 0x66 0x73 0x63 0x68 0x65 0x6d 0x61 0x00 \n
      "},{"location":"api/basic_json/to_cbor/#version-history","title":"Version history","text":"
      • Added in version 2.0.9.
      • Compact representation of floating-point numbers added in version 3.8.0.
      "},{"location":"api/basic_json/to_msgpack/","title":"nlohmann::basic_json::to_msgpack","text":"
      // (1)\nstatic std::vector<std::uint8_t> to_msgpack(const basic_json& j);\n\n// (2)\nstatic void to_msgpack(const basic_json& j, detail::output_adapter<std::uint8_t> o);\nstatic void to_msgpack(const basic_json& j, detail::output_adapter<char> o);\n

      Serializes a given JSON value j to a byte vector using the MessagePack serialization format. MessagePack is a binary serialization format which aims to be more compact than JSON itself, yet more efficient to parse.

      1. Returns a byte vector containing the MessagePack serialization.
      2. Writes the MessagePack serialization to an output adapter.

      The exact mapping and its limitations is described on a dedicated page.

      "},{"location":"api/basic_json/to_msgpack/#parameters","title":"Parameters","text":"j (in) JSON value to serialize o (in) output adapter to write serialization to"},{"location":"api/basic_json/to_msgpack/#return-value","title":"Return value","text":"
      1. MessagePack serialization as byte vector
      2. (none)
      "},{"location":"api/basic_json/to_msgpack/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

      "},{"location":"api/basic_json/to_msgpack/#complexity","title":"Complexity","text":"

      Linear in the size of the JSON value j.

      "},{"location":"api/basic_json/to_msgpack/#examples","title":"Examples","text":"Example

      The example shows the serialization of a JSON value to a byte vector in MessagePack format.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON value\n    json j = R\"({\"compact\": true, \"schema\": 0})\"_json;\n\n    // serialize it to MessagePack\n    std::vector<std::uint8_t> v = json::to_msgpack(j);\n\n    // print the vector content\n    for (auto& byte : v)\n    {\n        std::cout << \"0x\" << std::hex << std::setw(2) << std::setfill('0') << (int)byte << \" \";\n    }\n    std::cout << std::endl;\n}\n

      Output:

      0x82 0xa7 0x63 0x6f 0x6d 0x70 0x61 0x63 0x74 0xc3 0xa6 0x73 0x63 0x68 0x65 0x6d 0x61 0x00 \n
      "},{"location":"api/basic_json/to_msgpack/#version-history","title":"Version history","text":"
      • Added in version 2.0.9.
      "},{"location":"api/basic_json/to_string/","title":"to_string(basic_json)","text":"
      template <typename BasicJsonType>\nstd::string to_string(const BasicJsonType& j);\n

      This function implements a user-defined to_string for JSON objects.

      "},{"location":"api/basic_json/to_string/#template-parameters","title":"Template parameters","text":"BasicJsonType a specialization of basic_json"},{"location":"api/basic_json/to_string/#return-value","title":"Return value","text":"

      string containing the serialization of the JSON value

      "},{"location":"api/basic_json/to_string/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes to any JSON value.

      "},{"location":"api/basic_json/to_string/#exceptions","title":"Exceptions","text":"

      Throws type_error.316 if a string stored inside the JSON value is not UTF-8 encoded

      "},{"location":"api/basic_json/to_string/#complexity","title":"Complexity","text":"

      Linear.

      "},{"location":"api/basic_json/to_string/#possible-implementation","title":"Possible implementation","text":"
      template <typename BasicJsonType>\nstd::string to_string(const BasicJsonType& j)\n{\n    return j.dump();\n}\n
      "},{"location":"api/basic_json/to_string/#examples","title":"Examples","text":"Example

      The following code shows how the library's to_string() function integrates with others, allowing argument-dependent lookup.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing std::to_string;\n\nint main()\n{\n    // create values\n    json j = {{\"one\", 1}, {\"two\", 2}};\n    int i = 42;\n\n    // use ADL to select best to_string function\n    auto j_str = to_string(j);  // calling nlohmann::to_string\n    auto i_str = to_string(i);  // calling std::to_string\n\n    // serialize without indentation\n    std::cout << j_str << \"\\n\\n\"\n              << i_str << std::endl;\n}\n

      Output:

      {\"one\":1,\"two\":2}\n\n42\n
      "},{"location":"api/basic_json/to_string/#see-also","title":"See also","text":"
      • dump
      "},{"location":"api/basic_json/to_string/#version-history","title":"Version history","text":"

      Added in version 3.7.0.

      "},{"location":"api/basic_json/to_ubjson/","title":"nlohmann::basic_json::to_ubjson","text":"
      // (1)\nstatic std::vector<std::uint8_t> to_ubjson(const basic_json& j,\n                                           const bool use_size = false,\n                                           const bool use_type = false);\n\n// (2)\nstatic void to_ubjson(const basic_json& j, detail::output_adapter<std::uint8_t> o,\n                      const bool use_size = false, const bool use_type = false);\nstatic void to_ubjson(const basic_json& j, detail::output_adapter<char> o,\n                      const bool use_size = false, const bool use_type = false);\n

      Serializes a given JSON value j to a byte vector using the UBJSON (Universal Binary JSON) serialization format. UBJSON aims to be more compact than JSON itself, yet more efficient to parse.

      1. Returns a byte vector containing the UBJSON serialization.
      2. Writes the UBJSON serialization to an output adapter.

      The exact mapping and its limitations is described on a dedicated page.

      "},{"location":"api/basic_json/to_ubjson/#parameters","title":"Parameters","text":"j (in) JSON value to serialize o (in) output adapter to write serialization to use_size (in) whether to add size annotations to container types; optional, false by default. use_type (in) whether to add type annotations to container types (must be combined with use_size = true); optional, false by default."},{"location":"api/basic_json/to_ubjson/#return-value","title":"Return value","text":"
      1. UBJSON serialization as byte vector
      2. (none)
      "},{"location":"api/basic_json/to_ubjson/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

      "},{"location":"api/basic_json/to_ubjson/#complexity","title":"Complexity","text":"

      Linear in the size of the JSON value j.

      "},{"location":"api/basic_json/to_ubjson/#examples","title":"Examples","text":"Example

      The example shows the serialization of a JSON value to a byte vector in UBJSON format.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\n// function to print UBJSON's diagnostic format\nvoid print_byte(uint8_t byte)\n{\n    if (32 < byte and byte < 128)\n    {\n        std::cout << (char)byte;\n    }\n    else\n    {\n        std::cout << (int)byte;\n    }\n}\n\nint main()\n{\n    // create a JSON value\n    json j = R\"({\"compact\": true, \"schema\": false})\"_json;\n\n    // serialize it to UBJSON\n    std::vector<std::uint8_t> v = json::to_ubjson(j);\n\n    // print the vector content\n    for (auto& byte : v)\n    {\n        print_byte(byte);\n    }\n    std::cout << std::endl;\n\n    // create an array of numbers\n    json array = {1, 2, 3, 4, 5, 6, 7, 8};\n\n    // serialize it to UBJSON using default representation\n    std::vector<std::uint8_t> v_array = json::to_ubjson(array);\n    // serialize it to UBJSON using size optimization\n    std::vector<std::uint8_t> v_array_size = json::to_ubjson(array, true);\n    // serialize it to UBJSON using type optimization\n    std::vector<std::uint8_t> v_array_size_and_type = json::to_ubjson(array, true, true);\n\n    // print the vector contents\n    for (auto& byte : v_array)\n    {\n        print_byte(byte);\n    }\n    std::cout << std::endl;\n\n    for (auto& byte : v_array_size)\n    {\n        print_byte(byte);\n    }\n    std::cout << std::endl;\n\n    for (auto& byte : v_array_size_and_type)\n    {\n        print_byte(byte);\n    }\n    std::cout << std::endl;\n}\n

      Output:

      {i7compactTi6schemaF}\n[i1i2i3i4i5i6i7i8]\n[#i8i1i2i3i4i5i6i7i8\n[$i#i812345678\n
      "},{"location":"api/basic_json/to_ubjson/#version-history","title":"Version history","text":"
      • Added in version 3.1.0.
      "},{"location":"api/basic_json/type/","title":"nlohmann::basic_json::type","text":"
      constexpr value_t type() const noexcept;\n

      Return the type of the JSON value as a value from the value_t enumeration.

      "},{"location":"api/basic_json/type/#return-value","title":"Return value","text":"

      the type of the JSON value

      Value type return value null value_t::null boolean value_t::boolean string value_t::string number (integer) value_t::number_integer number (unsigned integer) value_t::number_unsigned number (floating-point) value_t::number_float object value_t::object array value_t::array binary value_t::binary discarded value_t::discarded"},{"location":"api/basic_json/type/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/type/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/type/#examples","title":"Examples","text":"Example

      The following code exemplifies type() for all JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = -17;\n    json j_number_unsigned = 42u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n\n    // call type()\n    std::cout << std::boolalpha;\n    std::cout << (j_null.type() == json::value_t::null) << '\\n';\n    std::cout << (j_boolean.type() == json::value_t::boolean) << '\\n';\n    std::cout << (j_number_integer.type() == json::value_t::number_integer) << '\\n';\n    std::cout << (j_number_unsigned.type() == json::value_t::number_unsigned) << '\\n';\n    std::cout << (j_number_float.type() == json::value_t::number_float) << '\\n';\n    std::cout << (j_object.type() == json::value_t::object) << '\\n';\n    std::cout << (j_array.type() == json::value_t::array) << '\\n';\n    std::cout << (j_string.type() == json::value_t::string) << '\\n';\n}\n

      Output:

      true\ntrue\ntrue\ntrue\ntrue\ntrue\ntrue\ntrue\n
      "},{"location":"api/basic_json/type/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      • Added unsigned integer type in version 2.0.0.
      • Added binary type in version 3.8.0.
      "},{"location":"api/basic_json/type_error/","title":"nlohmann::basic_json::type_error","text":"
      class type_error : public exception;\n

      This exception is thrown in case of a type error; that is, a library function is executed on a JSON value whose type does not match the expected semantics.

      Exceptions have ids 3xx (see list of type errors).

      classDiagram\n  direction LR\n\n    class std_exception [\"std::exception\"] {\n        <<interface>>\n    }\n\n    class json_exception [\"basic_json::exception\"] {\n        +const int id\n        +const char* what() const\n    }\n\n    class json_parse_error [\"basic_json::parse_error\"] {\n        +const std::size_t byte\n    }\n\n    class json_invalid_iterator [\"basic_json::invalid_iterator\"]\n    class json_type_error [\"basic_json::type_error\"]\n    class json_out_of_range [\"basic_json::out_of_range\"]\n    class json_other_error [\"basic_json::other_error\"]\n\n    std_exception <|-- json_exception\n    json_exception <|-- json_parse_error\n    json_exception <|-- json_invalid_iterator\n    json_exception <|-- json_type_error\n    json_exception <|-- json_out_of_range\n    json_exception <|-- json_other_error\n\n    style json_type_error fill:#CCCCFF
      "},{"location":"api/basic_json/type_error/#member-functions","title":"Member functions","text":"
      • what - returns explanatory string
      "},{"location":"api/basic_json/type_error/#member-variables","title":"Member variables","text":"
      • id - the id of the exception
      "},{"location":"api/basic_json/type_error/#examples","title":"Examples","text":"Example

      The following code shows how a type_error exception can be caught.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    try\n    {\n        // calling push_back() on a string value\n        json j = \"string\";\n        j.push_back(\"another string\");\n    }\n    catch (const json::type_error& e)\n    {\n        // output exception information\n        std::cout << \"message: \" << e.what() << '\\n'\n                  << \"exception id: \" << e.id << std::endl;\n    }\n}\n

      Output:

      message: [json.exception.type_error.308] cannot use push_back() with string\nexception id: 308\n
      "},{"location":"api/basic_json/type_error/#see-also","title":"See also","text":"
      • List of type errors
      • parse_error for exceptions indicating a parse error
      • invalid_iterator for exceptions indicating errors with iterators
      • out_of_range for exceptions indicating access out of the defined range
      • other_error for exceptions indicating other library errors
      "},{"location":"api/basic_json/type_error/#version-history","title":"Version history","text":"
      • Since version 3.0.0.
      "},{"location":"api/basic_json/type_name/","title":"nlohmann::basic_json::type_name","text":"
      const char* type_name() const noexcept;\n

      Returns the type name as string to be used in error messages -- usually to indicate that a function was called on a wrong JSON type.

      "},{"location":"api/basic_json/type_name/#return-value","title":"Return value","text":"

      a string representation of the type (value_t):

      Value type return value null \"null\" boolean \"boolean\" string \"string\" number (integer, unsigned integer, floating-point) \"number\" object \"object\" array \"array\" binary \"binary\" discarded \"discarded\""},{"location":"api/basic_json/type_name/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/type_name/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/type_name/#examples","title":"Examples","text":"Example

      The following code exemplifies type_name() for all JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = -17;\n    json j_number_unsigned = 42u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n\n    // call type_name()\n    std::cout << j_null << \" is a \" << j_null.type_name() << '\\n';\n    std::cout << j_boolean << \" is a \" << j_boolean.type_name() << '\\n';\n    std::cout << j_number_integer << \" is a \" << j_number_integer.type_name() << '\\n';\n    std::cout << j_number_unsigned << \" is a \" << j_number_unsigned.type_name() << '\\n';\n    std::cout << j_number_float << \" is a \" << j_number_float.type_name() << '\\n';\n    std::cout << j_object << \" is an \" << j_object.type_name() << '\\n';\n    std::cout << j_array << \" is an \" << j_array.type_name() << '\\n';\n    std::cout << j_string << \" is a \" << j_string.type_name() << '\\n';\n}\n

      Output:

      null is a null\ntrue is a boolean\n-17 is a number\n42 is a number\n23.42 is a number\n{\"one\":1,\"two\":2} is an object\n[1,2,4,8,16] is an array\n\"Hello, world\" is a string\n
      "},{"location":"api/basic_json/type_name/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      • Part of the public API version since 2.1.0.
      • Changed return value to const char* and added noexcept in version 3.0.0.
      • Added support for binary type in version 3.8.0.
      "},{"location":"api/basic_json/unflatten/","title":"nlohmann::basic_json::unflatten","text":"
      basic_json unflatten() const;\n

      The function restores the arbitrary nesting of a JSON value that has been flattened before using the flatten() function. The JSON value must meet certain constraints:

      1. The value must be an object.
      2. The keys must be JSON pointers (see RFC 6901)
      3. The mapped values must be primitive JSON types.
      "},{"location":"api/basic_json/unflatten/#return-value","title":"Return value","text":"

      the original JSON from a flattened version

      "},{"location":"api/basic_json/unflatten/#exception-safety","title":"Exception safety","text":"

      Strong exception safety: if an exception occurs, the original value stays intact.

      "},{"location":"api/basic_json/unflatten/#exceptions","title":"Exceptions","text":"

      The function can throw the following exceptions:

      • Throws type_error.314 if value is not an object
      • Throws type_error.315 if object values are not primitive
      "},{"location":"api/basic_json/unflatten/#complexity","title":"Complexity","text":"

      Linear in the size the JSON value.

      "},{"location":"api/basic_json/unflatten/#notes","title":"Notes","text":"

      Empty objects and arrays are flattened by flatten() to null values and can not unflattened to their original type. Apart from this example, for a JSON value j, the following is always true: j == j.flatten().unflatten().

      "},{"location":"api/basic_json/unflatten/#examples","title":"Examples","text":"Example

      The following code shows how a flattened JSON object is unflattened into the original nested JSON object.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON value\n    json j_flattened =\n    {\n        {\"/answer/everything\", 42},\n        {\"/happy\", true},\n        {\"/list/0\", 1},\n        {\"/list/1\", 0},\n        {\"/list/2\", 2},\n        {\"/name\", \"Niels\"},\n        {\"/nothing\", nullptr},\n        {\"/object/currency\", \"USD\"},\n        {\"/object/value\", 42.99},\n        {\"/pi\", 3.141}\n    };\n\n    // call unflatten()\n    std::cout << std::setw(4) << j_flattened.unflatten() << '\\n';\n}\n

      Output:

      {\n    \"answer\": {\n        \"everything\": 42\n    },\n    \"happy\": true,\n    \"list\": [\n        1,\n        0,\n        2\n    ],\n    \"name\": \"Niels\",\n    \"nothing\": null,\n    \"object\": {\n        \"currency\": \"USD\",\n        \"value\": 42.99\n    },\n    \"pi\": 3.141\n}\n
      "},{"location":"api/basic_json/unflatten/#see-also","title":"See also","text":"
      • flatten the reverse function
      "},{"location":"api/basic_json/unflatten/#version-history","title":"Version history","text":"
      • Added in version 2.0.0.
      "},{"location":"api/basic_json/update/","title":"nlohmann::basic_json::update","text":"
      // (1)\nvoid update(const_reference j, bool merge_objects = false);\n\n// (2)\nvoid update(const_iterator first, const_iterator last, bool merge_objects = false);\n
      1. Inserts all values from JSON object j.
      2. Inserts all values from range [first, last)

      When merge_objects is false (default), existing keys are overwritten. When merge_objects is true, recursively merges objects with common keys.

      The function is motivated by Python's dict.update function.

      "},{"location":"api/basic_json/update/#iterator-invalidation","title":"Iterator invalidation","text":"

      For ordered_json, adding a value to an object can yield a reallocation, in which case all iterators (including the end() iterator) and all references to the elements are invalidated.

      "},{"location":"api/basic_json/update/#parameters","title":"Parameters","text":"j (in) JSON object to read values from merge_objects (in) when true, existing keys are not overwritten, but contents of objects are merged recursively (default: false) first (in) begin of the range of elements to insert last (in) end of the range of elements to insert"},{"location":"api/basic_json/update/#exceptions","title":"Exceptions","text":"
      1. The function can throw the following exceptions:
        • Throws type_error.312 if called on JSON values other than objects; example: \"cannot use update() with string\"
      2. The function can throw the following exceptions:
        • Throws type_error.312 if called on JSON values other than objects; example: \"cannot use update() with string\"
        • Throws invalid_iterator.202 if called on an iterator which does not belong to the current JSON value; example: \"iterator does not fit current value\"
        • Throws invalid_iterator.210 if first and last do not belong to the same JSON value; example: \"iterators do not fit\"
      "},{"location":"api/basic_json/update/#complexity","title":"Complexity","text":"
      1. O(N*log(size() + N)), where N is the number of elements to insert.
      2. O(N*log(size() + N)), where N is the number of elements to insert.
      "},{"location":"api/basic_json/update/#examples","title":"Examples","text":"Example

      The example shows how update() is used.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create two JSON objects\n    json o1 = R\"( {\"color\": \"red\", \"price\": 17.99, \"names\": {\"de\": \"Flugzeug\"}} )\"_json;\n    json o2 = R\"( {\"color\": \"blue\", \"speed\": 100, \"names\": {\"en\": \"plane\"}} )\"_json;\n    json o3 = o1;\n\n    // add all keys from o2 to o1 (updating \"color\", replacing \"names\")\n    o1.update(o2);\n\n    // add all keys from o2 to o1 (updating \"color\", merging \"names\")\n    o3.update(o2, true);\n\n    // output updated object o1 and o3\n    std::cout << std::setw(2) << o1 << '\\n';\n    std::cout << std::setw(2) << o3 << '\\n';\n}\n

      Output:

      {\n  \"color\": \"blue\",\n  \"names\": {\n    \"en\": \"plane\"\n  },\n  \"price\": 17.99,\n  \"speed\": 100\n}\n{\n  \"color\": \"blue\",\n  \"names\": {\n    \"de\": \"Flugzeug\",\n    \"en\": \"plane\"\n  },\n  \"price\": 17.99,\n  \"speed\": 100\n}\n
      Example

      The example shows how update() is used.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create two JSON objects\n    json o1 = R\"( {\"color\": \"red\", \"price\": 17.99, \"names\": {\"de\": \"Flugzeug\"}} )\"_json;\n    json o2 = R\"( {\"color\": \"blue\", \"speed\": 100, \"names\": {\"en\": \"plane\"}} )\"_json;\n    json o3 = o1;\n\n    // add all keys from o2 to o1 (updating \"color\", replacing \"names\")\n    o1.update(o2.begin(), o2.end());\n\n    // add all keys from o2 to o1 (updating \"color\", merging \"names\")\n    o3.update(o2.begin(), o2.end(), true);\n\n    // output updated object o1 and o3\n    std::cout << std::setw(2) << o1 << '\\n';\n    std::cout << std::setw(2) << o3 << '\\n';\n}\n

      Output:

      {\n  \"color\": \"blue\",\n  \"names\": {\n    \"en\": \"plane\"\n  },\n  \"price\": 17.99,\n  \"speed\": 100\n}\n{\n  \"color\": \"blue\",\n  \"names\": {\n    \"de\": \"Flugzeug\",\n    \"en\": \"plane\"\n  },\n  \"price\": 17.99,\n  \"speed\": 100\n}\n
      Example

      One common use case for this function is the handling of user settings. Assume your application can be configured in some aspects:

      {\n    \"color\": \"red\",\n    \"active\": true,\n    \"name\": {\"de\": \"Maus\", \"en\": \"mouse\"}\n}\n

      The user may override the default settings selectively:

      {\n    \"color\": \"blue\",\n    \"name\": {\"es\": \"rat\u00f3n\"},\n}\n

      Then update manages the merging of default settings and user settings:

      auto user_settings = json::parse(\"config.json\");\nauto effective_settings = get_default_settings();\neffective_settings.update(user_settings);\n

      Now effective_settings contains the default settings, but those keys set by the user are overwritten:

      {\n    \"color\": \"blue\",\n    \"active\": true,\n    \"name\": {\"es\": \"rat\u00f3n\"}\n}\n

      Note existing keys were just overwritten. To merge objects, merge_objects setting should be set to true:

      auto user_settings = json::parse(\"config.json\");\nauto effective_settings = get_default_settings();\neffective_settings.update(user_settings, true);\n
      {\n    \"color\": \"blue\",\n    \"active\": true,\n    \"name\": {\"de\": \"Maus\", \"en\": \"mouse\", \"es\": \"rat\u00f3n\"}\n}\n
      "},{"location":"api/basic_json/update/#version-history","title":"Version history","text":"
      • Added in version 3.0.0.
      • Added merge_objects parameter in 3.10.5.
      "},{"location":"api/basic_json/value/","title":"nlohmann::basic_json::value","text":"
      // (1)\ntemplate<class ValueType>\nValueType value(const typename object_t::key_type& key,\n                ValueType&& default_value) const;\n\n// (2)\ntemplate<class ValueType, class KeyType>\nValueType value(KeyType&& key,\n                ValueType&& default_value) const;\n\n// (3)\ntemplate<class ValueType>\nValueType value(const json_pointer& ptr,\n                const ValueType& default_value) const;\n
      1. Returns either a copy of an object's element at the specified key key or a given default value if no element with key key exists.

        The function is basically equivalent to executing

        try {\n   return at(key);\n} catch(out_of_range) {\n   return default_value;\n}\n

      2. See 1. This overload is only available if KeyType is comparable with typename object_t::key_type and typename object_comparator_t::is_transparent denotes a type.

      3. Returns either a copy of an object's element at the specified JSON pointer ptr or a given default value if no value at ptr exists.

        The function is basically equivalent to executing

        try {\n   return at(ptr);\n} catch(out_of_range) {\n   return default_value;\n}\n

      Differences to at and operator[]

      • Unlike at, this function does not throw if the given key/ptr was not found.
      • Unlike operator[], this function does not implicitly add an element to the position defined by key/ptr key. This function is furthermore also applicable to const objects.
      "},{"location":"api/basic_json/value/#template-parameters","title":"Template parameters","text":"KeyType A type for an object key other than json_pointer that is comparable with string_t using object_comparator_t. This can also be a string view (C++17). ValueType type compatible to JSON values, for instance int for JSON integer numbers, bool for JSON booleans, or std::vector types for JSON arrays. Note the type of the expected value at key/ptr and the default value default_value must be compatible."},{"location":"api/basic_json/value/#parameters","title":"Parameters","text":"key (in) key of the element to access default_value (in) the value to return if key/ptr found no value ptr (in) a JSON pointer to the element to access"},{"location":"api/basic_json/value/#return-value","title":"Return value","text":"
      1. copy of the element at key key or default_value if key is not found
      2. copy of the element at key key or default_value if key is not found
      3. copy of the element at JSON Pointer ptr or default_value if no value for ptr is found
      "},{"location":"api/basic_json/value/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes to any JSON value.

      "},{"location":"api/basic_json/value/#exceptions","title":"Exceptions","text":"
      1. The function can throw the following exceptions:
        • Throws type_error.302 if default_value does not match the type of the value at key
        • Throws type_error.306 if the JSON value is not an object; in that case, using value() with a key makes no sense.
      2. See 1.
      3. The function can throw the following exceptions:
        • Throws type_error.302 if default_value does not match the type of the value at ptr
        • Throws type_error.306 if the JSON value is not an object; in that case, using value() with a key makes no sense.
      "},{"location":"api/basic_json/value/#complexity","title":"Complexity","text":"
      1. Logarithmic in the size of the container.
      2. Logarithmic in the size of the container.
      3. Logarithmic in the size of the container.
      "},{"location":"api/basic_json/value/#examples","title":"Examples","text":"Example: (1) access specified object element with default value

      The example below shows how object elements can be queried with a default value.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object with different entry types\n    json j =\n    {\n        {\"integer\", 1},\n        {\"floating\", 42.23},\n        {\"string\", \"hello world\"},\n        {\"boolean\", true},\n        {\"object\", {{\"key1\", 1}, {\"key2\", 2}}},\n        {\"array\", {1, 2, 3}}\n    };\n\n    // access existing values\n    int v_integer = j.value(\"integer\", 0);\n    double v_floating = j.value(\"floating\", 47.11);\n\n    // access nonexisting values and rely on default value\n    std::string v_string = j.value(\"nonexisting\", \"oops\");\n    bool v_boolean = j.value(\"nonexisting\", false);\n\n    // output values\n    std::cout << std::boolalpha << v_integer << \" \" << v_floating\n              << \" \" << v_string << \" \" << v_boolean << \"\\n\";\n}\n

      Output:

      1 42.23 oops false\n
      Example: (2) access specified object element using string_view with default value

      The example below shows how object elements can be queried with a default value.

      #include <iostream>\n#include <string_view>\n#include <nlohmann/json.hpp>\n\nusing namespace std::string_view_literals;\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object with different entry types\n    json j =\n    {\n        {\"integer\", 1},\n        {\"floating\", 42.23},\n        {\"string\", \"hello world\"},\n        {\"boolean\", true},\n        {\"object\", {{\"key1\", 1}, {\"key2\", 2}}},\n        {\"array\", {1, 2, 3}}\n    };\n\n    // access existing values\n    int v_integer = j.value(\"integer\"sv, 0);\n    double v_floating = j.value(\"floating\"sv, 47.11);\n\n    // access nonexisting values and rely on default value\n    std::string v_string = j.value(\"nonexisting\"sv, \"oops\");\n    bool v_boolean = j.value(\"nonexisting\"sv, false);\n\n    // output values\n    std::cout << std::boolalpha << v_integer << \" \" << v_floating\n              << \" \" << v_string << \" \" << v_boolean << \"\\n\";\n}\n

      Output:

      1 42.23 oops false\n
      Example: (3) access specified object element via JSON Pointer with default value

      The example below shows how object elements can be queried with a default value.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON object with different entry types\n    json j =\n    {\n        {\"integer\", 1},\n        {\"floating\", 42.23},\n        {\"string\", \"hello world\"},\n        {\"boolean\", true},\n        {\"object\", {{\"key1\", 1}, {\"key2\", 2}}},\n        {\"array\", {1, 2, 3}}\n    };\n\n    // access existing values\n    int v_integer = j.value(\"/integer\"_json_pointer, 0);\n    double v_floating = j.value(\"/floating\"_json_pointer, 47.11);\n\n    // access nonexisting values and rely on default value\n    std::string v_string = j.value(\"/nonexisting\"_json_pointer, \"oops\");\n    bool v_boolean = j.value(\"/nonexisting\"_json_pointer, false);\n\n    // output values\n    std::cout << std::boolalpha << v_integer << \" \" << v_floating\n              << \" \" << v_string << \" \" << v_boolean << \"\\n\";\n}\n

      Output:

      1 42.23 oops false\n
      "},{"location":"api/basic_json/value/#see-also","title":"See also","text":"
      • see at for access by reference with range checking
      • see operator[] for unchecked access by reference
      "},{"location":"api/basic_json/value/#version-history","title":"Version history","text":"
      1. Added in version 1.0.0. Changed parameter default_value type from const ValueType& to ValueType&& in version 3.11.0.
      2. Added in version 3.11.0. Made ValueType the first template parameter in version 3.11.2.
      3. Added in version 2.0.2.
      "},{"location":"api/basic_json/value_t/","title":"nlohmann::basic_json::value_t","text":"
      enum class value_t : std::uint8_t {\n    null,\n    object,\n    array,\n    string,\n    boolean,\n    number_integer,\n    number_unsigned,\n    number_float,\n    binary,\n    discarded\n};\n

      This enumeration collects the different JSON types. It is internally used to distinguish the stored values, and the functions is_null, is_object, is_array, is_string, is_boolean, is_number (with is_number_integer, is_number_unsigned, and is_number_float), is_discarded, is_binary, is_primitive, and is_structured rely on it.

      "},{"location":"api/basic_json/value_t/#notes","title":"Notes","text":"

      Ordering

      The order of types is as follows:

      1. null
      2. boolean
      3. number_integer, number_unsigned, number_float
      4. object
      5. array
      6. string
      7. binary

      discarded is unordered.

      Types of numbers

      There are three enumerators for numbers (number_integer, number_unsigned, and number_float) to distinguish between different types of numbers:

      • number_unsigned_t for unsigned integers
      • number_integer_t for signed integers
      • number_float_t for floating-point numbers or to approximate integers which do not fit into the limits of their respective type

      Comparison operators

      operator< and operator<=> (since C++20) are overloaded and compare according to the ordering described above. Until C++20 all other relational and equality operators yield results according to the integer value of each enumerator. Since C++20 some compilers consider the rewritten candidates generated from operator<=> during overload resolution, while others do not. For predictable and portable behavior use:

      • operator< or operator<=> when wanting to compare according to the order described above
      • operator== or operator!= when wanting to compare according to each enumerators integer value
      "},{"location":"api/basic_json/value_t/#examples","title":"Examples","text":"Example

      The following code how type() queries the value_t for all JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = -17;\n    json j_number_unsigned = 42u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n\n    // call type()\n    std::cout << std::boolalpha;\n    std::cout << (j_null.type() == json::value_t::null) << '\\n';\n    std::cout << (j_boolean.type() == json::value_t::boolean) << '\\n';\n    std::cout << (j_number_integer.type() == json::value_t::number_integer) << '\\n';\n    std::cout << (j_number_unsigned.type() == json::value_t::number_unsigned) << '\\n';\n    std::cout << (j_number_float.type() == json::value_t::number_float) << '\\n';\n    std::cout << (j_object.type() == json::value_t::object) << '\\n';\n    std::cout << (j_array.type() == json::value_t::array) << '\\n';\n    std::cout << (j_string.type() == json::value_t::string) << '\\n';\n}\n

      Output:

      true\ntrue\ntrue\ntrue\ntrue\ntrue\ntrue\ntrue\n
      "},{"location":"api/basic_json/value_t/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      • Added unsigned integer type in version 2.0.0.
      • Added binary type in version 3.8.0.
      "},{"location":"api/basic_json/~basic_json/","title":"nlohmann::basic_json::~basic_json","text":"
      ~basic_json() noexcept;\n

      Destroys the JSON value and frees all allocated memory.

      "},{"location":"api/basic_json/~basic_json/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/~basic_json/#complexity","title":"Complexity","text":"

      Linear.

      "},{"location":"api/basic_json/~basic_json/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/byte_container_with_subtype/","title":"nlohmann::byte_container_with_subtype","text":"
      template<typename BinaryType>\nclass byte_container_with_subtype : public BinaryType;\n

      This type extends the template parameter BinaryType provided to basic_json with a subtype used by BSON and MessagePack. This type exists so that the user does not have to specify a type themselves with a specific naming scheme in order to override the binary type.

      "},{"location":"api/byte_container_with_subtype/#template-parameters","title":"Template parameters","text":"BinaryType container to store bytes (std::vector<std::uint8_t> by default)"},{"location":"api/byte_container_with_subtype/#member-types","title":"Member types","text":"
      • container_type - the type of the underlying container (BinaryType)
      • subtype_type - the type of the subtype (std::uint64_t)
      "},{"location":"api/byte_container_with_subtype/#member-functions","title":"Member functions","text":"
      • (constructor)
      • operator== - comparison: equal
      • operator!= - comparison: not equal
      • set_subtype - sets the binary subtype
      • subtype - return the binary subtype
      • has_subtype - return whether the value has a subtype
      • clear_subtype - clears the binary subtype
      "},{"location":"api/byte_container_with_subtype/#version-history","title":"Version history","text":"
      • Added in version 3.8.0.
      • Changed type of subtypes to std::uint64_t in 3.10.0.
      "},{"location":"api/byte_container_with_subtype/byte_container_with_subtype/","title":"nlohmann::byte_container_with_subtype::byte_container_with_subtype","text":"
      // (1)\nbyte_container_with_subtype();\n\n// (2)\nbyte_container_with_subtype(const container_type& container);\nbyte_container_with_subtype(container_type&& container);\n\n// (3)\nbyte_container_with_subtype(const container_type& container, subtype_type subtype);\nbyte_container_with_subtype(container_type&& container, subtype_type subtype);\n
      1. Create empty binary container without subtype.
      2. Create binary container without subtype.
      3. Create binary container with subtype.
      "},{"location":"api/byte_container_with_subtype/byte_container_with_subtype/#parameters","title":"Parameters","text":"container (in) binary container subtype (in) subtype"},{"location":"api/byte_container_with_subtype/byte_container_with_subtype/#examples","title":"Examples","text":"Example

      The example below demonstrates how byte containers can be created.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\n// define a byte container based on std::vector\nusing byte_container_with_subtype = nlohmann::byte_container_with_subtype<std::vector<std::uint8_t>>;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // (1) create empty container\n    auto c1 = byte_container_with_subtype();\n\n    std::vector<std::uint8_t> bytes = {{0xca, 0xfe, 0xba, 0xbe}};\n\n    // (2) create container\n    auto c2 = byte_container_with_subtype(bytes);\n\n    // (3) create container with subtype\n    auto c3 = byte_container_with_subtype(bytes, 42);\n\n    std::cout << json(c1) << \"\\n\" << json(c2) << \"\\n\" << json(c3) << std::endl;\n}\n

      Output:

      {\"bytes\":[],\"subtype\":null}\n{\"bytes\":[202,254,186,190],\"subtype\":null}\n{\"bytes\":[202,254,186,190],\"subtype\":42}\n
      "},{"location":"api/byte_container_with_subtype/byte_container_with_subtype/#version-history","title":"Version history","text":"

      Since version 3.8.0.

      "},{"location":"api/byte_container_with_subtype/clear_subtype/","title":"nlohmann::byte_container_with_subtype::clear_subtype","text":"
      void clear_subtype() noexcept;\n

      Clears the binary subtype and flags the value as not having a subtype, which has implications for serialization; for instance MessagePack will prefer the bin family over the ext family.

      "},{"location":"api/byte_container_with_subtype/clear_subtype/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this function never throws exceptions.

      "},{"location":"api/byte_container_with_subtype/clear_subtype/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/byte_container_with_subtype/clear_subtype/#examples","title":"Examples","text":"Example

      The example below demonstrates how clear_subtype can remove subtypes.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\n// define a byte container based on std::vector\nusing byte_container_with_subtype = nlohmann::byte_container_with_subtype<std::vector<std::uint8_t>>;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::vector<std::uint8_t> bytes = {{0xca, 0xfe, 0xba, 0xbe}};\n\n    // create container with subtype\n    auto c1 = byte_container_with_subtype(bytes, 42);\n\n    std::cout << \"before calling clear_subtype(): \" << json(c1) << '\\n';\n\n    c1.clear_subtype();\n\n    std::cout << \"after calling clear_subtype(): \" << json(c1) << '\\n';\n}\n

      Output:

      before calling clear_subtype(): {\"bytes\":[202,254,186,190],\"subtype\":42}\nafter calling clear_subtype(): {\"bytes\":[202,254,186,190],\"subtype\":null}\n
      "},{"location":"api/byte_container_with_subtype/clear_subtype/#version-history","title":"Version history","text":"

      Since version 3.8.0.

      "},{"location":"api/byte_container_with_subtype/has_subtype/","title":"nlohmann::byte_container_with_subtype::has_subtype","text":"
      constexpr bool has_subtype() const noexcept;\n

      Returns whether the value has a subtype.

      "},{"location":"api/byte_container_with_subtype/has_subtype/#return-value","title":"Return value","text":"

      whether the value has a subtype

      "},{"location":"api/byte_container_with_subtype/has_subtype/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this function never throws exceptions.

      "},{"location":"api/byte_container_with_subtype/has_subtype/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/byte_container_with_subtype/has_subtype/#examples","title":"Examples","text":"Example

      The example below demonstrates how has_subtype can check whether a subtype was set.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\n// define a byte container based on std::vector\nusing byte_container_with_subtype = nlohmann::byte_container_with_subtype<std::vector<std::uint8_t>>;\n\nint main()\n{\n    std::vector<std::uint8_t> bytes = {{0xca, 0xfe, 0xba, 0xbe}};\n\n    // create container\n    auto c1 = byte_container_with_subtype(bytes);\n\n    // create container with subtype\n    auto c2 = byte_container_with_subtype(bytes, 42);\n\n    std::cout << std::boolalpha << \"c1.has_subtype() = \" << c1.has_subtype()\n              << \"\\nc2.has_subtype() = \" << c2.has_subtype() << std::endl;\n}\n

      Output:

      c1.has_subtype() = false\nc2.has_subtype() = true\n
      "},{"location":"api/byte_container_with_subtype/has_subtype/#version-history","title":"Version history","text":"

      Since version 3.8.0.

      "},{"location":"api/byte_container_with_subtype/set_subtype/","title":"nlohmann::byte_container_with_subtype::set_subtype","text":"
      void set_subtype(subtype_type subtype) noexcept;\n

      Sets the binary subtype of the value, also flags a binary JSON value as having a subtype, which has implications for serialization.

      "},{"location":"api/byte_container_with_subtype/set_subtype/#parameters","title":"Parameters","text":"subtype (in) subtype to set"},{"location":"api/byte_container_with_subtype/set_subtype/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this function never throws exceptions.

      "},{"location":"api/byte_container_with_subtype/set_subtype/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/byte_container_with_subtype/set_subtype/#examples","title":"Examples","text":"Example

      The example below demonstrates how a subtype can be set with set_subtype.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\n// define a byte container based on std::vector\nusing byte_container_with_subtype = nlohmann::byte_container_with_subtype<std::vector<std::uint8_t>>;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::vector<std::uint8_t> bytes = {{0xca, 0xfe, 0xba, 0xbe}};\n\n    // create container without subtype\n    auto c = byte_container_with_subtype(bytes);\n\n    std::cout << \"before calling set_subtype(42): \" << json(c) << '\\n';\n\n    // set the subtype\n    c.set_subtype(42);\n\n    std::cout << \"after calling set_subtype(42): \" << json(c) << '\\n';\n}\n

      Output:

      before calling set_subtype(42): {\"bytes\":[202,254,186,190],\"subtype\":null}\nafter calling set_subtype(42): {\"bytes\":[202,254,186,190],\"subtype\":42}\n
      "},{"location":"api/byte_container_with_subtype/set_subtype/#version-history","title":"Version history","text":"

      Since version 3.8.0.

      "},{"location":"api/byte_container_with_subtype/subtype/","title":"nlohmann::byte_container_with_subtype::subtype","text":"
      constexpr subtype_type subtype() const noexcept;\n

      Returns the numerical subtype of the value if it has a subtype. If it does not have a subtype, this function will return subtype_type(-1) as a sentinel value.

      "},{"location":"api/byte_container_with_subtype/subtype/#return-value","title":"Return value","text":"

      the numerical subtype of the binary value, or subtype_type(-1) if no subtype is set

      "},{"location":"api/byte_container_with_subtype/subtype/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this function never throws exceptions.

      "},{"location":"api/byte_container_with_subtype/subtype/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/byte_container_with_subtype/subtype/#examples","title":"Examples","text":"Example

      The example below demonstrates how the subtype can be retrieved with subtype. Note how subtype_type(-1) is returned for container c1.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\n// define a byte container based on std::vector\nusing byte_container_with_subtype = nlohmann::byte_container_with_subtype<std::vector<std::uint8_t>>;\n\nint main()\n{\n    std::vector<std::uint8_t> bytes = {{0xca, 0xfe, 0xba, 0xbe}};\n\n    // create container\n    auto c1 = byte_container_with_subtype(bytes);\n\n    // create container with subtype\n    auto c2 = byte_container_with_subtype(bytes, 42);\n\n    std::cout << \"c1.subtype() = \" << c1.subtype()\n              << \"\\nc2.subtype() = \" << c2.subtype() << std::endl;\n\n    // in case no subtype is set, return special value\n    assert(c1.subtype() == static_cast<byte_container_with_subtype::subtype_type>(-1));\n}\n

      Output:

      c1.subtype() = 18446744073709551615\nc2.subtype() = 42\n
      "},{"location":"api/byte_container_with_subtype/subtype/#version-history","title":"Version history","text":"
      • Added in version 3.8.0
      • Fixed return value to properly return subtype_type(-1) as documented in version 3.10.0.
      "},{"location":"api/json_pointer/","title":"nlohmann::json_pointer","text":"
      template<typename RefStringType>\nclass json_pointer;\n

      A JSON pointer defines a string syntax for identifying a specific value within a JSON document. It can be used with functions at and operator[]. Furthermore, JSON pointers are the base for JSON patches.

      "},{"location":"api/json_pointer/#template-parameters","title":"Template parameters","text":"RefStringType the string type used for the reference tokens making up the JSON pointer

      Deprecation

      For backwards compatibility RefStringType may also be a specialization of basic_json in which case string_t will be deduced as basic_json::string_t. This feature is deprecated and may be removed in a future major version.

      "},{"location":"api/json_pointer/#member-types","title":"Member types","text":"
      • string_t - the string type used for the reference tokens
      "},{"location":"api/json_pointer/#member-functions","title":"Member functions","text":"
      • (constructor)
      • to_string - return a string representation of the JSON pointer
      • operator string_t - return a string representation of the JSON pointer
      • operator== - compare: equal
      • operator!= - compare: not equal
      • operator/= - append to the end of the JSON pointer
      • operator/ - create JSON Pointer by appending
      • parent_pointer - returns the parent of this JSON pointer
      • pop_back - remove last reference token
      • back - return last reference token
      • push_back - append an unescaped token at the end of the pointer
      • empty - return whether pointer points to the root document
      "},{"location":"api/json_pointer/#literals","title":"Literals","text":"
      • operator\"\"_json_pointer - user-defined string literal for JSON pointers
      "},{"location":"api/json_pointer/#see-also","title":"See also","text":"
      • RFC 6901
      "},{"location":"api/json_pointer/#version-history","title":"Version history","text":"
      • Added in version 2.0.0.
      • Changed template parameter from basic_json to string type in version 3.11.0.
      "},{"location":"api/json_pointer/back/","title":"nlohmann::json_pointer::back","text":"
      const string_t& back() const;\n

      Return last reference token.

      "},{"location":"api/json_pointer/back/#return-value","title":"Return value","text":"

      Last reference token.

      "},{"location":"api/json_pointer/back/#exceptions","title":"Exceptions","text":"

      Throws out_of_range.405 if JSON pointer has no parent.

      "},{"location":"api/json_pointer/back/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/json_pointer/back/#examples","title":"Examples","text":"Example

      The example shows the usage of back.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // different JSON Pointers\n    json::json_pointer ptr1(\"/foo\");\n    json::json_pointer ptr2(\"/foo/0\");\n\n    // call empty()\n    std::cout << \"last reference token of \\\"\" << ptr1 << \"\\\" is \\\"\" << ptr1.back() << \"\\\"\\n\"\n              << \"last reference token of \\\"\" << ptr2 << \"\\\" is \\\"\" << ptr2.back() << \"\\\"\" << std::endl;\n}\n

      Output:

      last reference token of \"/foo\" is \"foo\"\nlast reference token of \"/foo/0\" is \"0\"\n
      "},{"location":"api/json_pointer/back/#version-history","title":"Version history","text":"
      • Added in version 3.6.0.
      • Changed return type to string_t in version 3.11.0.
      "},{"location":"api/json_pointer/empty/","title":"nlohmann::json_pointer::empty","text":"
      bool empty() const noexcept;\n

      Return whether pointer points to the root document.

      "},{"location":"api/json_pointer/empty/#return-value","title":"Return value","text":"

      true iff the JSON pointer points to the root document.

      "},{"location":"api/json_pointer/empty/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this function never throws exceptions.

      "},{"location":"api/json_pointer/empty/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/json_pointer/empty/#examples","title":"Examples","text":"Example

      The example shows the result of empty for different JSON Pointers.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // different JSON Pointers\n    json::json_pointer ptr0;\n    json::json_pointer ptr1(\"\");\n    json::json_pointer ptr2(\"/foo\");\n    json::json_pointer ptr3(\"/foo/0\");\n\n    // call empty()\n    std::cout << std::boolalpha\n              << \"\\\"\" << ptr0 << \"\\\": \" << ptr0.empty() << '\\n'\n              << \"\\\"\" << ptr1 << \"\\\": \" << ptr1.empty() << '\\n'\n              << \"\\\"\" << ptr2 << \"\\\": \" << ptr2.empty() << '\\n'\n              << \"\\\"\" << ptr3 << \"\\\": \" << ptr3.empty() << std::endl;\n}\n

      Output:

      \"\": true\n\"\": true\n\"/foo\": false\n\"/foo/0\": false\n
      "},{"location":"api/json_pointer/empty/#version-history","title":"Version history","text":"

      Added in version 3.6.0.

      "},{"location":"api/json_pointer/json_pointer/","title":"nlohmann::json_pointer::json_pointer","text":"
      explicit json_pointer(const string_t& s = \"\");\n

      Create a JSON pointer according to the syntax described in Section 3 of RFC6901.

      "},{"location":"api/json_pointer/json_pointer/#parameters","title":"Parameters","text":"s (in) string representing the JSON pointer; if omitted, the empty string is assumed which references the whole JSON value"},{"location":"api/json_pointer/json_pointer/#exceptions","title":"Exceptions","text":"
      • Throws parse_error.107 if the given JSON pointer s is nonempty and does not begin with a slash (/); see example below.
      • Throws parse_error.108 if a tilde (~) in the given JSON pointer s is not followed by 0 (representing ~) or 1 (representing /); see example below.
      "},{"location":"api/json_pointer/json_pointer/#examples","title":"Examples","text":"Example

      The example shows the construction several valid JSON pointers as well as the exceptional behavior.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // correct JSON pointers\n    json::json_pointer p1;\n    json::json_pointer p2(\"\");\n    json::json_pointer p3(\"/\");\n    json::json_pointer p4(\"//\");\n    json::json_pointer p5(\"/foo/bar\");\n    json::json_pointer p6(\"/foo/bar/-\");\n    json::json_pointer p7(\"/foo/~0\");\n    json::json_pointer p8(\"/foo/~1\");\n\n    // error: JSON pointer does not begin with a slash\n    try\n    {\n        json::json_pointer p9(\"foo\");\n    }\n    catch (const json::parse_error& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n\n    // error: JSON pointer uses escape symbol ~ not followed by 0 or 1\n    try\n    {\n        json::json_pointer p10(\"/foo/~\");\n    }\n    catch (const json::parse_error& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n\n    // error: JSON pointer uses escape symbol ~ not followed by 0 or 1\n    try\n    {\n        json::json_pointer p11(\"/foo/~3\");\n    }\n    catch (const json::parse_error& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n}\n

      Output:

      [json.exception.parse_error.107] parse error at byte 1: JSON pointer must be empty or begin with '/' - was: 'foo'\n[json.exception.parse_error.108] parse error: escape character '~' must be followed with '0' or '1'\n[json.exception.parse_error.108] parse error: escape character '~' must be followed with '0' or '1'\n
      "},{"location":"api/json_pointer/json_pointer/#version-history","title":"Version history","text":"
      • Added in version 2.0.0.
      • Changed type of s to string_t in version 3.11.0.
      "},{"location":"api/json_pointer/operator_eq/","title":"nlohmann::json_pointer::operator==","text":"
      // until C++20\ntemplate<typename RefStringTypeLhs, typename RefStringTypeRhs>\nbool operator==(\n    const json_pointer<RefStringTypeLhs>& lhs,\n    const json_pointer<RefStringTypeRhs>& rhs) noexcept;            // (1)\n\ntemplate<typename RefStringTypeLhs, typename StringType>\nbool operator==(\n    const json_pointer<RefStringTypeLhs>& lhs,\n    const StringType& rhs);                                         // (2)\n\ntemplate<typename RefStringTypeRhs, typename StringType>\nbool operator==(\n    const StringType& lhs,\n    const json_pointer<RefStringTypeRhs>& rhs);                     // (2)\n\n// since C++20\nclass json_pointer {\n    template<typename RefStringTypeRhs>\n    bool operator==(\n        const json_pointer<RefStringTypeRhs>& rhs) const noexcept;  // (1)\n\n    bool operator==(const string_t& rhs) const;                     // (2)\n};\n
      1. Compares two JSON pointers for equality by comparing their reference tokens.

      2. Compares a JSON pointer and a string or a string and a JSON pointer for equality by converting the string to a JSON pointer and comparing the JSON pointers according to 1.

      "},{"location":"api/json_pointer/operator_eq/#template-parameters","title":"Template parameters","text":"RefStringTypeLhs, RefStringTypeRhs the string type of the left-hand side or right-hand side JSON pointer, respectively StringType the string type derived from the json_pointer operand (json_pointer::string_t)"},{"location":"api/json_pointer/operator_eq/#parameters","title":"Parameters","text":"lhs (in) first value to consider rhs (in) second value to consider"},{"location":"api/json_pointer/operator_eq/#return-value","title":"Return value","text":"

      whether the values lhs/*this and rhs are equal

      "},{"location":"api/json_pointer/operator_eq/#exception-safety","title":"Exception safety","text":"
      1. No-throw guarantee: this function never throws exceptions.
      2. Strong exception safety: if an exception occurs, the original value stays intact.
      "},{"location":"api/json_pointer/operator_eq/#exceptions","title":"Exceptions","text":"
      1. (none)
      2. The function can throw the following exceptions:
      3. Throws parse_error.107 if the given JSON pointer s is nonempty and does not begin with a slash (/); see example below.
      4. Throws parse_error.108 if a tilde (~) in the given JSON pointer s is not followed by 0 (representing ~) or 1 (representing /); see example below.
      "},{"location":"api/json_pointer/operator_eq/#complexity","title":"Complexity","text":"

      Constant if lhs and rhs differ in the number of reference tokens, otherwise linear in the number of reference tokens.

      "},{"location":"api/json_pointer/operator_eq/#notes","title":"Notes","text":"

      Deprecation

      Overload 2 is deprecated and will be removed in a future major version release.

      "},{"location":"api/json_pointer/operator_eq/#examples","title":"Examples","text":"Example: (1) Comparing JSON pointers

      The example demonstrates comparing JSON pointers.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // different JSON pointers\n    json::json_pointer ptr0;\n    json::json_pointer ptr1(\"\");\n    json::json_pointer ptr2(\"/foo\");\n\n    // compare JSON pointers\n    std::cout << std::boolalpha\n              << \"\\\"\" << ptr0 << \"\\\" == \\\"\" << ptr0 << \"\\\": \" << (ptr0 == ptr0) << '\\n'\n              << \"\\\"\" << ptr0 << \"\\\" == \\\"\" << ptr1 << \"\\\": \" << (ptr0 == ptr1) << '\\n'\n              << \"\\\"\" << ptr1 << \"\\\" == \\\"\" << ptr2 << \"\\\": \" << (ptr1 == ptr2) << '\\n'\n              << \"\\\"\" << ptr2 << \"\\\" == \\\"\" << ptr2 << \"\\\": \" << (ptr2 == ptr2) << std::endl;\n}\n

      Output:

      \"\" == \"\": true\n\"\" == \"\": true\n\"\" == \"/foo\": false\n\"/foo\" == \"/foo\": true\n
      Example: (2) Comparing JSON pointers and strings

      The example demonstrates comparing JSON pointers and strings, and when doing so may raise an exception.

      #include <exception>\n#include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // different JSON pointers\n    json::json_pointer ptr0;\n    json::json_pointer ptr1(\"\");\n    json::json_pointer ptr2(\"/foo\");\n\n    // different strings\n    std::string str0(\"\");\n    std::string str1(\"/foo\");\n    std::string str2(\"bar\");\n\n    // compare JSON pointers and strings\n    std::cout << std::boolalpha\n              << \"\\\"\" << ptr0 << \"\\\" == \\\"\" << str0 << \"\\\": \" << (ptr0 == str0) << '\\n'\n              << \"\\\"\" << str0 << \"\\\" == \\\"\" << ptr1 << \"\\\": \" << (str0 == ptr1) << '\\n'\n              << \"\\\"\" << ptr2 << \"\\\" == \\\"\" << str1 << \"\\\": \" << (ptr2 == str1) << std::endl;\n\n    try\n    {\n        std::cout << \"\\\"\" << str2 << \"\\\" == \\\"\" << ptr2 << \"\\\": \" << (str2 == ptr2) << std::endl;\n    }\n    catch (const json::parse_error& ex)\n    {\n        std::cout << ex.what() << std::endl;\n    }\n}\n

      Output:

      \"\" == \"\": true\n\"\" == \"\": true\n\"/foo\" == \"/foo\": true\n\"bar\" == \"/foo\": [json.exception.parse_error.107] parse error at byte 1: JSON pointer must be empty or begin with '/' - was: 'bar'\n
      "},{"location":"api/json_pointer/operator_eq/#version-history","title":"Version history","text":"
      1. Added in version 2.1.0. Added C++20 member functions in version 3.11.2.
      2. Added for backward compatibility and deprecated in version 3.11.2.
      "},{"location":"api/json_pointer/operator_ne/","title":"nlohmann::json_pointer::operator!=","text":"
      // until C++20\ntemplate<typename RefStringTypeLhs, typename RefStringTypeRhs>\nbool operator!=(\n    const json_pointer<RefStringTypeLhs>& lhs,\n    const json_pointer<RefStringTypeRhs>& rhs) noexcept;  // (1)\n\ntemplate<typename RefStringTypeLhs, typename StringType>\nbool operator!=(\n    const json_pointer<RefStringTypeLhs>& lhs,\n    const StringType& rhs);                               // (2)\n\ntemplate<typename RefStringTypeRhs, typename StringType>\nbool operator!=(\n    const StringType& lhs,\n    const json_pointer<RefStringTypeRhs>& rhs);           // (2)\n
      1. Compares two JSON pointers for inequality by comparing their reference tokens.

      2. Compares a JSON pointer and a string or a string and a JSON pointer for inequality by converting the string to a JSON pointer and comparing the JSON pointers according to 1.

      "},{"location":"api/json_pointer/operator_ne/#template-parameters","title":"Template parameters","text":"RefStringTypeLhs, RefStringTypeRhs the string type of the left-hand side or right-hand side JSON pointer, respectively StringType the string type derived from the json_pointer operand (json_pointer::string_t)"},{"location":"api/json_pointer/operator_ne/#parameters","title":"Parameters","text":"lhs (in) first value to consider rhs (in) second value to consider"},{"location":"api/json_pointer/operator_ne/#return-value","title":"Return value","text":"

      whether the values lhs/*this and rhs are not equal

      "},{"location":"api/json_pointer/operator_ne/#exception-safety","title":"Exception safety","text":"
      1. No-throw guarantee: this function never throws exceptions.
      2. Strong exception safety: if an exception occurs, the original value stays intact.
      "},{"location":"api/json_pointer/operator_ne/#exceptions","title":"Exceptions","text":"
      1. (none)
      2. The function can throw the following exceptions:
      3. Throws parse_error.107 if the given JSON pointer s is nonempty and does not begin with a slash (/); see example below.
      4. Throws parse_error.108 if a tilde (~) in the given JSON pointer s is not followed by 0 (representing ~) or 1 (representing /); see example below.
      "},{"location":"api/json_pointer/operator_ne/#complexity","title":"Complexity","text":"

      Constant if lhs and rhs differ in the number of reference tokens, otherwise linear in the number of reference tokens.

      "},{"location":"api/json_pointer/operator_ne/#notes","title":"Notes","text":"

      Operator overload resolution

      Since C++20 overload resolution will consider the rewritten candidate generated from operator==.

      Deprecation

      Overload 2 is deprecated and will be removed in a future major version release.

      "},{"location":"api/json_pointer/operator_ne/#examples","title":"Examples","text":"Example: (1) Comparing JSON pointers

      The example demonstrates comparing JSON pointers.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // different JSON pointers\n    json::json_pointer ptr0;\n    json::json_pointer ptr1(\"\");\n    json::json_pointer ptr2(\"/foo\");\n\n    // compare JSON pointers\n    std::cout << std::boolalpha\n              << \"\\\"\" << ptr0 << \"\\\" != \\\"\" << ptr0 << \"\\\": \" << (ptr0 != ptr0) << '\\n'\n              << \"\\\"\" << ptr0 << \"\\\" != \\\"\" << ptr1 << \"\\\": \" << (ptr0 != ptr1) << '\\n'\n              << \"\\\"\" << ptr1 << \"\\\" != \\\"\" << ptr2 << \"\\\": \" << (ptr1 != ptr2) << '\\n'\n              << \"\\\"\" << ptr2 << \"\\\" != \\\"\" << ptr2 << \"\\\": \" << (ptr2 != ptr2) << std::endl;\n}\n

      Output:

      \"\" != \"\": false\n\"\" != \"\": false\n\"\" != \"/foo\": true\n\"/foo\" != \"/foo\": false\n
      Example: (2) Comparing JSON pointers and strings

      The example demonstrates comparing JSON pointers and strings, and when doing so may raise an exception.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // different JSON pointers\n    json::json_pointer ptr0;\n    json::json_pointer ptr1(\"\");\n    json::json_pointer ptr2(\"/foo\");\n\n    // different strings\n    std::string str0(\"\");\n    std::string str1(\"/foo\");\n    std::string str2(\"bar\");\n\n    // compare JSON pointers and strings\n    std::cout << std::boolalpha\n              << \"\\\"\" << ptr0 << \"\\\" != \\\"\" << str0 << \"\\\": \" << (ptr0 != str0) << '\\n'\n              << \"\\\"\" << str0 << \"\\\" != \\\"\" << ptr1 << \"\\\": \" << (str0 != ptr1) << '\\n'\n              << \"\\\"\" << ptr2 << \"\\\" != \\\"\" << str1 << \"\\\": \" << (ptr2 != str1) << std::endl;\n\n    try\n    {\n        std::cout << \"\\\"\" << str2 << \"\\\" != \\\"\" << ptr2 << \"\\\": \" << (str2 != ptr2) << std::endl;\n    }\n    catch (const json::parse_error& ex)\n    {\n        std::cout << ex.what() << std::endl;\n    }\n}\n

      Output:

      \"\" != \"\": false\n\"\" != \"\": false\n\"/foo\" != \"/foo\": false\n\"bar\" != \"/foo\": [json.exception.parse_error.107] parse error at byte 1: JSON pointer must be empty or begin with '/' - was: 'bar'\n
      "},{"location":"api/json_pointer/operator_ne/#version-history","title":"Version history","text":"
      1. Added in version 2.1.0.
      2. Added for backward compatibility and deprecated in version 3.11.2.
      "},{"location":"api/json_pointer/operator_slash/","title":"nlohmann::json_pointer::operator/","text":"
      // (1)\njson_pointer operator/(const json_pointer& lhs, const json_pointer& rhs);\n\n// (2)\njson_pointer operator/(const json_pointer& lhs, string_t token);\n\n// (3)\njson_pointer operator/(const json_pointer& lhs, std::size_t array_idx);\n
      1. create a new JSON pointer by appending the right JSON pointer at the end of the left JSON pointer
      2. create a new JSON pointer by appending the unescaped token at the end of the JSON pointer
      3. create a new JSON pointer by appending the array-index-token at the end of the JSON pointer
      "},{"location":"api/json_pointer/operator_slash/#parameters","title":"Parameters","text":"lhs (in) JSON pointer rhs (in) JSON pointer to append token (in) reference token to append array_idx (in) array index to append"},{"location":"api/json_pointer/operator_slash/#return-value","title":"Return value","text":"
      1. a new JSON pointer with rhs appended to lhs
      2. a new JSON pointer with unescaped token appended to lhs
      3. a new JSON pointer with array_idx appended to lhs
      "},{"location":"api/json_pointer/operator_slash/#complexity","title":"Complexity","text":"
      1. Linear in the length of lhs and rhs.
      2. Linear in the length of lhs.
      3. Linear in the length of lhs.
      "},{"location":"api/json_pointer/operator_slash/#examples","title":"Examples","text":"Example

      The example shows the usage of operator/.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON pointer\n    json::json_pointer ptr(\"/foo\");\n\n    // append a JSON Pointer\n    std::cout << \"\\\"\" << ptr / json::json_pointer(\"/bar/baz\") << \"\\\"\\n\";\n\n    // append a string\n    std::cout << \"\\\"\" << ptr / \"fob\" << \"\\\"\\n\";\n\n    // append an array index\n    std::cout << \"\\\"\" << ptr / 42 << \"\\\"\" << std::endl;\n}\n

      Output:

      \"/foo/bar/baz\"\n\"/foo/fob\"\n\"/foo/42\"\n
      "},{"location":"api/json_pointer/operator_slash/#version-history","title":"Version history","text":"
      1. Added in version 3.6.0.
      2. Added in version 3.6.0. Changed type of token to string_t in version 3.11.0.
      3. Added in version 3.6.0.
      "},{"location":"api/json_pointer/operator_slasheq/","title":"nlohmann::json_pointer::operator/=","text":"
      // (1)\njson_pointer& operator/=(const json_pointer& ptr);\n\n// (2)\njson_pointer& operator/=(string_t token);\n\n// (3)\njson_pointer& operator/=(std::size_t array_idx)\n
      1. append another JSON pointer at the end of this JSON pointer
      2. append an unescaped reference token at the end of this JSON pointer
      3. append an array index at the end of this JSON pointer
      "},{"location":"api/json_pointer/operator_slasheq/#parameters","title":"Parameters","text":"ptr (in) JSON pointer to append token (in) reference token to append array_idx (in) array index to append"},{"location":"api/json_pointer/operator_slasheq/#return-value","title":"Return value","text":"
      1. JSON pointer with ptr appended
      2. JSON pointer with token appended without escaping token
      3. JSON pointer with array_idx appended
      "},{"location":"api/json_pointer/operator_slasheq/#complexity","title":"Complexity","text":"
      1. Linear in the length of ptr.
      2. Amortized constant.
      3. Amortized constant.
      "},{"location":"api/json_pointer/operator_slasheq/#examples","title":"Examples","text":"Example

      The example shows the usage of operator/=.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON pointer\n    json::json_pointer ptr(\"/foo\");\n    std::cout << \"\\\"\" << ptr << \"\\\"\\n\";\n\n    // append a JSON Pointer\n    ptr /= json::json_pointer(\"/bar/baz\");\n    std::cout << \"\\\"\" << ptr << \"\\\"\\n\";\n\n    // append a string\n    ptr /= \"fob\";\n    std::cout << \"\\\"\" << ptr << \"\\\"\\n\";\n\n    // append an array index\n    ptr /= 42;\n    std::cout << \"\\\"\" << ptr << \"\\\"\" << std::endl;\n}\n

      Output:

      \"/foo\"\n\"/foo/bar/baz\"\n\"/foo/bar/baz/fob\"\n\"/foo/bar/baz/fob/42\"\n
      "},{"location":"api/json_pointer/operator_slasheq/#version-history","title":"Version history","text":"
      1. Added in version 3.6.0.
      2. Added in version 3.6.0. Changed type of token to string_t in version 3.11.0.
      3. Added in version 3.6.0.
      "},{"location":"api/json_pointer/operator_string_t/","title":"nlohmann::json_pointer::operator string_t","text":"
      operator string_t() const\n

      Return a string representation of the JSON pointer.

      "},{"location":"api/json_pointer/operator_string_t/#return-value","title":"Return value","text":"

      A string representation of the JSON pointer

      "},{"location":"api/json_pointer/operator_string_t/#possible-implementation","title":"Possible implementation","text":"
      operator string_t() const\n{\n    return to_string();\n}\n
      "},{"location":"api/json_pointer/operator_string_t/#notes","title":"Notes","text":"

      Deprecation

      This function is deprecated in favor of to_string and will be removed in a future major version release.

      "},{"location":"api/json_pointer/operator_string_t/#examples","title":"Examples","text":"Example

      The example shows how JSON Pointers can be implicitly converted to strings.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // different JSON Pointers\n    json::json_pointer ptr1(\"/foo/0\");\n    json::json_pointer ptr2(\"/a~1b\");\n\n    // implicit conversion to string\n    std::string s;\n    s += ptr1;\n    s += \"\\n\";\n    s += ptr2;\n\n    std::cout << s << std::endl;\n}\n

      Output:

      /foo/0\n/a~1b\n
      "},{"location":"api/json_pointer/operator_string_t/#version-history","title":"Version history","text":"
      • Since version 2.0.0.
      • Changed type to string_t and deprecated in version 3.11.0.
      "},{"location":"api/json_pointer/parent_pointer/","title":"nlohmann::json_pointer::parent_pointer","text":"
      json_pointer parent_pointer() const;\n

      Returns the parent of this JSON pointer.

      "},{"location":"api/json_pointer/parent_pointer/#return-value","title":"Return value","text":"

      Parent of this JSON pointer; in case this JSON pointer is the root, the root itself is returned.

      "},{"location":"api/json_pointer/parent_pointer/#complexity","title":"Complexity","text":"

      Linear in the length of the JSON pointer.

      "},{"location":"api/json_pointer/parent_pointer/#examples","title":"Examples","text":"Example

      The example shows the result of parent_pointer for different JSON Pointers.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // different JSON Pointers\n    json::json_pointer ptr1(\"\");\n    json::json_pointer ptr2(\"/foo\");\n    json::json_pointer ptr3(\"/foo/0\");\n\n    // call parent_pointer()\n    std::cout << std::boolalpha\n              << \"parent of \\\"\" << ptr1 << \"\\\" is \\\"\" << ptr1.parent_pointer() << \"\\\"\\n\"\n              << \"parent of \\\"\" << ptr2 << \"\\\" is \\\"\" << ptr2.parent_pointer() << \"\\\"\\n\"\n              << \"parent of \\\"\" << ptr3 << \"\\\" is \\\"\" << ptr3.parent_pointer() << \"\\\"\" << std::endl;\n}\n

      Output:

      parent of \"\" is \"\"\nparent of \"/foo\" is \"\"\nparent of \"/foo/0\" is \"/foo\"\n
      "},{"location":"api/json_pointer/parent_pointer/#version-history","title":"Version history","text":"

      Added in version 3.6.0.

      "},{"location":"api/json_pointer/pop_back/","title":"nlohmann::json_pointer::pop_back","text":"
      void pop_back();\n

      Remove last reference token.

      "},{"location":"api/json_pointer/pop_back/#exceptions","title":"Exceptions","text":"

      Throws out_of_range.405 if JSON pointer has no parent.

      "},{"location":"api/json_pointer/pop_back/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/json_pointer/pop_back/#examples","title":"Examples","text":"Example

      The example shows the usage of pop_back.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create empty JSON Pointer\n    json::json_pointer ptr(\"/foo/bar/baz\");\n    std::cout << \"\\\"\" << ptr << \"\\\"\\n\";\n\n    // call pop_back()\n    ptr.pop_back();\n    std::cout << \"\\\"\" << ptr << \"\\\"\\n\";\n\n    ptr.pop_back();\n    std::cout << \"\\\"\" << ptr << \"\\\"\\n\";\n\n    ptr.pop_back();\n    std::cout << \"\\\"\" << ptr << \"\\\"\\n\";\n}\n

      Output:

      \"/foo/bar/baz\"\n\"/foo/bar\"\n\"/foo\"\n\"\"\n
      "},{"location":"api/json_pointer/pop_back/#version-history","title":"Version history","text":"

      Added in version 3.6.0.

      "},{"location":"api/json_pointer/push_back/","title":"nlohmann::json_pointer::push_back","text":"
      void push_back(const string_t& token);\n\nvoid push_back(string_t&& token);\n

      Append an unescaped token at the end of the reference pointer.

      "},{"location":"api/json_pointer/push_back/#parameters","title":"Parameters","text":"token (in) token to add"},{"location":"api/json_pointer/push_back/#complexity","title":"Complexity","text":"

      Amortized constant.

      "},{"location":"api/json_pointer/push_back/#examples","title":"Examples","text":"Example

      The example shows the result of push_back for different JSON Pointers.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create empty JSON Pointer\n    json::json_pointer ptr;\n    std::cout << \"\\\"\" << ptr << \"\\\"\\n\";\n\n    // call push_back()\n    ptr.push_back(\"foo\");\n    std::cout << \"\\\"\" << ptr << \"\\\"\\n\";\n\n    ptr.push_back(\"0\");\n    std::cout << \"\\\"\" << ptr << \"\\\"\\n\";\n\n    ptr.push_back(\"bar\");\n    std::cout << \"\\\"\" << ptr << \"\\\"\\n\";\n}\n

      Output:

      \"\"\n\"/foo\"\n\"/foo/0\"\n\"/foo/0/bar\"\n
      "},{"location":"api/json_pointer/push_back/#version-history","title":"Version history","text":"
      • Added in version 3.6.0.
      • Changed type of token to string_t in version 3.11.0.
      "},{"location":"api/json_pointer/string_t/","title":"nlohmann::json_pointer::string_t","text":"
      using string_t = RefStringType;\n

      The string type used for the reference tokens making up the JSON pointer.

      See basic_json::string_t for more information.

      "},{"location":"api/json_pointer/string_t/#examples","title":"Examples","text":"Example

      The example shows the type string_t and its relation to basic_json::string_t.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    json::json_pointer::string_t s = \"This is a string.\";\n\n    std::cout << s << std::endl;\n\n    std::cout << std::boolalpha << std::is_same<json::json_pointer::string_t, json::string_t>::value << std::endl;\n}\n

      Output:

      This is a string.\ntrue\n
      "},{"location":"api/json_pointer/string_t/#version-history","title":"Version history","text":"
      • Added in version 3.11.0.
      "},{"location":"api/json_pointer/to_string/","title":"nlohmann::json_pointer::to_string","text":"
      string_t to_string() const;\n

      Return a string representation of the JSON pointer.

      "},{"location":"api/json_pointer/to_string/#return-value","title":"Return value","text":"

      A string representation of the JSON pointer

      "},{"location":"api/json_pointer/to_string/#notes","title":"Notes","text":"

      For each JSON pointer ptr, it holds:

      ptr == json_pointer(ptr.to_string());\n
      "},{"location":"api/json_pointer/to_string/#examples","title":"Examples","text":"Example

      The example shows the result of to_string.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // different JSON Pointers\n    json::json_pointer ptr1(\"\");\n    json::json_pointer ptr2(\"/foo\");\n    json::json_pointer ptr3(\"/foo/0\");\n    json::json_pointer ptr4(\"/\");\n    json::json_pointer ptr5(\"/a~1b\");\n    json::json_pointer ptr6(\"/c%d\");\n    json::json_pointer ptr7(\"/e^f\");\n    json::json_pointer ptr8(\"/g|h\");\n    json::json_pointer ptr9(\"/i\\\\j\");\n    json::json_pointer ptr10(\"/k\\\"l\");\n    json::json_pointer ptr11(\"/ \");\n    json::json_pointer ptr12(\"/m~0n\");\n\n    std::cout << \"\\\"\" << ptr1.to_string() << \"\\\"\\n\"\n              << \"\\\"\" << ptr2.to_string() << \"\\\"\\n\"\n              << \"\\\"\" << ptr3.to_string() << \"\\\"\\n\"\n              << \"\\\"\" << ptr4.to_string() << \"\\\"\\n\"\n              << \"\\\"\" << ptr5.to_string() << \"\\\"\\n\"\n              << \"\\\"\" << ptr6.to_string() << \"\\\"\\n\"\n              << \"\\\"\" << ptr7.to_string() << \"\\\"\\n\"\n              << \"\\\"\" << ptr8.to_string() << \"\\\"\\n\"\n              << \"\\\"\" << ptr9.to_string() << \"\\\"\\n\"\n              << \"\\\"\" << ptr10.to_string() << \"\\\"\\n\"\n              << \"\\\"\" << ptr11.to_string() << \"\\\"\\n\"\n              << \"\\\"\" << ptr12.to_string() << \"\\\"\" << std::endl;\n}\n

      Output:

      \"\"\n\"/foo\"\n\"/foo/0\"\n\"/\"\n\"/a~1b\"\n\"/c%d\"\n\"/e^f\"\n\"/g|h\"\n\"/i\\j\"\n\"/k\"l\"\n\"/ \"\n\"/m~0n\"\n
      "},{"location":"api/json_pointer/to_string/#version-history","title":"Version history","text":"
      • Since version 2.0.0.
      • Changed return type to string_t in version 3.11.0.
      "},{"location":"api/json_sax/","title":"nlohmann::json_sax","text":"
      template<typename BasicJsonType>\nstruct json_sax;\n

      This class describes the SAX interface used by sax_parse. Each function is called in different situations while the input is parsed. The boolean return value informs the parser whether to continue processing the input.

      "},{"location":"api/json_sax/#template-parameters","title":"Template parameters","text":"BasicJsonType a specialization of basic_json"},{"location":"api/json_sax/#member-types","title":"Member types","text":"
      • number_integer_t - BasicJsonType's type for numbers (integer)
      • number_unsigned_t - BasicJsonType's type for numbers (unsigned)
      • number_float_t - BasicJsonType's type for numbers (floating-point)
      • string_t - BasicJsonType's type for strings
      • binary_t - BasicJsonType's type for binary arrays
      "},{"location":"api/json_sax/#member-functions","title":"Member functions","text":"
      • binary (virtual) - a binary value was read
      • boolean (virtual) - a boolean value was read
      • end_array (virtual) - the end of an array was read
      • end_object (virtual) - the end of an object was read
      • key (virtual) - an object key was read
      • null (virtual) - a null value was read
      • number_float (virtual) - a floating-point number was read
      • number_integer (virtual) - an integer number was read
      • number_unsigned (virtual) - an unsigned integer number was read
      • parse_error (virtual) - a parse error occurred
      • start_array (virtual) - the beginning of an array was read
      • start_object (virtual) - the beginning of an object was read
      • string (virtual) - a string value was read
      "},{"location":"api/json_sax/#version-history","title":"Version history","text":"
      • Added in version 3.2.0.
      • Support for binary values (binary_t, binary) added in version 3.8.0.
      "},{"location":"api/json_sax/binary/","title":"nlohmann::json_sax::binary","text":"
      virtual bool binary(binary_t& val) = 0;\n

      A binary value was read.

      "},{"location":"api/json_sax/binary/#parameters","title":"Parameters","text":"val (in) binary value"},{"location":"api/json_sax/binary/#return-value","title":"Return value","text":"

      Whether parsing should proceed.

      "},{"location":"api/json_sax/binary/#notes","title":"Notes","text":"

      It is safe to move the passed binary value.

      "},{"location":"api/json_sax/binary/#examples","title":"Examples","text":"Example

      The example below shows how the SAX interface is used.

      #include <iostream>\n#include <iomanip>\n#include <sstream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector<std::string> events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t& s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t& val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t& val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t& val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string& last_token, const json::exception& ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // CBOR byte string\n    std::vector<std::uint8_t> vec = {{0x44, 0xcA, 0xfe, 0xba, 0xbe}};\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse CBOR\n    bool result = json::sax_parse(vec, &sec, json::input_format_t::cbor);\n\n    // output the recorded events\n    for (auto& event : sec.events)\n    {\n        std::cout << event << \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout << \"\\nresult: \" << std::boolalpha << result << std::endl;\n}\n

      Output:

      binary(val=[...])\n\nresult: true\n
      "},{"location":"api/json_sax/binary/#version-history","title":"Version history","text":"
      • Added in version 3.8.0.
      "},{"location":"api/json_sax/boolean/","title":"nlohmann::json_sax::boolean","text":"
      virtual bool boolean(bool val) = 0;\n

      A boolean value was read.

      "},{"location":"api/json_sax/boolean/#parameters","title":"Parameters","text":"val (in) boolean value"},{"location":"api/json_sax/boolean/#return-value","title":"Return value","text":"

      Whether parsing should proceed.

      "},{"location":"api/json_sax/boolean/#examples","title":"Examples","text":"Example

      The example below shows how the SAX interface is used.

      #include <iostream>\n#include <iomanip>\n#include <sstream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector<std::string> events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t& s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t& val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t& val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t& val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string& last_token, const json::exception& ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &sec);\n\n    // output the recorded events\n    for (auto& event : sec.events)\n    {\n        std::cout << event << \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout << \"\\nresult: \" << std::boolalpha << result << std::endl;\n}\n

      Output:

      start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634<U+000A>        }<U+000A>    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n
      "},{"location":"api/json_sax/boolean/#version-history","title":"Version history","text":"
      • Added in version 3.2.0.
      "},{"location":"api/json_sax/end_array/","title":"nlohmann::json_sax::end_array","text":"
      virtual bool end_array() = 0;\n

      The end of an array was read.

      "},{"location":"api/json_sax/end_array/#return-value","title":"Return value","text":"

      Whether parsing should proceed.

      "},{"location":"api/json_sax/end_array/#examples","title":"Examples","text":"Example

      The example below shows how the SAX interface is used.

      #include <iostream>\n#include <iomanip>\n#include <sstream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector<std::string> events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t& s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t& val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t& val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t& val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string& last_token, const json::exception& ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &sec);\n\n    // output the recorded events\n    for (auto& event : sec.events)\n    {\n        std::cout << event << \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout << \"\\nresult: \" << std::boolalpha << result << std::endl;\n}\n

      Output:

      start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634<U+000A>        }<U+000A>    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n
      "},{"location":"api/json_sax/end_array/#version-history","title":"Version history","text":"
      • Added in version 3.2.0.
      "},{"location":"api/json_sax/end_object/","title":"nlohmann::json_sax::end_object","text":"
      virtual bool end_object() = 0;\n

      The end of an object was read.

      "},{"location":"api/json_sax/end_object/#return-value","title":"Return value","text":"

      Whether parsing should proceed.

      "},{"location":"api/json_sax/end_object/#examples","title":"Examples","text":"Example

      The example below shows how the SAX interface is used.

      #include <iostream>\n#include <iomanip>\n#include <sstream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector<std::string> events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t& s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t& val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t& val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t& val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string& last_token, const json::exception& ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &sec);\n\n    // output the recorded events\n    for (auto& event : sec.events)\n    {\n        std::cout << event << \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout << \"\\nresult: \" << std::boolalpha << result << std::endl;\n}\n

      Output:

      start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634<U+000A>        }<U+000A>    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n
      "},{"location":"api/json_sax/end_object/#version-history","title":"Version history","text":"
      • Added in version 3.2.0.
      "},{"location":"api/json_sax/key/","title":"nlohmann::json_sax::key","text":"
      virtual bool key(string_t& val) = 0;\n

      An object key was read.

      "},{"location":"api/json_sax/key/#parameters","title":"Parameters","text":"val (in) object key"},{"location":"api/json_sax/key/#return-value","title":"Return value","text":"

      Whether parsing should proceed.

      "},{"location":"api/json_sax/key/#notes","title":"Notes","text":"

      It is safe to move the passed object key value.

      "},{"location":"api/json_sax/key/#examples","title":"Examples","text":"Example

      The example below shows how the SAX interface is used.

      #include <iostream>\n#include <iomanip>\n#include <sstream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector<std::string> events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t& s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t& val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t& val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t& val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string& last_token, const json::exception& ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &sec);\n\n    // output the recorded events\n    for (auto& event : sec.events)\n    {\n        std::cout << event << \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout << \"\\nresult: \" << std::boolalpha << result << std::endl;\n}\n

      Output:

      start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634<U+000A>        }<U+000A>    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n
      "},{"location":"api/json_sax/key/#version-history","title":"Version history","text":"
      • Added in version 3.2.0.
      "},{"location":"api/json_sax/null/","title":"nlohmann::json_sax::null","text":"
      virtual bool null() = 0;\n

      A null value was read.

      "},{"location":"api/json_sax/null/#return-value","title":"Return value","text":"

      Whether parsing should proceed.

      "},{"location":"api/json_sax/null/#examples","title":"Examples","text":"Example

      The example below shows how the SAX interface is used.

      #include <iostream>\n#include <iomanip>\n#include <sstream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector<std::string> events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t& s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t& val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t& val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t& val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string& last_token, const json::exception& ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &sec);\n\n    // output the recorded events\n    for (auto& event : sec.events)\n    {\n        std::cout << event << \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout << \"\\nresult: \" << std::boolalpha << result << std::endl;\n}\n

      Output:

      start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634<U+000A>        }<U+000A>    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n
      "},{"location":"api/json_sax/null/#version-history","title":"Version history","text":"
      • Added in version 3.2.0.
      "},{"location":"api/json_sax/number_float/","title":"nlohmann::json_sax::number_float","text":"
      virtual bool number_float(number_float_t val, const string_t& s) = 0;\n

      A floating-point number was read.

      "},{"location":"api/json_sax/number_float/#parameters","title":"Parameters","text":"val (in) floating-point value s (in) string representation of the original input"},{"location":"api/json_sax/number_float/#return-value","title":"Return value","text":"

      Whether parsing should proceed.

      "},{"location":"api/json_sax/number_float/#examples","title":"Examples","text":"Example

      The example below shows how the SAX interface is used.

      #include <iostream>\n#include <iomanip>\n#include <sstream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector<std::string> events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t& s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t& val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t& val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t& val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string& last_token, const json::exception& ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &sec);\n\n    // output the recorded events\n    for (auto& event : sec.events)\n    {\n        std::cout << event << \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout << \"\\nresult: \" << std::boolalpha << result << std::endl;\n}\n

      Output:

      start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634<U+000A>        }<U+000A>    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n
      "},{"location":"api/json_sax/number_float/#version-history","title":"Version history","text":"
      • Added in version 3.2.0.
      "},{"location":"api/json_sax/number_integer/","title":"nlohmann::json_sax::number_integer","text":"
      virtual bool number_integer(number_integer_t val) = 0;\n

      An integer number was read.

      "},{"location":"api/json_sax/number_integer/#parameters","title":"Parameters","text":"val (in) integer value"},{"location":"api/json_sax/number_integer/#return-value","title":"Return value","text":"

      Whether parsing should proceed.

      "},{"location":"api/json_sax/number_integer/#examples","title":"Examples","text":"Example

      The example below shows how the SAX interface is used.

      #include <iostream>\n#include <iomanip>\n#include <sstream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector<std::string> events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t& s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t& val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t& val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t& val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string& last_token, const json::exception& ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &sec);\n\n    // output the recorded events\n    for (auto& event : sec.events)\n    {\n        std::cout << event << \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout << \"\\nresult: \" << std::boolalpha << result << std::endl;\n}\n

      Output:

      start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634<U+000A>        }<U+000A>    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n
      "},{"location":"api/json_sax/number_integer/#version-history","title":"Version history","text":"
      • Added in version 3.2.0.
      "},{"location":"api/json_sax/number_unsigned/","title":"nlohmann::json_sax::number_unsigned","text":"
      virtual bool number_unsigned(number_unsigned_t val) = 0;\n

      An unsigned integer number was read.

      "},{"location":"api/json_sax/number_unsigned/#parameters","title":"Parameters","text":"val (in) unsigned integer value"},{"location":"api/json_sax/number_unsigned/#return-value","title":"Return value","text":"

      Whether parsing should proceed.

      "},{"location":"api/json_sax/number_unsigned/#examples","title":"Examples","text":"Example

      The example below shows how the SAX interface is used.

      #include <iostream>\n#include <iomanip>\n#include <sstream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector<std::string> events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t& s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t& val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t& val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t& val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string& last_token, const json::exception& ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &sec);\n\n    // output the recorded events\n    for (auto& event : sec.events)\n    {\n        std::cout << event << \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout << \"\\nresult: \" << std::boolalpha << result << std::endl;\n}\n

      Output:

      start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634<U+000A>        }<U+000A>    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n
      "},{"location":"api/json_sax/number_unsigned/#version-history","title":"Version history","text":"
      • Added in version 3.2.0.
      "},{"location":"api/json_sax/parse_error/","title":"nlohmann::json_sax::parse_error","text":"
      virtual bool parse_error(std::size_t position,\n                         const std::string& last_token,\n                         const detail::exception& ex) = 0;\n

      A parse error occurred.

      "},{"location":"api/json_sax/parse_error/#parameters","title":"Parameters","text":"position (in) the position in the input where the error occurs last_token (in) the last read token ex (in) an exception object describing the error"},{"location":"api/json_sax/parse_error/#return-value","title":"Return value","text":"

      Whether parsing should proceed (must return false).

      "},{"location":"api/json_sax/parse_error/#examples","title":"Examples","text":"Example

      The example below shows how the SAX interface is used.

      #include <iostream>\n#include <iomanip>\n#include <sstream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector<std::string> events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t& s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t& val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t& val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t& val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string& last_token, const json::exception& ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &sec);\n\n    // output the recorded events\n    for (auto& event : sec.events)\n    {\n        std::cout << event << \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout << \"\\nresult: \" << std::boolalpha << result << std::endl;\n}\n

      Output:

      start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634<U+000A>        }<U+000A>    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n
      "},{"location":"api/json_sax/parse_error/#version-history","title":"Version history","text":"
      • Added in version 3.2.0.
      "},{"location":"api/json_sax/start_array/","title":"nlohmann::json_sax::start_array","text":"
      virtual bool start_array(std::size_t elements) = 0;\n

      The beginning of an array was read.

      "},{"location":"api/json_sax/start_array/#parameters","title":"Parameters","text":"elements (in) number of object elements or -1 if unknown"},{"location":"api/json_sax/start_array/#return-value","title":"Return value","text":"

      Whether parsing should proceed.

      "},{"location":"api/json_sax/start_array/#notes","title":"Notes","text":"

      Binary formats may report the number of elements.

      "},{"location":"api/json_sax/start_array/#examples","title":"Examples","text":"Example

      The example below shows how the SAX interface is used.

      #include <iostream>\n#include <iomanip>\n#include <sstream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector<std::string> events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t& s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t& val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t& val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t& val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string& last_token, const json::exception& ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &sec);\n\n    // output the recorded events\n    for (auto& event : sec.events)\n    {\n        std::cout << event << \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout << \"\\nresult: \" << std::boolalpha << result << std::endl;\n}\n

      Output:

      start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634<U+000A>        }<U+000A>    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n
      "},{"location":"api/json_sax/start_array/#version-history","title":"Version history","text":"
      • Added in version 3.2.0.
      "},{"location":"api/json_sax/start_object/","title":"nlohmann::json_sax::start_object","text":"
      virtual bool start_object(std::size_t elements) = 0;\n

      The beginning of an object was read.

      "},{"location":"api/json_sax/start_object/#parameters","title":"Parameters","text":"elements (in) number of object elements or -1 if unknown"},{"location":"api/json_sax/start_object/#return-value","title":"Return value","text":"

      Whether parsing should proceed.

      "},{"location":"api/json_sax/start_object/#notes","title":"Notes","text":"

      Binary formats may report the number of elements.

      "},{"location":"api/json_sax/start_object/#examples","title":"Examples","text":"Example

      The example below shows how the SAX interface is used.

      #include <iostream>\n#include <iomanip>\n#include <sstream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector<std::string> events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t& s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t& val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t& val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t& val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string& last_token, const json::exception& ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &sec);\n\n    // output the recorded events\n    for (auto& event : sec.events)\n    {\n        std::cout << event << \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout << \"\\nresult: \" << std::boolalpha << result << std::endl;\n}\n

      Output:

      start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634<U+000A>        }<U+000A>    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n
      "},{"location":"api/json_sax/start_object/#version-history","title":"Version history","text":"
      • Added in version 3.2.0.
      "},{"location":"api/json_sax/string/","title":"nlohmann::json_sax::string","text":"
      virtual bool string(string_t& val) = 0;\n

      A string value was read.

      "},{"location":"api/json_sax/string/#parameters","title":"Parameters","text":"val (in) string value"},{"location":"api/json_sax/string/#return-value","title":"Return value","text":"

      Whether parsing should proceed.

      "},{"location":"api/json_sax/string/#notes","title":"Notes","text":"

      It is safe to move the passed string value.

      "},{"location":"api/json_sax/string/#examples","title":"Examples","text":"Example

      The example below shows how the SAX interface is used.

      #include <iostream>\n#include <iomanip>\n#include <sstream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector<std::string> events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t& s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t& val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t& val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t& val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string& last_token, const json::exception& ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &sec);\n\n    // output the recorded events\n    for (auto& event : sec.events)\n    {\n        std::cout << event << \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout << \"\\nresult: \" << std::boolalpha << result << std::endl;\n}\n

      Output:

      start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634<U+000A>        }<U+000A>    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n
      "},{"location":"api/json_sax/string/#version-history","title":"Version history","text":"
      • Added in version 3.2.0.
      "},{"location":"api/macros/","title":"Macros","text":"

      Some aspects of the library can be configured by defining preprocessor macros before including the json.hpp header. See also the macro overview page.

      "},{"location":"api/macros/#runtime-assertions","title":"Runtime assertions","text":"
      • JSON_ASSERT(x) - control behavior of runtime assertions
      "},{"location":"api/macros/#exceptions","title":"Exceptions","text":"
      • JSON_CATCH_USER(exception)JSON_THROW_USER(exception)JSON_TRY_USER - control exceptions
      • JSON_DIAGNOSTICS - control extended diagnostics
      • JSON_NOEXCEPTION - switch off exceptions
      "},{"location":"api/macros/#language-support","title":"Language support","text":"
      • JSON_HAS_CPP_11JSON_HAS_CPP_14JSON_HAS_CPP_17JSON_HAS_CPP_20 - set supported C++ standard
      • JSON_HAS_FILESYSTEMJSON_HAS_EXPERIMENTAL_FILESYSTEM - control std::filesystem support
      • JSON_HAS_RANGES - control std::ranges support
      • JSON_HAS_THREE_WAY_COMPARISON - control 3-way comparison support
      • JSON_NO_IO - switch off functions relying on certain C++ I/O headers
      • JSON_SKIP_UNSUPPORTED_COMPILER_CHECK - do not warn about unsupported compilers
      • JSON_USE_GLOBAL_UDLS - place user-defined string literals (UDLs) into the global namespace
      "},{"location":"api/macros/#library-version","title":"Library version","text":"
      • JSON_SKIP_LIBRARY_VERSION_CHECK - skip library version check
      • NLOHMANN_JSON_VERSION_MAJORNLOHMANN_JSON_VERSION_MINORNLOHMANN_JSON_VERSION_PATCH - library version information
      "},{"location":"api/macros/#library-namespace","title":"Library namespace","text":"
      • NLOHMANN_JSON_NAMESPACE - full name of the nlohmann namespace
      • NLOHMANN_JSON_NAMESPACE_BEGINNLOHMANN_JSON_NAMESPACE_END - open and close the library namespace
      • NLOHMANN_JSON_NAMESPACE_NO_VERSION - disable the version component of the inline namespace
      "},{"location":"api/macros/#type-conversions","title":"Type conversions","text":"
      • JSON_DISABLE_ENUM_SERIALIZATION - switch off default serialization/deserialization functions for enums
      • JSON_USE_IMPLICIT_CONVERSIONS - control implicit conversions
      "},{"location":"api/macros/#comparison-behavior","title":"Comparison behavior","text":"
      • JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON - control comparison of discarded values
      "},{"location":"api/macros/#serializationdeserialization-macros","title":"Serialization/deserialization macros","text":"
      • Enum: NLOHMANN_JSON_SERIALIZE_ENUM
      • Class/struct:

        • Do you need to serialize private variables?
          • Yes? Do you only need serialization?
            • Yes? NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE
            • No? Allow deserialization of JSON values with missing values?
              • Yes? NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT
              • No? NLOHMANN_DEFINE_TYPE_INTRUSIVE
          • No? Do you only need serialization?
            • Yes? NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE
            • No? Allow deserialization of JSON values with missing values?
              • Yes? NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT
              • No? NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE
      • NLOHMANN_DEFINE_TYPE_INTRUSIVE(type, member...)NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT(type, member...) NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE(type, member...) - serialization/deserialization of types with access to private variables

      • NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(type, member...)NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT(type, member...) NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE(type, member...) - serialization/deserialization of types without access to private variables
      • NLOHMANN_JSON_SERIALIZE_ENUM(type, ...) - serialization/deserialization of enum types
      "},{"location":"api/macros/json_assert/","title":"JSON_ASSERT","text":"
      #define JSON_ASSERT(x) /* value */\n

      This macro controls which code is executed for runtime assertions of the library.

      "},{"location":"api/macros/json_assert/#parameters","title":"Parameters","text":"x (in) expression of scalar type"},{"location":"api/macros/json_assert/#default-definition","title":"Default definition","text":"

      The default value is assert(x).

      #define JSON_ASSERT(x) assert(x)\n

      Therefore, assertions can be switched off by defining NDEBUG.

      "},{"location":"api/macros/json_assert/#notes","title":"Notes","text":"
      • The library uses numerous assertions to guarantee invariants and to abort in case of otherwise undefined behavior (e.g., when calling operator[] with a missing object key on a const object). See page runtime assertions for more information.
      • Defining the macro to code that does not call std::abort may leave the library in an undefined state.
      • The macro is undefined outside the library.
      "},{"location":"api/macros/json_assert/#examples","title":"Examples","text":"Example 1: default behavior

      The following code will trigger an assertion at runtime:

      #include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    const json j = {{\"key\", \"value\"}};\n    auto v = j[\"missing\"];\n}\n

      Output:

      Assertion failed: (m_value.object->find(key) != m_value.object->end()), function operator[], file json.hpp, line 2144.\n
      Example 2: user-defined behavior

      The assertion reporting can be changed by defining JSON_ASSERT(x) differently.

      #include <cstdio>\n#include <cstdlib>\n#define JSON_ASSERT(x) if(!(x)){fprintf(stderr, \"assertion error in %s\\n\", __FUNCTION__); std::abort();}\n\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    const json j = {{\"key\", \"value\"}};\n    auto v = j[\"missing\"];\n}\n

      Output:

      assertion error in operator[]\n
      "},{"location":"api/macros/json_assert/#version-history","title":"Version history","text":"
      • Added in version 3.9.0.
      "},{"location":"api/macros/json_diagnostics/","title":"JSON_DIAGNOSTICS","text":"
      #define JSON_DIAGNOSTICS /* value */\n

      This macro enables extended diagnostics for exception messages. Possible values are 1 to enable or 0 to disable (default).

      When enabled, exception messages contain a JSON Pointer to the JSON value that triggered the exception. Note that enabling this macro increases the size of every JSON value by one pointer and adds some runtime overhead.

      "},{"location":"api/macros/json_diagnostics/#default-definition","title":"Default definition","text":"

      The default value is 0 (extended diagnostics are switched off).

      #define JSON_DIAGNOSTICS 0\n

      When the macro is not defined, the library will define it to its default value.

      "},{"location":"api/macros/json_diagnostics/#notes","title":"Notes","text":"

      ABI compatibility

      As of version 3.11.0, this macro is no longer required to be defined consistently throughout a codebase to avoid One Definition Rule (ODR) violations, as the value of this macro is encoded in the namespace, resulting in distinct symbol names.

      This allows different parts of a codebase to use different versions or configurations of this library without causing improper behavior.

      Where possible, it is still recommended that all code define this the same way for maximum interoperability.

      CMake option

      Diagnostic messages can also be controlled with the CMake option JSON_Diagnostics (OFF by default) which defines JSON_DIAGNOSTICS accordingly.

      "},{"location":"api/macros/json_diagnostics/#examples","title":"Examples","text":"Example 1: default behavior
      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    json j;\n    j[\"address\"][\"street\"] = \"Fake Street\";\n    j[\"address\"][\"housenumber\"] = \"12\";\n\n    try\n    {\n        int housenumber = j[\"address\"][\"housenumber\"];\n    }\n    catch (const json::exception& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n}\n

      Output:

      [json.exception.type_error.302] type must be number, but is string\n

      This exception can be hard to debug if storing the value \"12\" and accessing it is further apart.

      Example 2: extended diagnostic messages
      #include <iostream>\n\n# define JSON_DIAGNOSTICS 1\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    json j;\n    j[\"address\"][\"street\"] = \"Fake Street\";\n    j[\"address\"][\"housenumber\"] = \"12\";\n\n    try\n    {\n        int housenumber = j[\"address\"][\"housenumber\"];\n    }\n    catch (const json::exception& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n}\n

      Output:

      [json.exception.type_error.302] (/address/housenumber) type must be number, but is string\n

      Now the exception message contains a JSON Pointer /address/housenumber that indicates which value has the wrong type.

      "},{"location":"api/macros/json_diagnostics/#version-history","title":"Version history","text":"
      • Added in version 3.10.0.
      • As of version 3.11.0 the definition is allowed to vary between translation units.
      "},{"location":"api/macros/json_disable_enum_serialization/","title":"JSON_DISABLE_ENUM_SERIALIZATION","text":"
      #define JSON_DISABLE_ENUM_SERIALIZATION /* value */\n

      When defined to 1, default serialization and deserialization functions for enums are excluded and have to be provided by the user, for example, using NLOHMANN_JSON_SERIALIZE_ENUM (see arbitrary type conversions for more details).

      Parsing or serializing an enum will result in a compiler error.

      This works for both unscoped and scoped enums.

      "},{"location":"api/macros/json_disable_enum_serialization/#default-definition","title":"Default definition","text":"

      The default value is 0.

      #define JSON_DISABLE_ENUM_SERIALIZATION 0\n
      "},{"location":"api/macros/json_disable_enum_serialization/#notes","title":"Notes","text":"

      CMake option

      Enum serialization can also be controlled with the CMake option JSON_DisableEnumSerialization (OFF by default) which defines JSON_DISABLE_ENUM_SERIALIZATION accordingly.

      "},{"location":"api/macros/json_disable_enum_serialization/#examples","title":"Examples","text":"Example 1: Disabled behavior

      The code below forces the library not to create default serialization/deserialization functions from_json and to_json, meaning the code below does not compile.

      #define JSON_DISABLE_ENUM_SERIALIZATION 1\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nenum class Choice\n{\n    first,\n    second,\n};\n\nint main()\n{\n    // normally invokes to_json serialization function but with JSON_DISABLE_ENUM_SERIALIZATION defined, it does not\n    const json j = Choice::first; \n\n    // normally invokes from_json parse function but with JSON_DISABLE_ENUM_SERIALIZATION defined, it does not\n    Choice ch = j.template get<Choice>();\n}\n
      Example 2: Serialize enum macro

      The code below forces the library not to create default serialization/deserialization functions from_json and to_json, but uses NLOHMANN_JSON_SERIALIZE_ENUM to parse and serialize the enum.

      #define JSON_DISABLE_ENUM_SERIALIZATION 1\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nenum class Choice\n{\n    first,\n    second,\n};\n\nNLOHMANN_JSON_SERIALIZE_ENUM(Choice,\n{\n    { Choice::first, \"first\" },\n    { Choice::second, \"second\" },\n})\n\nint main()\n{\n    // uses user-defined to_json function defined by macro\n    const json j = Choice::first; \n\n    // uses user-defined from_json function defined by macro\n    Choice ch = j.template get<Choice>();\n}\n
      Example 3: User-defined serialization/deserialization functions

      The code below forces the library not to create default serialization/deserialization functions from_json and to_json, but uses user-defined functions to parse and serialize the enum.

      #define JSON_DISABLE_ENUM_SERIALIZATION 1\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nenum class Choice\n{\n    first,\n    second,\n};\n\nvoid from_json(const json& j, Choice& ch)\n{\n    auto value = j.template get<std::string>();\n    if (value == \"first\")\n    {\n        ch = Choice::first;\n    }\n    else if (value == \"second\")\n    {\n        ch = Choice::second;\n    }\n}\n\nvoid to_json(json& j, const Choice& ch)\n{\n    auto value = j.template get<std::string>();\n    if (value == \"first\")\n    {\n        ch = Choice::first;\n    }\n    else if (value == \"second\")\n    {\n        ch = Choice::second;\n    }\n}\n\nint main()\n{\n    // uses user-defined to_json function\n    const json j = Choice::first; \n\n    // uses user-defined from_json function\n    Choice ch = j.template get<Choice>();\n}\n
      "},{"location":"api/macros/json_disable_enum_serialization/#see-also","title":"See also","text":"
      • NLOHMANN_JSON_SERIALIZE_ENUM
      "},{"location":"api/macros/json_disable_enum_serialization/#version-history","title":"Version history","text":"
      • Added in version 3.11.0.
      "},{"location":"api/macros/json_has_cpp_11/","title":"JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20","text":"
      #define JSON_HAS_CPP_11\n#define JSON_HAS_CPP_14\n#define JSON_HAS_CPP_17\n#define JSON_HAS_CPP_20\n

      The library targets C++11, but also supports some features introduced in later C++ versions (e.g., std::string_view support for C++17). For these new features, the library implements some preprocessor checks to determine the C++ standard. By defining any of these symbols, the internal check is overridden and the provided C++ version is unconditionally assumed. This can be helpful for compilers that only implement parts of the standard and would be detected incorrectly.

      "},{"location":"api/macros/json_has_cpp_11/#default-definition","title":"Default definition","text":"

      The default value is detected based on preprocessor macros such as __cplusplus, _HAS_CXX17, or _MSVC_LANG.

      "},{"location":"api/macros/json_has_cpp_11/#notes","title":"Notes","text":"
      • JSON_HAS_CPP_11 is always defined.
      • All macros are undefined outside the library.
      "},{"location":"api/macros/json_has_cpp_11/#examples","title":"Examples","text":"Example

      The code below forces the library to use the C++14 standard:

      #define JSON_HAS_CPP_14 1\n#include <nlohmann/json.hpp>\n\n...\n
      "},{"location":"api/macros/json_has_cpp_11/#version-history","title":"Version history","text":"
      • Added in version 3.10.5.
      "},{"location":"api/macros/json_has_filesystem/","title":"JSON_HAS_FILESYSTEM / JSON_HAS_EXPERIMENTAL_FILESYSTEM","text":"
      #define JSON_HAS_FILESYSTEM /* value */\n#define JSON_HAS_EXPERIMENTAL_FILESYSTEM /* value */\n

      When compiling with C++17, the library provides conversions from and to std::filesystem::path. As compiler support for filesystem is limited, the library tries to detect whether <filesystem>/std::filesystem (JSON_HAS_FILESYSTEM) or <experimental/filesystem>/std::experimental::filesystem (JSON_HAS_EXPERIMENTAL_FILESYSTEM) should be used. To override the built-in check, define JSON_HAS_FILESYSTEM or JSON_HAS_EXPERIMENTAL_FILESYSTEM to 1.

      "},{"location":"api/macros/json_has_filesystem/#default-definition","title":"Default definition","text":"

      The default value is detected based on the preprocessor macros __cpp_lib_filesystem, __cpp_lib_experimental_filesystem, __has_include(<filesystem>), or __has_include(<experimental/filesystem>).

      "},{"location":"api/macros/json_has_filesystem/#notes","title":"Notes","text":"
      • Note that older compilers or older versions of libstd++ also require the library stdc++fs to be linked to for filesystem support.
      • Both macros are undefined outside the library.
      "},{"location":"api/macros/json_has_filesystem/#examples","title":"Examples","text":"Example

      The code below forces the library to use the header <experimental/filesystem>.

      #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1\n#include <nlohmann/json.hpp>\n\n...\n
      "},{"location":"api/macros/json_has_filesystem/#version-history","title":"Version history","text":"
      • Added in version 3.10.5.
      "},{"location":"api/macros/json_has_ranges/","title":"JSON_HAS_RANGES","text":"
      #define JSON_HAS_RANGES /* value */\n

      This macro indicates whether the standard library has any support for ranges. Implies support for concepts. Possible values are 1 when supported or 0 when unsupported.

      "},{"location":"api/macros/json_has_ranges/#default-definition","title":"Default definition","text":"

      The default value is detected based on the preprocessor macro __cpp_lib_ranges.

      When the macro is not defined, the library will define it to its default value.

      "},{"location":"api/macros/json_has_ranges/#examples","title":"Examples","text":"Example

      The code below forces the library to enable support for ranges:

      #define JSON_HAS_RANGES 1\n#include <nlohmann/json.hpp>\n\n...\n
      "},{"location":"api/macros/json_has_ranges/#version-history","title":"Version history","text":"
      • Added in version 3.11.0.
      "},{"location":"api/macros/json_has_static_rtti/","title":"JSON_HAS_STATIC_RTTI","text":"
      #define JSON_HAS_STATIC_RTTI /* value */\n

      This macro indicates whether the standard library has any support for RTTI (run time type information). Possible values are 1 when supported or 0 when unsupported.

      "},{"location":"api/macros/json_has_static_rtti/#default-definition","title":"Default definition","text":"

      The default value is detected based on the preprocessor macro _HAS_STATIC_RTTI.

      When the macro is not defined, the library will define it to its default value.

      "},{"location":"api/macros/json_has_static_rtti/#examples","title":"Examples","text":"Example

      The code below forces the library to enable support for libraries with RTTI dependence:

      #define JSON_HAS_STATIC_RTTI 1\n#include <nlohmann/json.hpp>\n\n...\n
      "},{"location":"api/macros/json_has_static_rtti/#version-history","title":"Version history","text":"
      • Added in version 3.11.3.
      "},{"location":"api/macros/json_has_three_way_comparison/","title":"JSON_HAS_THREE_WAY_COMPARISON","text":"
      #define JSON_HAS_THREE_WAY_COMPARISON /* value */\n

      This macro indicates whether the compiler and standard library support 3-way comparison. Possible values are 1 when supported or 0 when unsupported.

      "},{"location":"api/macros/json_has_three_way_comparison/#default-definition","title":"Default definition","text":"

      The default value is detected based on the preprocessor macros __cpp_impl_three_way_comparison and __cpp_lib_three_way_comparison.

      When the macro is not defined, the library will define it to its default value.

      "},{"location":"api/macros/json_has_three_way_comparison/#examples","title":"Examples","text":"Example

      The code below forces the library to use 3-way comparison:

      #define JSON_HAS_THREE_WAY_COMPARISON 1\n#include <nlohmann/json.hpp>\n\n...\n
      "},{"location":"api/macros/json_has_three_way_comparison/#version-history","title":"Version history","text":"
      • Added in version 3.11.0.
      "},{"location":"api/macros/json_no_io/","title":"JSON_NO_IO","text":"
      #define JSON_NO_IO\n

      When defined, headers <cstdio>, <ios>, <iosfwd>, <istream>, and <ostream> are not included and parse functions relying on these headers are excluded. This is relevant for environments where these I/O functions are disallowed for security reasons (e.g., Intel Software Guard Extensions (SGX)).

      "},{"location":"api/macros/json_no_io/#default-definition","title":"Default definition","text":"

      By default, JSON_NO_IO is not defined.

      #undef JSON_NO_IO\n
      "},{"location":"api/macros/json_no_io/#examples","title":"Examples","text":"Example

      The code below forces the library not to use the headers <cstdio>, <ios>, <iosfwd>, <istream>, and <ostream>.

      #define JSON_NO_IO 1\n#include <nlohmann/json.hpp>\n\n...\n
      "},{"location":"api/macros/json_no_io/#version-history","title":"Version history","text":"
      • Added in version 3.10.0.
      "},{"location":"api/macros/json_noexception/","title":"JSON_NOEXCEPTION","text":"
      #define JSON_NOEXCEPTION\n

      Exceptions can be switched off by defining the symbol JSON_NOEXCEPTION. When defining JSON_NOEXCEPTION, try is replaced by if (true), catch is replaced by if (false), and throw is replaced by std::abort().

      The same effect is achieved by setting the compiler flag -fno-exceptions.

      "},{"location":"api/macros/json_noexception/#default-definition","title":"Default definition","text":"

      By default, the macro is not defined.

      #undef JSON_NOEXCEPTION\n
      "},{"location":"api/macros/json_noexception/#notes","title":"Notes","text":"

      The explanatory what() string of exceptions is not available for MSVC if exceptions are disabled, see #2824.

      "},{"location":"api/macros/json_noexception/#examples","title":"Examples","text":"Example

      The code below switches off exceptions in the library.

      #define JSON_NOEXCEPTION 1\n#include <nlohmann/json.hpp>\n\n...\n
      "},{"location":"api/macros/json_noexception/#see-also","title":"See also","text":"
      • Switch off exceptions for more information how to switch off exceptions
      "},{"location":"api/macros/json_noexception/#version-history","title":"Version history","text":"

      Added in version 2.1.0.

      "},{"location":"api/macros/json_skip_library_version_check/","title":"JSON_SKIP_LIBRARY_VERSION_CHECK","text":"
      #define JSON_SKIP_LIBRARY_VERSION_CHECK\n

      When defined, the library will not create a compiler warning when a different version of the library was already included.

      "},{"location":"api/macros/json_skip_library_version_check/#default-definition","title":"Default definition","text":"

      By default, the macro is not defined.

      #undef JSON_SKIP_LIBRARY_VERSION_CHECK\n
      "},{"location":"api/macros/json_skip_library_version_check/#notes","title":"Notes","text":"

      ABI compatibility

      Mixing different library versions in the same code can be a problem as the different versions may not be ABI compatible.

      "},{"location":"api/macros/json_skip_library_version_check/#examples","title":"Examples","text":"

      Example

      The following warning will be shown in case a different version of the library was already included:

      Already included a different version of the library!\n
      "},{"location":"api/macros/json_skip_library_version_check/#version-history","title":"Version history","text":"

      Added in version 3.11.0.

      "},{"location":"api/macros/json_skip_unsupported_compiler_check/","title":"JSON_SKIP_UNSUPPORTED_COMPILER_CHECK","text":"
      #define JSON_SKIP_UNSUPPORTED_COMPILER_CHECK\n

      When defined, the library will not create a compile error when a known unsupported compiler is detected. This allows to use the library with compilers that do not fully support C++11 and may only work if unsupported features are not used.

      "},{"location":"api/macros/json_skip_unsupported_compiler_check/#default-definition","title":"Default definition","text":"

      By default, the macro is not defined.

      #undef JSON_SKIP_UNSUPPORTED_COMPILER_CHECK\n
      "},{"location":"api/macros/json_skip_unsupported_compiler_check/#examples","title":"Examples","text":"Example

      The code below switches off the check whether the compiler is supported.

      #define JSON_SKIP_UNSUPPORTED_COMPILER_CHECK 1\n#include <nlohmann/json.hpp>\n\n...\n
      "},{"location":"api/macros/json_skip_unsupported_compiler_check/#version-history","title":"Version history","text":"

      Added in version 3.2.0.

      "},{"location":"api/macros/json_throw_user/","title":"JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER","text":"
      // (1)\n#define JSON_CATCH_USER(exception) /* value */\n// (2)\n#define JSON_THROW_USER(exception) /* value */\n// (3)\n#define JSON_TRY_USER /* value */\n

      Controls how exceptions are handled by the library.

      1. This macro overrides catch calls inside the library. The argument is the type of the exception to catch. As of version 3.8.0, the library only catches std::out_of_range exceptions internally to rethrow them as json::out_of_range exceptions. The macro is always followed by a scope.
      2. This macro overrides throw calls inside the library. The argument is the exception to be thrown. Note that JSON_THROW_USER should leave the current scope (e.g., by throwing or aborting), as continuing after it may yield undefined behavior.
      3. This macro overrides try calls inside the library. It has no arguments and is always followed by a scope.
      "},{"location":"api/macros/json_throw_user/#parameters","title":"Parameters","text":"exception (in) an exception type"},{"location":"api/macros/json_throw_user/#default-definition","title":"Default definition","text":"

      By default, the macros map to their respective C++ keywords:

      #define JSON_CATCH_USER(exception) catch(exception)\n#define JSON_THROW_USER(exception) throw exception\n#define JSON_TRY_USER              try\n

      When exceptions are switched off, the try block is executed unconditionally, and throwing exceptions is replaced by calling std::abort to make reaching the throw branch abort the process.

      #define JSON_THROW_USER(exception) std::abort()\n#define JSON_TRY_USER              if (true)\n#define JSON_CATCH_USER(exception) if (false)\n
      "},{"location":"api/macros/json_throw_user/#examples","title":"Examples","text":"Example

      The code below switches off exceptions and creates a log entry with a detailed error message in case of errors.

      #include <iostream>\n\n#define JSON_TRY_USER if(true)\n#define JSON_CATCH_USER(exception) if(false)\n#define JSON_THROW_USER(exception)                           \\\n    {std::clog << \"Error in \" << __FILE__ << \":\" << __LINE__ \\\n               << \" (function \" << __FUNCTION__ << \") - \"    \\\n               << (exception).what() << std::endl;           \\\n     std::abort();}\n\n#include <nlohmann/json.hpp>\n
      "},{"location":"api/macros/json_throw_user/#see-also","title":"See also","text":"
      • Switch off exceptions for more information how to switch off exceptions
      • JSON_NOEXCEPTION - switch off exceptions
      "},{"location":"api/macros/json_throw_user/#version-history","title":"Version history","text":"
      • Added in version 3.1.0.
      "},{"location":"api/macros/json_use_global_udls/","title":"JSON_USE_GLOBAL_UDLS","text":"
      #define JSON_USE_GLOBAL_UDLS /* value */\n

      When defined to 1, the user-defined string literals (UDLs) are placed into the global namespace instead of nlohmann::literals::json_literals.

      "},{"location":"api/macros/json_use_global_udls/#default-definition","title":"Default definition","text":"

      The default value is 1.

      #define JSON_USE_GLOBAL_UDLS 1\n

      When the macro is not defined, the library will define it to its default value.

      "},{"location":"api/macros/json_use_global_udls/#notes","title":"Notes","text":"

      Future behavior change

      The user-defined string literals will be removed from the global namespace in the next major release of the library.

      To prepare existing code, define JSON_USE_GLOBAL_UDLS to 0 and bring the string literals into scope where needed. Refer to any of the string literals for details.

      CMake option

      The placement of user-defined string literals can also be controlled with the CMake option JSON_GlobalUDLs (ON by default) which defines JSON_USE_GLOBAL_UDLS accordingly.

      "},{"location":"api/macros/json_use_global_udls/#examples","title":"Examples","text":"Example 1: Default behavior

      The code below shows the default behavior using the _json UDL.

      #include <nlohmann/json.hpp>\n\n#include <iostream>\n\nint main()\n{\n    auto j = \"42\"_json;\n\n    std::cout << j << std::endl;\n}\n

      Output:

      42\n
      Example 2: Namespaced UDLs

      The code below shows how UDLs need to be brought into scope before using _json when JSON_USE_GLOBAL_UDLS is defined to 0.

      #define JSON_USE_GLOBAL_UDLS 0\n#include <nlohmann/json.hpp>\n\n#include <iostream>\n\nint main()\n{\n    // auto j = \"42\"_json; // This line would fail to compile,\n                           // because the UDLs are not in the global namespace\n\n    // Bring the UDLs into scope\n    using namespace nlohmann::json_literals;\n\n    auto j = \"42\"_json;\n\n    std::cout << j << std::endl;\n}\n

      Output:

      42\n
      "},{"location":"api/macros/json_use_global_udls/#see-also","title":"See also","text":"
      • operator\"\"_json
      • operator\"\"_json_pointer
      "},{"location":"api/macros/json_use_global_udls/#version-history","title":"Version history","text":"
      • Added in version 3.11.0.
      "},{"location":"api/macros/json_use_implicit_conversions/","title":"JSON_USE_IMPLICIT_CONVERSIONS","text":"
      #define JSON_USE_IMPLICIT_CONVERSIONS /* value */\n

      When defined to 0, implicit conversions are switched off. By default, implicit conversions are switched on. The value directly affects operator ValueType.

      "},{"location":"api/macros/json_use_implicit_conversions/#default-definition","title":"Default definition","text":"

      By default, implicit conversions are enabled.

      #define JSON_USE_IMPLICIT_CONVERSIONS 1\n
      "},{"location":"api/macros/json_use_implicit_conversions/#notes","title":"Notes","text":"

      Future behavior change

      Implicit conversions will be switched off by default in the next major release of the library.

      You can prepare existing code by already defining JSON_USE_IMPLICIT_CONVERSIONS to 0 and replace any implicit conversions with calls to get.

      CMake option

      Implicit conversions can also be controlled with the CMake option JSON_ImplicitConversions (ON by default) which defines JSON_USE_IMPLICIT_CONVERSIONS accordingly.

      "},{"location":"api/macros/json_use_implicit_conversions/#examples","title":"Examples","text":"Example

      This is an example for an implicit conversion:

      json j = \"Hello, world!\";\nstd::string s = j;\n

      When JSON_USE_IMPLICIT_CONVERSIONS is defined to 0, the code above does no longer compile. Instead, it must be written like this:

      json j = \"Hello, world!\";\nauto s = j.template get<std::string>();\n
      "},{"location":"api/macros/json_use_implicit_conversions/#see-also","title":"See also","text":"
      • operator ValueType - get a value (implicit)
      • get - get a value (explicit)
      "},{"location":"api/macros/json_use_implicit_conversions/#version-history","title":"Version history","text":"
      • Added in version 3.9.0.
      "},{"location":"api/macros/json_use_legacy_discarded_value_comparison/","title":"JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON","text":"
      #define JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON /* value */\n

      This macro enables the (incorrect) legacy comparison behavior of discarded JSON values. Possible values are 1 to enable or 0 to disable (default).

      When enabled, comparisons involving at least one discarded JSON value yield results as follows:

      Operator Result == false != true < false <= true >= true > false

      Otherwise, comparisons involving at least one discarded JSON value always yield false.

      "},{"location":"api/macros/json_use_legacy_discarded_value_comparison/#default-definition","title":"Default definition","text":"

      The default value is 0.

      #define JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON 0\n

      When the macro is not defined, the library will define it to its default value.

      "},{"location":"api/macros/json_use_legacy_discarded_value_comparison/#notes","title":"Notes","text":"

      Inconsistent behavior in C++20 and beyond

      When targeting C++20 or above, enabling the legacy comparison behavior is strongly discouraged.

      • The 3-way comparison operator (<=>) will always give the correct result (std::partial_ordering::unordered) regardless of the value of JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON.
      • Overloads for the equality and relational operators emulate the legacy behavior.

      Code outside your control may use either 3-way comparison or the equality and relational operators, resulting in inconsistent and unpredictable behavior.

      See operator<=> for more information on 3-way comparison.

      Deprecation

      The legacy comparison behavior is deprecated and may be removed in a future major version release.

      New code should not depend on it and existing code should try to remove or rewrite expressions relying on it.

      CMake option

      Legacy comparison can also be controlled with the CMake option JSON_LegacyDiscardedValueComparison (OFF by default) which defines JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON accordingly.

      "},{"location":"api/macros/json_use_legacy_discarded_value_comparison/#examples","title":"Examples","text":"Example

      The code below switches on the legacy discarded value comparison behavior in the library.

      #define JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON 1\n#include <nlohmann/json.hpp>\n\n...\n
      "},{"location":"api/macros/json_use_legacy_discarded_value_comparison/#version-history","title":"Version history","text":"
      • Added in version 3.11.0.
      "},{"location":"api/macros/nlohmann_define_derived_type/","title":"NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE","text":"NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT
      #define NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE(type, base_type, member...)                  // (1)\n#define NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT(type, base_type, member...)     // (2)\n\n#define NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE(type, base_type, member...)              // (3)\n#define NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT(type, base_type, member...) // (4)\n

      These macros can be used to simplify the serialization/deserialization of derived types if you want to use a JSON object as serialization and want to use the member variable names as object keys in that object.

      • Macros 1 and 2 are to be defined inside the class/struct to create code for. Like NLOHMANN_DEFINE_TYPE_INTRUSIVE, they can access private members.
      • Macros 3 and 4 are to be defined outside the class/struct to create code for, but inside its namespace. Like NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, they cannot access private members.

      The first parameter is the name of the derived class/struct, the second parameter is the name of the base class/struct and all remaining parameters name the members. The base type must be already serializable/deserializable.

      • Macros 1 and 3 will use at during deserialization and will throw out_of_range.403 if a key is missing in the JSON object.
      • Macros 2 and 4 will use value during deserialization and fall back to the default value for the respective type of the member variable if a key in the JSON object is missing. The generated from_json() function default constructs an object and uses its values as the defaults when calling the value function.
      "},{"location":"api/macros/nlohmann_define_derived_type/#parameters","title":"Parameters","text":"type (in) name of the type (class, struct) to serialize/deserialize base_type (in) name of the base type (class, struct) type is derived from member (in) name of the member variable to serialize/deserialize; up to 64 members can be given as comma-separated list"},{"location":"api/macros/nlohmann_define_derived_type/#default-definition","title":"Default definition","text":"

      Macros 1 and 2 add two friend functions to the class which take care of the serialization and deserialization:

      friend void to_json(nlohmann::json&, const type&);\nfriend void from_json(const nlohmann::json&, type&);\n

      Macros 3 and 4 add two functions to the namespace which take care of the serialization and deserialization:

      void to_json(nlohmann::json&, const type&);\nvoid from_json(const nlohmann::json&, type&);\n

      In both cases they call the to_json/from_json functions of the base type before serializing/deserializing the members of the derived type:

      class A { /* ... */ };\nclass B : public A { /* ... */ };\n\nvoid to_json(nlohmann::json& j, const B& b) {\n    nlohmann::to_json(j, static_cast<const A&>(b));\n    // ...\n}\n\nvoid from_json(const nlohmann::json& j, B& b) {\n    nlohmann::from_json(j, static_cast<A&>(b));\n    // ...\n}\n
      "},{"location":"api/macros/nlohmann_define_derived_type/#notes","title":"Notes","text":"

      Prerequisites

      • Macros 1 and 2 have the same prerequisites of NLOHMANN_DEFINE_TYPE_INTRUSIVE.
      • Macros 3 and 3 have the same prerequisites of NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE.
      • Serialization/deserialization of base types must be defined.

      Implementation limits

      • See Implementation limits for NLOHMANN_DEFINE_TYPE_INTRUSIVE and NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE.
      "},{"location":"api/macros/nlohmann_define_derived_type/#examples","title":"Examples","text":"

      Example of NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE usage:

      class A {\n  double Aa;\n  double Ab;\n  NLOHMANN_DEFINE_TYPE_INTRUSIVE(A, Aa, Ab)\n};\n\nclass B : public A {\n  int Ba;\n  int Bb;\n  NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE(B, A, Ba, Bb)\n};\n
      "},{"location":"api/macros/nlohmann_define_derived_type/#see-also","title":"See also","text":"
      • NLOHMANN_DEFINE_TYPE_INTRUSIVE / NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT for similar macros that can be defined inside a non-derived type.
      • NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE / NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT for a similar macros that can be defined outside a non-derived type.
      • Arbitrary Type Conversions for an overview.
      "},{"location":"api/macros/nlohmann_define_derived_type/#version-history","title":"Version history","text":"
      1. Added in version 3.11.x.
      "},{"location":"api/macros/nlohmann_define_type_intrusive/","title":"NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE","text":"
      #define NLOHMANN_DEFINE_TYPE_INTRUSIVE(type, member...)              // (1)\n#define NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT(type, member...) // (2)\n#define NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE(type, member...) // (3)\n

      These macros can be used to simplify the serialization/deserialization of types if you want to use a JSON object as serialization and want to use the member variable names as object keys in that object. The macro is to be defined inside the class/struct to create code for. Unlike NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, it can access private members. The first parameter is the name of the class/struct, and all remaining parameters name the members.

      1. Will use at during deserialization and will throw out_of_range.403 if a key is missing in the JSON object.
      2. Will use value during deserialization and fall back to the default value for the respective type of the member variable if a key in the JSON object is missing. The generated from_json() function default constructs an object and uses its values as the defaults when calling the value function.
      3. Only defines the serialization. Useful in cases when the type does not have a default constructor and only serialization in required.
      "},{"location":"api/macros/nlohmann_define_type_intrusive/#parameters","title":"Parameters","text":"type (in) name of the type (class, struct) to serialize/deserialize member (in) name of the member variable to serialize/deserialize; up to 64 members can be given as comma-separated list"},{"location":"api/macros/nlohmann_define_type_intrusive/#default-definition","title":"Default definition","text":"

      The macros add two friend functions to the class which take care of the serialization and deserialization:

      friend void to_json(nlohmann::json&, const type&);\nfriend void from_json(const nlohmann::json&, type&); // except (3)\n

      See examples below for the concrete generated code.

      "},{"location":"api/macros/nlohmann_define_type_intrusive/#notes","title":"Notes","text":"

      Prerequisites

      1. The type type must be default constructible (except (3)). See How can I use get() for non-default constructible/non-copyable types? for how to overcome this limitation.
      2. The macro must be used inside the type (class/struct).

      Implementation limits

      • The current implementation is limited to at most 64 member variables. If you want to serialize/deserialize types with more than 64 member variables, you need to define the to_json/from_json functions manually.
      • The macros only work for the nlohmann::json type; other specializations such as nlohmann::ordered_json are currently unsupported.
      "},{"location":"api/macros/nlohmann_define_type_intrusive/#examples","title":"Examples","text":"Example (1): NLOHMANN_DEFINE_TYPE_INTRUSIVE

      Consider the following complete example:

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nclass person\n{\n  private:\n    std::string name = \"John Doe\";\n    std::string address = \"123 Fake St\";\n    int age = -1;\n\n  public:\n    person() = default;\n    person(std::string name_, std::string address_, int age_)\n        : name(std::move(name_)), address(std::move(address_)), age(age_)\n    {}\n\n    NLOHMANN_DEFINE_TYPE_INTRUSIVE(person, name, address, age)\n};\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -> json\n    json j = p;\n    std::cout << \"serialization: \" << j << std::endl;\n\n    // deserialization: json -> person\n    json j2 = R\"({\"address\": \"742 Evergreen Terrace\", \"age\": 40, \"name\": \"Homer Simpson\"})\"_json;\n    auto p2 = j2.template get<ns::person>();\n\n    // incomplete deserialization:\n    json j3 = R\"({\"address\": \"742 Evergreen Terrace\", \"name\": \"Maggie Simpson\"})\"_json;\n    try\n    {\n        auto p3 = j3.template get<ns::person>();\n    }\n    catch (const json::exception& e)\n    {\n        std::cout << \"deserialization failed: \" << e.what() << std::endl;\n    }\n}\n

      Output:

      serialization: {\"address\":\"744 Evergreen Terrace\",\"age\":60,\"name\":\"Ned Flanders\"}\ndeserialization failed: [json.exception.out_of_range.403] key 'age' not found\n

      Notes:

      • ns::person is default-constructible. This is a requirement for using the macro.
      • ns::person has private member variables. This makes NLOHMANN_DEFINE_TYPE_INTRUSIVE applicable, but not NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE.
      • The macro NLOHMANN_DEFINE_TYPE_INTRUSIVE is used inside the class.
      • A missing key \"age\" in the deserialization yields an exception. To fall back to the default value, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT can be used.

      The macro is equivalent to:

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nclass person\n{\n  private:\n    std::string name = \"John Doe\";\n    std::string address = \"123 Fake St\";\n    int age = -1;\n\n  public:\n    person() = default;\n    person(std::string name_, std::string address_, int age_)\n        : name(std::move(name_)), address(std::move(address_)), age(age_)\n    {}\n\n    friend void to_json(nlohmann::json& nlohmann_json_j, const person& nlohmann_json_t)\n    {\n        nlohmann_json_j[\"name\"] = nlohmann_json_t.name;\n        nlohmann_json_j[\"address\"] = nlohmann_json_t.address;\n        nlohmann_json_j[\"age\"] = nlohmann_json_t.age;\n    }\n\n    friend void from_json(const nlohmann::json& nlohmann_json_j, person& nlohmann_json_t)\n    {\n        nlohmann_json_t.name = nlohmann_json_j.at(\"name\");\n        nlohmann_json_t.address = nlohmann_json_j.at(\"address\");\n        nlohmann_json_t.age = nlohmann_json_j.at(\"age\");\n    }\n};\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -> json\n    json j = p;\n    std::cout << \"serialization: \" << j << std::endl;\n\n    // deserialization: json -> person\n    json j2 = R\"({\"address\": \"742 Evergreen Terrace\", \"age\": 40, \"name\": \"Homer Simpson\"})\"_json;\n    auto p2 = j2.template get<ns::person>();\n\n    // incomplete deserialization:\n    json j3 = R\"({\"address\": \"742 Evergreen Terrace\", \"name\": \"Maggie Simpson\"})\"_json;\n    try\n    {\n        auto p3 = j3.template get<ns::person>();\n    }\n    catch (const json::exception& e)\n    {\n        std::cout << \"deserialization failed: \" << e.what() << std::endl;\n    }\n}\n
      Example (2): NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT

      Consider the following complete example:

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nclass person\n{\n  private:\n    std::string name = \"John Doe\";\n    std::string address = \"123 Fake St\";\n    int age = -1;\n\n  public:\n    person() = default;\n    person(std::string name_, std::string address_, int age_)\n        : name(std::move(name_)), address(std::move(address_)), age(age_)\n    {}\n\n    NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT(person, name, address, age)\n};\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -> json\n    json j = p;\n    std::cout << \"serialization: \" << j << std::endl;\n\n    // deserialization: json -> person\n    json j2 = R\"({\"address\": \"742 Evergreen Terrace\", \"age\": 40, \"name\": \"Homer Simpson\"})\"_json;\n    auto p2 = j2.template get<ns::person>();\n\n    // incomplete deserialization:\n    json j3 = R\"({\"address\": \"742 Evergreen Terrace\", \"name\": \"Maggie Simpson\"})\"_json;\n    auto p3 = j3.template get<ns::person>();\n    std::cout << \"roundtrip: \" << json(p3) << std::endl;\n}\n

      Output:

      serialization: {\"address\":\"744 Evergreen Terrace\",\"age\":60,\"name\":\"Ned Flanders\"}\nroundtrip: {\"address\":\"742 Evergreen Terrace\",\"age\":-1,\"name\":\"Maggie Simpson\"}\n

      Notes:

      • ns::person is default-constructible. This is a requirement for using the macro.
      • ns::person has private member variables. This makes NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT applicable, but not NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT.
      • The macro NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT is used inside the class.
      • A missing key \"age\" in the deserialization does not yield an exception. Instead, the default value -1 is used.

      The macro is equivalent to:

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nclass person\n{\n  private:\n    std::string name = \"John Doe\";\n    std::string address = \"123 Fake St\";\n    int age = -1;\n\n  public:\n    person() = default;\n    person(std::string name_, std::string address_, int age_)\n        : name(std::move(name_)), address(std::move(address_)), age(age_)\n    {}\n\n    friend void to_json(nlohmann::json& nlohmann_json_j, const person& nlohmann_json_t)\n    {\n        nlohmann_json_j[\"name\"] = nlohmann_json_t.name;\n        nlohmann_json_j[\"address\"] = nlohmann_json_t.address;\n        nlohmann_json_j[\"age\"] = nlohmann_json_t.age;\n    }\n\n    friend void from_json(const nlohmann::json& nlohmann_json_j, person& nlohmann_json_t)\n    {\n        person nlohmann_json_default_obj;\n        nlohmann_json_t.name = nlohmann_json_j.value(\"name\", nlohmann_json_default_obj.name);\n        nlohmann_json_t.address = nlohmann_json_j.value(\"address\", nlohmann_json_default_obj.address);\n        nlohmann_json_t.age = nlohmann_json_j.value(\"age\", nlohmann_json_default_obj.age);\n    }\n};\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -> json\n    json j = p;\n    std::cout << \"serialization: \" << j << std::endl;\n\n    // deserialization: json -> person\n    json j2 = R\"({\"address\": \"742 Evergreen Terrace\", \"age\": 40, \"name\": \"Homer Simpson\"})\"_json;\n    auto p2 = j2.template get<ns::person>();\n\n    // incomplete deserialization:\n    json j3 = R\"({\"address\": \"742 Evergreen Terrace\", \"name\": \"Maggie Simpson\"})\"_json;\n    auto p3 = j3.template get<ns::person>();\n    std::cout << \"roundtrip: \" << json(p3) << std::endl;\n}\n

      Note how a default-initialized person object is used in the from_json to fill missing values.

      Example (3): NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE

      Consider the following complete example:

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nclass person\n{\n  private:\n    std::string name = \"John Doe\";\n    std::string address = \"123 Fake St\";\n    int age = -1;\n\n  public:\n    // No default constructor\n    person(std::string name_, std::string address_, int age_)\n        : name(std::move(name_)), address(std::move(address_)), age(age_)\n    {}\n\n    NLOHMANN_DEFINE_TYPE_INTRUSIVE(person, name, address, age)\n};\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -> json\n    json j = p;\n    std::cout << \"serialization: \" << j << std::endl;\n}\n

      Output:

      serialization: {\"address\":\"744 Evergreen Terrace\",\"age\":60,\"name\":\"Ned Flanders\"}\n

      Notes:

      • ns::person is non-default-constructible. This allows this macro to be used instead of NLOHMANN_DEFINE_TYPE_INTRUSIVE and NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT.
      • ns::person has private member variables. This makes NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE applicable, but not NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE.
      • The macro NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE is used inside the class.

      The macro is equivalent to:

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nclass person\n{\n  private:\n    std::string name = \"John Doe\";\n    std::string address = \"123 Fake St\";\n    int age = -1;\n\n  public:\n    // No default constructor\n    person(std::string name_, std::string address_, int age_)\n        : name(std::move(name_)), address(std::move(address_)), age(age_)\n    {}\n\n    friend void to_json(nlohmann::json& nlohmann_json_j, const person& nlohmann_json_t)\n    {\n        nlohmann_json_j[\"name\"] = nlohmann_json_t.name;\n        nlohmann_json_j[\"address\"] = nlohmann_json_t.address;\n        nlohmann_json_j[\"age\"] = nlohmann_json_t.age;\n    }\n};\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -> json\n    json j = p;\n    std::cout << \"serialization: \" << j << std::endl;\n}\n
      "},{"location":"api/macros/nlohmann_define_type_intrusive/#see-also","title":"See also","text":"
      • NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE{_WITH_DEFAULT, _ONLY_SERIALIZE} for a similar macro that can be defined outside the type.
      • Arbitrary Type Conversions for an overview.
      "},{"location":"api/macros/nlohmann_define_type_intrusive/#version-history","title":"Version history","text":"
      1. Added in version 3.9.0.
      2. Added in version 3.11.0.
      3. Added in version TODO.
      "},{"location":"api/macros/nlohmann_define_type_non_intrusive/","title":"NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE","text":"
      #define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(type, member...)              // (1)\n#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT(type, member...) // (2)\n#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE(type, member...) // (3)\n

      These macros can be used to simplify the serialization/deserialization of types if you want to use a JSON object as serialization and want to use the member variable names as object keys in that object. The macro is to be defined outside the class/struct to create code for, but inside its namespace. Unlike NLOHMANN_DEFINE_TYPE_INTRUSIVE, it cannot access private members. The first parameter is the name of the class/struct, and all remaining parameters name the members.

      1. Will use at during deserialization and will throw out_of_range.403 if a key is missing in the JSON object.
      2. Will use value during deserialization and fall back to the default value for the respective type of the member variable if a key in the JSON object is missing. The generated from_json() function default constructs an object and uses its values as the defaults when calling the value function.
      3. Only defines the serialization. Useful in cases when the type does not have a default constructor and only serialization in required.
      "},{"location":"api/macros/nlohmann_define_type_non_intrusive/#parameters","title":"Parameters","text":"type (in) name of the type (class, struct) to serialize/deserialize member (in) name of the (public) member variable to serialize/deserialize; up to 64 members can be given as comma-separated list"},{"location":"api/macros/nlohmann_define_type_non_intrusive/#default-definition","title":"Default definition","text":"

      The macros add two functions to the namespace which take care of the serialization and deserialization:

      void to_json(nlohmann::json&, const type&);\nvoid from_json(const nlohmann::json&, type&); // except (3)\n

      See examples below for the concrete generated code.

      "},{"location":"api/macros/nlohmann_define_type_non_intrusive/#notes","title":"Notes","text":"

      Prerequisites

      1. The type type must be default constructible (except (3). See How can I use get() for non-default constructible/non-copyable types? for how to overcome this limitation.
      2. The macro must be used outside the type (class/struct).
      3. The passed members must be public.

      Implementation limits

      • The current implementation is limited to at most 64 member variables. If you want to serialize/deserialize types with more than 64 member variables, you need to define the to_json/from_json functions manually.
      • The macros only work for the nlohmann::json type; other specializations such as nlohmann::ordered_json are currently unsupported.
      "},{"location":"api/macros/nlohmann_define_type_non_intrusive/#examples","title":"Examples","text":"Example (1): NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE

      Consider the following complete example:

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nstruct person\n{\n    std::string name;\n    std::string address;\n    int age;\n};\n\nNLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(person, name, address, age)\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -> json\n    json j = p;\n    std::cout << \"serialization: \" << j << std::endl;\n\n    // deserialization: json -> person\n    json j2 = R\"({\"address\": \"742 Evergreen Terrace\", \"age\": 40, \"name\": \"Homer Simpson\"})\"_json;\n    auto p2 = j2.template get<ns::person>();\n\n    // incomplete deserialization:\n    json j3 = R\"({\"address\": \"742 Evergreen Terrace\", \"name\": \"Maggie Simpson\"})\"_json;\n    try\n    {\n        auto p3 = j3.template get<ns::person>();\n    }\n    catch (const json::exception& e)\n    {\n        std::cout << \"deserialization failed: \" << e.what() << std::endl;\n    }\n}\n

      Output:

      serialization: {\"address\":\"744 Evergreen Terrace\",\"age\":60,\"name\":\"Ned Flanders\"}\ndeserialization failed: [json.exception.out_of_range.403] key 'age' not found\n

      Notes:

      • ns::person is default-constructible. This is a requirement for using the macro.
      • ns::person has only public member variables. This makes NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE applicable.
      • The macro NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE is used outside the class, but inside its namespace ns.
      • A missing key \"age\" in the deserialization yields an exception. To fall back to the default value, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT can be used.

      The macro is equivalent to:

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nstruct person\n{\n    std::string name;\n    std::string address;\n    int age;\n};\n\nvoid to_json(nlohmann::json& nlohmann_json_j, const person& nlohmann_json_t)\n{\n    nlohmann_json_j[\"name\"] = nlohmann_json_t.name;\n    nlohmann_json_j[\"address\"] = nlohmann_json_t.address;\n    nlohmann_json_j[\"age\"] = nlohmann_json_t.age;\n}\n\nvoid from_json(const nlohmann::json& nlohmann_json_j, person& nlohmann_json_t)\n{\n    nlohmann_json_t.name = nlohmann_json_j.at(\"name\");\n    nlohmann_json_t.address = nlohmann_json_j.at(\"address\");\n    nlohmann_json_t.age = nlohmann_json_j.at(\"age\");\n}\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -> json\n    json j = p;\n    std::cout << \"serialization: \" << j << std::endl;\n\n    // deserialization: json -> person\n    json j2 = R\"({\"address\": \"742 Evergreen Terrace\", \"age\": 40, \"name\": \"Homer Simpson\"})\"_json;\n    auto p2 = j2.template get<ns::person>();\n\n    // incomplete deserialization:\n    json j3 = R\"({\"address\": \"742 Evergreen Terrace\", \"name\": \"Maggie Simpson\"})\"_json;\n    try\n    {\n        auto p3 = j3.template get<ns::person>();\n    }\n    catch (const json::exception& e)\n    {\n        std::cout << \"deserialization failed: \" << e.what() << std::endl;\n    }\n}\n
      Example (2): NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT

      Consider the following complete example:

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nstruct person\n{\n    std::string name = \"John Doe\";\n    std::string address = \"123 Fake St\";\n    int age = -1;\n\n    person() = default;\n    person(std::string name_, std::string address_, int age_)\n        : name(std::move(name_)), address(std::move(address_)), age(age_)\n    {}\n};\n\nNLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT(person, name, address, age)\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -> json\n    json j = p;\n    std::cout << \"serialization: \" << j << std::endl;\n\n    // deserialization: json -> person\n    json j2 = R\"({\"address\": \"742 Evergreen Terrace\", \"age\": 40, \"name\": \"Homer Simpson\"})\"_json;\n    auto p2 = j2.template get<ns::person>();\n\n    // incomplete deserialization:\n    json j3 = R\"({\"address\": \"742 Evergreen Terrace\", \"name\": \"Maggie Simpson\"})\"_json;\n    auto p3 = j3.template get<ns::person>();\n    std::cout << \"roundtrip: \" << json(p3) << std::endl;\n}\n

      Output:

      serialization: {\"address\":\"744 Evergreen Terrace\",\"age\":60,\"name\":\"Ned Flanders\"}\nroundtrip: {\"address\":\"742 Evergreen Terrace\",\"age\":-1,\"name\":\"Maggie Simpson\"}\n

      Notes:

      • ns::person is default-constructible. This is a requirement for using the macro.
      • ns::person has only public member variables. This makes NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT applicable.
      • The macro NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT is used outside the class, but inside its namespace ns.
      • A missing key \"age\" in the deserialization does not yield an exception. Instead, the default value -1 is used.

      The macro is equivalent to:

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nstruct person\n{\n    std::string name = \"John Doe\";\n    std::string address = \"123 Fake St\";\n    int age = -1;\n\n    person() = default;\n    person(std::string name_, std::string address_, int age_)\n        : name(std::move(name_)), address(std::move(address_)), age(age_)\n    {}\n};\n\nvoid to_json(nlohmann::json& nlohmann_json_j, const person& nlohmann_json_t)\n{\n    nlohmann_json_j[\"name\"] = nlohmann_json_t.name;\n    nlohmann_json_j[\"address\"] = nlohmann_json_t.address;\n    nlohmann_json_j[\"age\"] = nlohmann_json_t.age;\n}\n\nvoid from_json(const nlohmann::json& nlohmann_json_j, person& nlohmann_json_t)\n{\n    person nlohmann_json_default_obj;\n    nlohmann_json_t.name = nlohmann_json_j.value(\"name\", nlohmann_json_default_obj.name);\n    nlohmann_json_t.address = nlohmann_json_j.value(\"address\", nlohmann_json_default_obj.address);\n    nlohmann_json_t.age = nlohmann_json_j.value(\"age\", nlohmann_json_default_obj.age);\n}\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -> json\n    json j = p;\n    std::cout << \"serialization: \" << j << std::endl;\n\n    // deserialization: json -> person\n    json j2 = R\"({\"address\": \"742 Evergreen Terrace\", \"age\": 40, \"name\": \"Homer Simpson\"})\"_json;\n    auto p2 = j2.template get<ns::person>();\n\n    // incomplete deserialization:\n    json j3 = R\"({\"address\": \"742 Evergreen Terrace\", \"name\": \"Maggie Simpson\"})\"_json;\n    auto p3 = j3.template get<ns::person>();\n    std::cout << \"roundtrip: \" << json(p3) << std::endl;\n}\n

      Note how a default-initialized person object is used in the from_json to fill missing values.

      Example (3): NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE

      Consider the following complete example:

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nstruct person\n{\n    std::string name;\n    std::string address;\n    int age;\n};\n\nNLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE(person, name, address, age)\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -> json\n    json j = p;\n    std::cout << \"serialization: \" << j << std::endl;\n}\n

      Output:

      serialization: {\"address\":\"744 Evergreen Terrace\",\"age\":60,\"name\":\"Ned Flanders\"}\n

      Notes:

      • ns::person is non-default-constructible. This allows this macro to be used instead of NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE and NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT.
      • ns::person has only public member variables. This makes NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE applicable.
      • The macro NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE is used outside the class, but inside its namespace ns.

      The macro is equivalent to:

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nstruct person\n{\n    std::string name;\n    std::string address;\n    int age;\n};\n\nvoid to_json(nlohmann::json& nlohmann_json_j, const person& nlohmann_json_t)\n{\n    nlohmann_json_j[\"name\"] = nlohmann_json_t.name;\n    nlohmann_json_j[\"address\"] = nlohmann_json_t.address;\n    nlohmann_json_j[\"age\"] = nlohmann_json_t.age;\n}\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -> json\n    json j = p;\n    std::cout << \"serialization: \" << j << std::endl;\n}\n
      "},{"location":"api/macros/nlohmann_define_type_non_intrusive/#see-also","title":"See also","text":"
      • NLOHMANN_DEFINE_TYPE_INTRUSIVE{_WITH_DEFAULT, _ONLY_SERIALIZE} for a similar macro that can be defined inside the type.
      • Arbitrary Type Conversions for an overview.
      "},{"location":"api/macros/nlohmann_define_type_non_intrusive/#version-history","title":"Version history","text":"
      1. Added in version 3.9.0.
      2. Added in version 3.11.0.
      3. Added in version TODO.
      "},{"location":"api/macros/nlohmann_json_namespace/","title":"NLOHMANN_JSON_NAMESPACE","text":"
      #define NLOHMANN_JSON_NAMESPACE /* value */\n

      This macro evaluates to the full name of the nlohmann namespace.

      "},{"location":"api/macros/nlohmann_json_namespace/#default-definition","title":"Default definition","text":"

      The default value consists of the root namespace (nlohmann) and an inline ABI namespace. See nlohmann Namespace for details.

      When the macro is not defined, the library will define it to its default value. Overriding this value has no effect on the library.

      "},{"location":"api/macros/nlohmann_json_namespace/#examples","title":"Examples","text":"Example

      The example shows how to use NLOHMANN_JSON_NAMESPACE instead of just nlohmann, as well as how to output the value of NLOHMANN_JSON_NAMESPACE.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\n// possible use case: use NLOHMANN_JSON_NAMESPACE instead of nlohmann\nusing json = NLOHMANN_JSON_NAMESPACE::json;\n\n// macro needed to output the NLOHMANN_JSON_NAMESPACE as string literal\n#define Q(x) #x\n#define QUOTE(x) Q(x)\n\nint main()\n{\n    std::cout << QUOTE(NLOHMANN_JSON_NAMESPACE) << std::endl;\n}\n

      Output:

      nlohmann::json_abi_v3_11_3\n
      "},{"location":"api/macros/nlohmann_json_namespace/#see-also","title":"See also","text":"
      • NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END
      • NLOHMANN_JSON_NAMESPACE_NO_VERSION
      "},{"location":"api/macros/nlohmann_json_namespace/#version-history","title":"Version history","text":"
      • Added in version 3.11.0. Changed inline namespace name in version 3.11.2.
      "},{"location":"api/macros/nlohmann_json_namespace_begin/","title":"NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END","text":"
      #define NLOHMANN_JSON_NAMESPACE_BEGIN /* value */  // (1)\n#define NLOHMANN_JSON_NAMESPACE_END   /* value */  // (2)\n

      These macros can be used to open and close the nlohmann namespace. See nlohmann Namespace for details.

      1. Opens the namespace.
      2. Closes the namespace.
      "},{"location":"api/macros/nlohmann_json_namespace_begin/#default-definition","title":"Default definition","text":"

      The default definitions open and close the nlohmann namespace. The precise definition of [NLOHMANN_JSON_NAMESPACE_BEGIN] varies as described here.

      1. Default definition of NLOHMANN_JSON_NAMESPACE_BEGIN:

        namespace nlohmann\n{\ninline namespace json_abi_v3_11_2\n{\n
      2. Default definition of NLOHMANN_JSON_NAMESPACE_END:

        }  // namespace json_abi_v3_11_2\n}  // namespace nlohmann\n

      When these macros are not defined, the library will define them to their default definitions.

      "},{"location":"api/macros/nlohmann_json_namespace_begin/#examples","title":"Examples","text":"Example

      The example shows how to use NLOHMANN_JSON_NAMESPACE_BEGIN/NLOHMANN_JSON_NAMESPACE_END from the How do I convert third-party types? page.

      #include <iostream>\n#include <optional>\n#include <nlohmann/json.hpp>\n\n// partial specialization (see https://json.nlohmann.me/features/arbitrary_types/)\nNLOHMANN_JSON_NAMESPACE_BEGIN\ntemplate <typename T>\nstruct adl_serializer<std::optional<T>>\n{\n    static void to_json(json& j, const std::optional<T>& opt)\n    {\n        if (opt == std::nullopt)\n        {\n            j = nullptr;\n        }\n        else\n        {\n            j = *opt;\n        }\n    }\n};\nNLOHMANN_JSON_NAMESPACE_END\n\nint main()\n{\n    std::optional<int> o1 = 1;\n    std::optional<int> o2 = std::nullopt;\n\n    NLOHMANN_JSON_NAMESPACE::json j;\n    j.push_back(o1);\n    j.push_back(o2);\n    std::cout << j << std::endl;\n}\n

      Output:

      [1,null]\n
      "},{"location":"api/macros/nlohmann_json_namespace_begin/#see-also","title":"See also","text":"
      • nlohmann Namespace
      • NLOHMANN_JSON_NAMESPACE
      • NLOHMANN_JSON_NAMESPACE_NO_VERSION
      "},{"location":"api/macros/nlohmann_json_namespace_begin/#version-history","title":"Version history","text":"
      • Added in version 3.11.0. Changed inline namespace name in version 3.11.2.
      "},{"location":"api/macros/nlohmann_json_namespace_no_version/","title":"NLOHMANN_JSON_NAMESPACE_NO_VERSION","text":"
      #define NLOHMANN_JSON_NAMESPACE_NO_VERSION /* value */\n

      If defined to 1, the version component is omitted from the inline namespace. See nlohmann Namespace for details.

      "},{"location":"api/macros/nlohmann_json_namespace_no_version/#default-definition","title":"Default definition","text":"

      The default value is 0.

      #define NLOHMANN_JSON_NAMESPACE_NO_VERSION 0\n

      When the macro is not defined, the library will define it to its default value.

      "},{"location":"api/macros/nlohmann_json_namespace_no_version/#examples","title":"Examples","text":"Example

      The example shows how to use NLOHMANN_JSON_NAMESPACE_NO_VERSION to disable the version component of the inline namespace.

      #include <iostream>\n\n#define NLOHMANN_JSON_NAMESPACE_NO_VERSION 1\n#include <nlohmann/json.hpp>\n\n// macro needed to output the NLOHMANN_JSON_NAMESPACE as string literal\n#define Q(x) #x\n#define QUOTE(x) Q(x)\n\nint main()\n{\n    std::cout << QUOTE(NLOHMANN_JSON_NAMESPACE) << std::endl;\n}\n

      Output:

      nlohmann::json_abi\n
      "},{"location":"api/macros/nlohmann_json_namespace_no_version/#see-also","title":"See also","text":"
      • nlohmann Namespace
      • NLOHMANN_JSON_NAMESPACE
      • NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END
      "},{"location":"api/macros/nlohmann_json_namespace_no_version/#version-history","title":"Version history","text":"
      • Added in version 3.11.2.
      "},{"location":"api/macros/nlohmann_json_serialize_enum/","title":"NLOHMANN_JSON_SERIALIZE_ENUM","text":"
      #define NLOHMANN_JSON_SERIALIZE_ENUM(type, conversion...)\n

      By default, enum values are serialized to JSON as integers. In some cases this could result in undesired behavior. If an enum is modified or re-ordered after data has been serialized to JSON, the later de-serialized JSON data may be undefined or a different enum value than was originally intended.

      The NLOHMANN_JSON_SERIALIZE_ENUM allows to define a user-defined serialization for every enumerator.

      "},{"location":"api/macros/nlohmann_json_serialize_enum/#parameters","title":"Parameters","text":"type (in) name of the enum to serialize/deserialize conversion (in) a pair of an enumerator and a JSON serialization; arbitrary pairs can be given as a comma-separated list"},{"location":"api/macros/nlohmann_json_serialize_enum/#default-definition","title":"Default definition","text":"

      The macros add two friend functions to the class which take care of the serialization and deserialization:

      template<typename BasicJsonType>\ninline void to_json(BasicJsonType& j, const type& e);\ntemplate<typename BasicJsonType>\ninline void from_json(const BasicJsonType& j, type& e);\n
      "},{"location":"api/macros/nlohmann_json_serialize_enum/#notes","title":"Notes","text":"

      Prerequisites

      The macro must be used inside the namespace of the enum.

      Important notes

      • When using template get<ENUM_TYPE>(), undefined JSON values will default to the first specified conversion. Select this default pair carefully. See example 1 below.
      • If an enum or JSON value is specified in multiple conversions, the first matching conversion from the top of the list will be returned when converting to or from JSON. See example 2 below.
      "},{"location":"api/macros/nlohmann_json_serialize_enum/#examples","title":"Examples","text":"Example 1: Basic usage

      The example shows how NLOHMANN_JSON_SERIALIZE_ENUM can be used to serialize/deserialize both classical enums and C++11 enum classes:

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nnamespace ns\n{\nenum TaskState\n{\n    TS_STOPPED,\n    TS_RUNNING,\n    TS_COMPLETED,\n    TS_INVALID = -1\n};\n\nNLOHMANN_JSON_SERIALIZE_ENUM(TaskState,\n{\n    { TS_INVALID, nullptr },\n    { TS_STOPPED, \"stopped\" },\n    { TS_RUNNING, \"running\" },\n    { TS_COMPLETED, \"completed\" }\n})\n\nenum class Color\n{\n    red, green, blue, unknown\n};\n\nNLOHMANN_JSON_SERIALIZE_ENUM(Color,\n{\n    { Color::unknown, \"unknown\" }, { Color::red, \"red\" },\n    { Color::green, \"green\" }, { Color::blue, \"blue\" }\n})\n} // namespace ns\n\nint main()\n{\n    // serialization\n    json j_stopped = ns::TS_STOPPED;\n    json j_red = ns::Color::red;\n    std::cout << \"ns::TS_STOPPED -> \" << j_stopped\n              << \", ns::Color::red -> \" << j_red << std::endl;\n\n    // deserialization\n    json j_running = \"running\";\n    json j_blue = \"blue\";\n    auto running = j_running.template get<ns::TaskState>();\n    auto blue = j_blue.template get<ns::Color>();\n    std::cout << j_running << \" -> \" << running\n              << \", \" << j_blue << \" -> \" << static_cast<int>(blue) << std::endl;\n\n    // deserializing undefined JSON value to enum\n    // (where the first map entry above is the default)\n    json j_pi = 3.14;\n    auto invalid = j_pi.template get<ns::TaskState>();\n    auto unknown = j_pi.template get<ns::Color>();\n    std::cout << j_pi << \" -> \" << invalid << \", \"\n              << j_pi << \" -> \" << static_cast<int>(unknown) << std::endl;\n}\n

      Output:

      ns::TS_STOPPED -> \"stopped\", ns::Color::red -> \"red\"\n\"running\" -> 1, \"blue\" -> 2\n3.14 -> -1, 3.14 -> 3\n
      Example 2: Multiple conversions for one enumerator

      The example shows how to use multiple conversions for a single enumerator. In the example, Color::red will always be serialized to \"red\", because the first occurring conversion. The second conversion, however, offers an alternative deserialization from \"rot\" to Color::red.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nnamespace ns\n{\nenum class Color\n{\n    red, green, blue, unknown\n};\n\nNLOHMANN_JSON_SERIALIZE_ENUM(Color,\n{\n    { Color::unknown, \"unknown\" }, { Color::red, \"red\" },\n    { Color::green, \"green\" }, { Color::blue, \"blue\" },\n    { Color::red, \"rot\" } // a second conversion for Color::red\n})\n}\n\nint main()\n{\n    // serialization\n    json j_red = ns::Color::red;\n    std::cout << static_cast<int>(ns::Color::red) << \" -> \" << j_red << std::endl;\n\n    // deserialization\n    json j_rot = \"rot\";\n    auto rot = j_rot.template get<ns::Color>();\n    auto red = j_red.template get<ns::Color>();\n    std::cout << j_rot << \" -> \" << static_cast<int>(rot) << std::endl;\n    std::cout << j_red << \" -> \" << static_cast<int>(red) << std::endl;\n}\n

      Output:

      0 -> \"red\"\n\"rot\" -> 0\n\"red\" -> 0\n
      "},{"location":"api/macros/nlohmann_json_serialize_enum/#see-also","title":"See also","text":"
      • Specializing enum conversion
      • JSON_DISABLE_ENUM_SERIALIZATION
      "},{"location":"api/macros/nlohmann_json_serialize_enum/#version-history","title":"Version history","text":"

      Added in version 3.4.0.

      "},{"location":"api/macros/nlohmann_json_version_major/","title":"NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH","text":"
      #define NLOHMANN_JSON_VERSION_MAJOR /* value */\n#define NLOHMANN_JSON_VERSION_MINOR /* value */\n#define NLOHMANN_JSON_VERSION_PATCH /* value */\n

      These macros are defined by the library and contain the version numbers according to Semantic Versioning 2.0.0.

      "},{"location":"api/macros/nlohmann_json_version_major/#default-definition","title":"Default definition","text":"

      The macros are defined according to the current library version.

      "},{"location":"api/macros/nlohmann_json_version_major/#examples","title":"Examples","text":"Example

      The example below shows how NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, and NLOHMANN_JSON_VERSION_PATCH are defined by the library.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout << \"JSON for Modern C++ version \"\n              << NLOHMANN_JSON_VERSION_MAJOR << \".\"\n              << NLOHMANN_JSON_VERSION_MINOR << \".\"\n              << NLOHMANN_JSON_VERSION_PATCH << std::endl;\n}\n

      Output:

      JSON for Modern C++ version 3.11.3\n
      "},{"location":"api/macros/nlohmann_json_version_major/#see-also","title":"See also","text":"
      • meta - returns version information on the library
      • JSON_SKIP_LIBRARY_VERSION_CHECK - skip library version check
      "},{"location":"api/macros/nlohmann_json_version_major/#version-history","title":"Version history","text":"
      • Added in version 3.1.0.
      "},{"location":"features/arbitrary_types/","title":"Arbitrary Type Conversions","text":"

      Every type can be serialized in JSON, not just STL containers and scalar types. Usually, you would do something along those lines:

      namespace ns {\n    // a simple struct to model a person\n    struct person {\n        std::string name;\n        std::string address;\n        int age;\n    };\n} // namespace ns\n\nns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n// convert to JSON: copy each value into the JSON object\njson j;\nj[\"name\"] = p.name;\nj[\"address\"] = p.address;\nj[\"age\"] = p.age;\n\n// ...\n\n// convert from JSON: copy each value from the JSON object\nns::person p {\n    j[\"name\"].template get<std::string>(),\n    j[\"address\"].template get<std::string>(),\n    j[\"age\"].template get<int>()\n};\n

      It works, but that's quite a lot of boilerplate... Fortunately, there's a better way:

      // create a person\nns::person p {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n// conversion: person -> json\njson j = p;\n\nstd::cout << j << std::endl;\n// {\"address\":\"744 Evergreen Terrace\",\"age\":60,\"name\":\"Ned Flanders\"}\n\n// conversion: json -> person\nauto p2 = j.template get<ns::person>();\n\n// that's it\nassert(p == p2);\n
      "},{"location":"features/arbitrary_types/#basic-usage","title":"Basic usage","text":"

      To make this work with one of your types, you only need to provide two functions:

      using json = nlohmann::json;\n\nnamespace ns {\n    void to_json(json& j, const person& p) {\n        j = json{ {\"name\", p.name}, {\"address\", p.address}, {\"age\", p.age} };\n    }\n\n    void from_json(const json& j, person& p) {\n        j.at(\"name\").get_to(p.name);\n        j.at(\"address\").get_to(p.address);\n        j.at(\"age\").get_to(p.age);\n    }\n} // namespace ns\n

      That's all! When calling the json constructor with your type, your custom to_json method will be automatically called. Likewise, when calling template get<your_type>() or get_to(your_type&), the from_json method will be called.

      Some important things:

      • Those methods MUST be in your type's namespace (which can be the global namespace), or the library will not be able to locate them (in this example, they are in namespace ns, where person is defined).
      • Those methods MUST be available (e.g., proper headers must be included) everywhere you use these conversions. Look at #1108 for errors that may occur otherwise.
      • When using template get<your_type>(), your_type MUST be DefaultConstructible. (There is a way to bypass this requirement described later.)
      • In function from_json, use function at() to access the object values rather than operator[]. In case a key does not exist, at throws an exception that you can handle, whereas operator[] exhibits undefined behavior.
      • You do not need to add serializers or deserializers for STL types like std::vector: the library already implements these.
      "},{"location":"features/arbitrary_types/#simplify-your-life-with-macros","title":"Simplify your life with macros","text":"

      If you just want to serialize/deserialize some structs, the to_json/from_json functions can be a lot of boilerplate.

      There are four macros to make your life easier as long as you (1) want to use a JSON object as serialization and (2) want to use the member variable names as object keys in that object:

      • NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(name, member1, member2, ...) is to be defined inside the namespace of the class/struct to create code for. It will throw an exception in from_json() due to a missing value in the JSON object.
      • NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT(name, member1, member2, ...) is to be defined inside the namespace of the class/struct to create code for. It will not throw an exception in from_json() due to a missing value in the JSON object, but fills in values from object which is default-constructed by the type.
      • NLOHMANN_DEFINE_TYPE_INTRUSIVE(name, member1, member2, ...) is to be defined inside the class/struct to create code for. This macro can also access private members. It will throw an exception in from_json() due to a missing value in the JSON object.
      • NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT(name, member1, member2, ...) is to be defined inside the class/struct to create code for. This macro can also access private members. It will not throw an exception in from_json() due to a missing value in the JSON object, but fills in values from object which is default-constructed by the type.

      In all macros, the first parameter is the name of the class/struct, and all remaining parameters name the members. You can read more docs about them starting from here.

      Implementation limits

      • The current macro implementations are limited to at most 64 member variables. If you want to serialize/deserialize types with more than 64 member variables, you need to define the to_json/from_json functions manually.
      • The macros only work for the nlohmann::json type; other specializations such as nlohmann::ordered_json are currently unsupported.
      Example

      The to_json/from_json functions for the person struct above can be created with:

      namespace ns {\n    NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(person, name, address, age)\n}\n

      Here is an example with private members, where NLOHMANN_DEFINE_TYPE_INTRUSIVE is needed:

      namespace ns {\n    class address {\n      private:\n        std::string street;\n        int housenumber;\n        int postcode;\n\n      public:\n        NLOHMANN_DEFINE_TYPE_INTRUSIVE(address, street, housenumber, postcode)\n    };\n}\n
      "},{"location":"features/arbitrary_types/#how-do-i-convert-third-party-types","title":"How do I convert third-party types?","text":"

      This requires a bit more advanced technique. But first, let's see how this conversion mechanism works:

      The library uses JSON Serializers to convert types to json. The default serializer for nlohmann::json is nlohmann::adl_serializer (ADL means Argument-Dependent Lookup).

      It is implemented like this (simplified):

      template <typename T>\nstruct adl_serializer {\n    static void to_json(json& j, const T& value) {\n        // calls the \"to_json\" method in T's namespace\n    }\n\n    static void from_json(const json& j, T& value) {\n        // same thing, but with the \"from_json\" method\n    }\n};\n

      This serializer works fine when you have control over the type's namespace. However, what about boost::optional or std::filesystem::path (C++17)? Hijacking the boost namespace is pretty bad, and it's illegal to add something other than template specializations to std...

      To solve this, you need to add a specialization of adl_serializer to the nlohmann namespace, here's an example:

      // partial specialization (full specialization works too)\nNLOHMANN_JSON_NAMESPACE_BEGIN\ntemplate <typename T>\nstruct adl_serializer<boost::optional<T>> {\n    static void to_json(json& j, const boost::optional<T>& opt) {\n        if (opt == boost::none) {\n            j = nullptr;\n        } else {\n            j = *opt; // this will call adl_serializer<T>::to_json which will\n                      // find the free function to_json in T's namespace!\n        }\n    }\n\n    static void from_json(const json& j, boost::optional<T>& opt) {\n        if (j.is_null()) {\n            opt = boost::none;\n        } else {\n            opt = j.template get<T>(); // same as above, but with\n                              // adl_serializer<T>::from_json\n        }\n    }\n};\nNLOHMANN_JSON_NAMESPACE_END\n

      ABI compatibility

      Use NLOHMANN_JSON_NAMESPACE_BEGIN and NLOHMANN_JSON_NAMESPACE_END instead of namespace nlohmann { } in code which may be linked with different versions of this library.

      "},{"location":"features/arbitrary_types/#how-can-i-use-get-for-non-default-constructiblenon-copyable-types","title":"How can I use get() for non-default constructible/non-copyable types?","text":"

      There is a way, if your type is MoveConstructible. You will need to specialize the adl_serializer as well, but with a special from_json overload:

      struct move_only_type {\n    move_only_type() = delete;\n    move_only_type(int ii): i(ii) {}\n    move_only_type(const move_only_type&) = delete;\n    move_only_type(move_only_type&&) = default;\n\n    int i;\n};\n\nnamespace nlohmann {\n    template <>\n    struct adl_serializer<move_only_type> {\n        // note: the return type is no longer 'void', and the method only takes\n        // one argument\n        static move_only_type from_json(const json& j) {\n            return {j.template get<int>()};\n        }\n\n        // Here's the catch! You must provide a to_json method! Otherwise, you\n        // will not be able to convert move_only_type to json, since you fully\n        // specialized adl_serializer on that type\n        static void to_json(json& j, move_only_type t) {\n            j = t.i;\n        }\n    };\n}\n
      "},{"location":"features/arbitrary_types/#can-i-write-my-own-serializer-advanced-use","title":"Can I write my own serializer? (Advanced use)","text":"

      Yes. You might want to take a look at unit-udt.cpp in the test suite, to see a few examples.

      If you write your own serializer, you'll need to do a few things:

      • use a different basic_json alias than nlohmann::json (the last template parameter of basic_json is the JSONSerializer)
      • use your basic_json alias (or a template parameter) in all your to_json/from_json methods
      • use nlohmann::to_json and nlohmann::from_json when you need ADL

      Here is an example, without simplifications, that only accepts types with a size <= 32, and uses ADL.

      // You should use void as a second template argument\n// if you don't need compile-time checks on T\ntemplate<typename T, typename SFINAE = typename std::enable_if<sizeof(T) <= 32>::type>\nstruct less_than_32_serializer {\n    template <typename BasicJsonType>\n    static void to_json(BasicJsonType& j, T value) {\n        // we want to use ADL, and call the correct to_json overload\n        using nlohmann::to_json; // this method is called by adl_serializer,\n                                 // this is where the magic happens\n        to_json(j, value);\n    }\n\n    template <typename BasicJsonType>\n    static void from_json(const BasicJsonType& j, T& value) {\n        // same thing here\n        using nlohmann::from_json;\n        from_json(j, value);\n    }\n};\n

      Be very careful when reimplementing your serializer, you can stack overflow if you don't pay attention:

      template <typename T, void>\nstruct bad_serializer\n{\n    template <typename BasicJsonType>\n    static void to_json(BasicJsonType& j, const T& value) {\n      // this calls BasicJsonType::json_serializer<T>::to_json(j, value);\n      // if BasicJsonType::json_serializer == bad_serializer ... oops!\n      j = value;\n    }\n\n    template <typename BasicJsonType>\n    static void from_json(const BasicJsonType& j, T& value) {\n      // this calls BasicJsonType::json_serializer<T>::from_json(j, value);\n      // if BasicJsonType::json_serializer == bad_serializer ... oops!\n      value = j.template template get<T>(); // oops!\n    }\n};\n
      "},{"location":"features/assertions/","title":"Runtime Assertions","text":"

      The code contains numerous debug assertions to ensure class invariants are valid or to detect undefined behavior. Whereas the former class invariants are nothing to be concerned of, the latter checks for undefined behavior are to detect bugs in client code.

      "},{"location":"features/assertions/#switch-off-runtime-assertions","title":"Switch off runtime assertions","text":"

      Runtime assertions can be switched off by defining the preprocessor macro NDEBUG (see the documentation of assert) which is the default for release builds.

      "},{"location":"features/assertions/#change-assertion-behavior","title":"Change assertion behavior","text":"

      The behavior of runtime assertions can be changes by defining macro JSON_ASSERT(x) before including the json.hpp header.

      "},{"location":"features/assertions/#function-with-runtime-assertions","title":"Function with runtime assertions","text":""},{"location":"features/assertions/#unchecked-object-access-to-a-const-value","title":"Unchecked object access to a const value","text":"

      Function operator[] implements unchecked access for objects. Whereas a missing key is added in case of non-const objects, accessing a const object with a missing key is undefined behavior (think of a dereferenced null pointer) and yields a runtime assertion.

      If you are not sure whether an element in an object exists, use checked access with the at function or call the contains function before.

      See also the documentation on element access.

      Example 1: Missing object key

      The following code will trigger an assertion at runtime:

      #include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    const json j = {{\"key\", \"value\"}};\n    auto v = j[\"missing\"];\n}\n

      Output:

      Assertion failed: (m_value.object->find(key) != m_value.object->end()), function operator[], file json.hpp, line 2144.\n
      "},{"location":"features/assertions/#constructing-from-an-uninitialized-iterator-range","title":"Constructing from an uninitialized iterator range","text":"

      Constructing a JSON value from an iterator range (see constructor) with an uninitialized iterator is undefined behavior and yields a runtime assertion.

      Example 2: Uninitialized iterator range

      The following code will trigger an assertion at runtime:

      #include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    json::iterator it1, it2;\n    json j(it1, it2);\n}\n

      Output:

      Assertion failed: (m_object != nullptr), function operator++, file iter_impl.hpp, line 368.\n
      "},{"location":"features/assertions/#operations-on-uninitialized-iterators","title":"Operations on uninitialized iterators","text":"

      Any operation on uninitialized iterators (i.e., iterators that are not associated with any JSON value) is undefined behavior and yields a runtime assertion.

      Example 3: Uninitialized iterator

      The following code will trigger an assertion at runtime:

      #include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n  json::iterator it;\n  ++it;\n}\n

      Output:

      Assertion failed: (m_object != nullptr), function operator++, file iter_impl.hpp, line 368.\n
      "},{"location":"features/assertions/#changes","title":"Changes","text":""},{"location":"features/assertions/#reading-from-a-null-file-or-char-pointer","title":"Reading from a null FILE or char pointer","text":"

      Reading from a null FILE or char pointer in C++ is undefined behavior. Until version 3.11.4, this library asserted that the pointer was not nullptr using a runtime assertion. If assertions were disabled, this would result in undefined behavior. Since version 3.11.4, this library checks for nullptr and throws a parse_error.101 to prevent the undefined behavior.

      Example 4: Reading from null pointer

      The following code will trigger an assertion at runtime:

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::FILE* f = std::fopen(\"nonexistent_file.json\", \"r\");\n    try {\n        json j = json::parse(f);\n    } catch (std::exception& e) {\n        std::cerr << e.what() << std::endl;\n    }\n}\n

      Output:

      [json.exception.parse_error.101] parse error: attempting to parse an empty input; check that your input string or stream contains the expected JSON\n
      "},{"location":"features/binary_values/","title":"Binary Values","text":"

      The library implements several binary formats that encode JSON in an efficient way. Most of these formats support binary values; that is, values that have semantics define outside the library and only define a sequence of bytes to be stored.

      JSON itself does not have a binary value. As such, binary values are an extension that this library implements to store values received by a binary format. Binary values are never created by the JSON parser, and are only part of a serialized JSON text if they have been created manually or via a binary format.

      "},{"location":"features/binary_values/#api-for-binary-values","title":"API for binary values","text":"
      classDiagram\n\nclass binary_t [\"json::binary_t\"] {\n    +void set_subtype(std::uint64_t subtype)\n    +void clear_subtype()\n    +std::uint64_t subtype() const\n    +bool has_subtype() const\n}\n\nclass vector [\"std::vector<uint8_t>\"]\n\nvector <|-- binary_t

      By default, binary values are stored as std::vector<std::uint8_t>. This type can be changed by providing a template parameter to the basic_json type. To store binary subtypes, the storage type is extended and exposed as json::binary_t:

      auto binary = json::binary_t({0xCA, 0xFE, 0xBA, 0xBE});\nauto binary_with_subtype = json::binary_t({0xCA, 0xFE, 0xBA, 0xBE}, 42);\n

      There are several convenience functions to check and set the subtype:

      binary.has_subtype();                   // returns false\nbinary_with_subtype.has_subtype();      // returns true\n\nbinary_with_subtype.clear_subtype();\nbinary_with_subtype.has_subtype();      // returns true\n\nbinary_with_subtype.set_subtype(42);\nbinary.set_subtype(23);\n\nbinary.subtype();                       // returns 23\n

      As json::binary_t is subclassing std::vector<std::uint8_t>, all member functions are available:

      binary.size();  // returns 4\nbinary[1];      // returns 0xFE\n

      JSON values can be constructed from json::binary_t:

      json j = binary;\n

      Binary values are primitive values just like numbers or strings:

      j.is_binary();    // returns true\nj.is_primitive(); // returns true\n

      Given a binary JSON value, the binary_t can be accessed by reference as via get_binary():

      j.get_binary().has_subtype();  // returns true\nj.get_binary().size();         // returns 4\n

      For convenience, binary JSON values can be constructed via json::binary:

      auto j2 = json::binary({0xCA, 0xFE, 0xBA, 0xBE}, 23);\nauto j3 = json::binary({0xCA, 0xFE, 0xBA, 0xBE});\n\nj2 == j;                        // returns true\nj3.get_binary().has_subtype();  // returns false\nj3.get_binary().subtype();      // returns std::uint64_t(-1) as j3 has no subtype\n
      "},{"location":"features/binary_values/#serialization","title":"Serialization","text":"

      Binary values are serialized differently according to the formats.

      "},{"location":"features/binary_values/#json","title":"JSON","text":"

      JSON does not have a binary type, and this library does not introduce a new type as this would break conformance. Instead, binary values are serialized as an object with two keys: bytes holds an array of integers, and subtype is an integer or null.

      Example

      Code:

      // create a binary value of subtype 42\njson j;\nj[\"binary\"] = json::binary({0xCA, 0xFE, 0xBA, 0xBE}, 42);\n\n// serialize to standard output\nstd::cout << j.dump(2) << std::endl;\n

      Output:

      {\n  \"binary\": {\n    \"bytes\": [202, 254, 186, 190],\n    \"subtype\": 42\n  }\n}\n

      No roundtrip for binary values

      The JSON parser will not parse the objects generated by binary values back to binary values. This is by design to remain standards compliant. Serializing binary values to JSON is only implemented for debugging purposes.

      "},{"location":"features/binary_values/#bjdata","title":"BJData","text":"

      BJData neither supports binary values nor subtypes, and proposes to serialize binary values as array of uint8 values. This translation is implemented by the library.

      Example

      Code:

      // create a binary value of subtype 42 (will be ignored in BJData)\njson j;\nj[\"binary\"] = json::binary({0xCA, 0xFE, 0xBA, 0xBE}, 42);\n\n// convert to BJData\nauto v = json::to_bjdata(j);      \n

      v is a std::vector<std::uint8t> with the following 20 elements:

      0x7B                                             // '{'\n    0x69 0x06                                    // i 6 (length of the key)\n    0x62 0x69 0x6E 0x61 0x72 0x79                // \"binary\"\n    0x5B                                         // '['\n        0x55 0xCA 0x55 0xFE 0x55 0xBA 0x55 0xBE  // content (each byte prefixed with 'U')\n    0x5D                                         // ']'\n0x7D                                             // '}'\n

      The following code uses the type and size optimization for UBJSON:

      // convert to UBJSON using the size and type optimization\nauto v = json::to_bjdata(j, true, true);\n

      The resulting vector has 22 elements; the optimization is not effective for examples with few values:

      0x7B                                // '{'\n    0x23 0x69 0x01                  // '#' 'i' type of the array elements: unsigned integers\n    0x69 0x06                       // i 6 (length of the key)\n    0x62 0x69 0x6E 0x61 0x72 0x79   // \"binary\"\n    0x5B                            // '[' array\n        0x24 0x55                   // '$' 'U' type of the array elements: unsigned integers\n        0x23 0x69 0x04              // '#' i 4 number of array elements\n        0xCA 0xFE 0xBA 0xBE         // content\n

      Note that subtype (42) is not serialized and that UBJSON has no binary type, and deserializing v would yield the following value:

      {\n  \"binary\": [202, 254, 186, 190]\n}\n
      "},{"location":"features/binary_values/#bson","title":"BSON","text":"

      BSON supports binary values and subtypes. If a subtype is given, it is used and added as unsigned 8-bit integer. If no subtype is given, the generic binary subtype 0x00 is used.

      Example

      Code:

      // create a binary value of subtype 42\njson j;\nj[\"binary\"] = json::binary({0xCA, 0xFE, 0xBA, 0xBE}, 42);\n\n// convert to BSON\nauto v = json::to_bson(j);      \n

      v is a std::vector<std::uint8t> with the following 22 elements:

      0x16 0x00 0x00 0x00                         // number of bytes in the document\n    0x05                                    // binary value\n        0x62 0x69 0x6E 0x61 0x72 0x79 0x00  // key \"binary\" + null byte\n        0x04 0x00 0x00 0x00                 // number of bytes\n        0x2a                                // subtype\n        0xCA 0xFE 0xBA 0xBE                 // content\n0x00                                        // end of the document\n

      Note that the serialization preserves the subtype, and deserializing v would yield the following value:

      {\n  \"binary\": {\n    \"bytes\": [202, 254, 186, 190],\n    \"subtype\": 42\n  }\n}\n
      "},{"location":"features/binary_values/#cbor","title":"CBOR","text":"

      CBOR supports binary values, but no subtypes. Subtypes will be serialized as tags. Any binary value will be serialized as byte strings. The library will choose the smallest representation using the length of the byte array.

      Example

      Code:

      // create a binary value of subtype 42\njson j;\nj[\"binary\"] = json::binary({0xCA, 0xFE, 0xBA, 0xBE}, 42);\n\n// convert to CBOR\nauto v = json::to_cbor(j);      \n

      v is a std::vector<std::uint8t> with the following 15 elements:

      0xA1                                   // map(1)\n    0x66                               // text(6)\n        0x62 0x69 0x6E 0x61 0x72 0x79  // \"binary\"\n    0xD8 0x2A                          // tag(42)\n    0x44                               // bytes(4)\n        0xCA 0xFE 0xBA 0xBE            // content\n

      Note that the subtype is serialized as tag. However, parsing tagged values yield a parse error unless json::cbor_tag_handler_t::ignore or json::cbor_tag_handler_t::store is passed to json::from_cbor.

      {\n  \"binary\": {\n    \"bytes\": [202, 254, 186, 190],\n    \"subtype\": null\n  }\n}\n
      "},{"location":"features/binary_values/#messagepack","title":"MessagePack","text":"

      MessagePack supports binary values and subtypes. If a subtype is given, the ext family is used. The library will choose the smallest representation among fixext1, fixext2, fixext4, fixext8, ext8, ext16, and ext32. The subtype is then added as signed 8-bit integer.

      If no subtype is given, the bin family (bin8, bin16, bin32) is used.

      Example

      Code:

      // create a binary value of subtype 42\njson j;\nj[\"binary\"] = json::binary({0xCA, 0xFE, 0xBA, 0xBE}, 42);\n\n// convert to MessagePack\nauto v = json::to_msgpack(j);      \n

      v is a std::vector<std::uint8t> with the following 14 elements:

      0x81                                   // fixmap1\n    0xA6                               // fixstr6\n        0x62 0x69 0x6E 0x61 0x72 0x79  // \"binary\"\n    0xD6                               // fixext4\n        0x2A                           // subtype\n        0xCA 0xFE 0xBA 0xBE            // content\n

      Note that the serialization preserves the subtype, and deserializing v would yield the following value:

      {\n  \"binary\": {\n    \"bytes\": [202, 254, 186, 190],\n    \"subtype\": 42\n  }\n}\n
      "},{"location":"features/binary_values/#ubjson","title":"UBJSON","text":"

      UBJSON neither supports binary values nor subtypes, and proposes to serialize binary values as array of uint8 values. This translation is implemented by the library.

      Example

      Code:

      // create a binary value of subtype 42 (will be ignored in UBJSON)\njson j;\nj[\"binary\"] = json::binary({0xCA, 0xFE, 0xBA, 0xBE}, 42);\n\n// convert to UBJSON\nauto v = json::to_ubjson(j);      \n

      v is a std::vector<std::uint8t> with the following 20 elements:

      0x7B                                             // '{'\n    0x69 0x06                                    // i 6 (length of the key)\n    0x62 0x69 0x6E 0x61 0x72 0x79                // \"binary\"\n    0x5B                                         // '['\n        0x55 0xCA 0x55 0xFE 0x55 0xBA 0x55 0xBE  // content (each byte prefixed with 'U')\n    0x5D                                         // ']'\n0x7D                                             // '}'\n

      The following code uses the type and size optimization for UBJSON:

      // convert to UBJSON using the size and type optimization\nauto v = json::to_ubjson(j, true, true);\n

      The resulting vector has 23 elements; the optimization is not effective for examples with few values:

      0x7B                                // '{'\n    0x24                            // '$' type of the object elements\n    0x5B                            // '[' array\n    0x23 0x69 0x01                  // '#' i 1 number of object elements\n    0x69 0x06                       // i 6 (length of the key)\n    0x62 0x69 0x6E 0x61 0x72 0x79   // \"binary\"\n        0x24 0x55                   // '$' 'U' type of the array elements: unsigned integers\n        0x23 0x69 0x04              // '#' i 4 number of array elements\n        0xCA 0xFE 0xBA 0xBE         // content\n

      Note that subtype (42) is not serialized and that UBJSON has no binary type, and deserializing v would yield the following value:

      {\n  \"binary\": [202, 254, 186, 190]\n}\n
      "},{"location":"features/comments/","title":"Comments","text":"

      This library does not support comments by default. It does so for three reasons:

      1. Comments are not part of the JSON specification. You may argue that // or /* */ are allowed in JavaScript, but JSON is not JavaScript.
      2. This was not an oversight: Douglas Crockford wrote on this in May 2012:

        I removed comments from JSON because I saw people were using them to hold parsing directives, a practice which would have destroyed interoperability. I know that the lack of comments makes some people sad, but it shouldn't.

        Suppose you are using JSON to keep configuration files, which you would like to annotate. Go ahead and insert all the comments you like. Then pipe it through JSMin before handing it to your JSON parser.

      3. It is dangerous for interoperability if some libraries would add comment support while others don't. Please check The Harmful Consequences of the Robustness Principle on this.

      However, you can pass set parameter ignore_comments to true in the parse function to ignore // or /* */ comments. Comments will then be treated as whitespace.

      Example

      Consider the following JSON with comments.

      {\n    // update in 2006: removed Pluto\n    \"planets\": [\"Mercury\", \"Venus\", \"Earth\", \"Mars\",\n                \"Jupiter\", \"Uranus\", \"Neptune\" /*, \"Pluto\" */]\n}\n

      When calling parse without additional argument, a parse error exception is thrown. If ignore_comments is set to true, the comments are ignored during parsing:

      #include <iostream>\n#include \"json.hpp\"\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::string s = R\"(\n    {\n        // update in 2006: removed Pluto\n        \"planets\": [\"Mercury\", \"Venus\", \"Earth\", \"Mars\",\n                    \"Jupiter\", \"Uranus\", \"Neptune\" /*, \"Pluto\" */]\n    }\n    )\";\n\n    try\n    {\n        json j = json::parse(s);\n    }\n    catch (json::exception &e)\n    {\n        std::cout << e.what() << std::endl;\n    }\n\n    json j = json::parse(s,\n                         /* callback */ nullptr,\n                         /* allow exceptions */ true,\n                         /* ignore_comments */ true);\n    std::cout << j.dump(2) << '\\n';\n}\n

      Output:

      [json.exception.parse_error.101] parse error at line 3, column 9:\nsyntax error while parsing object key - invalid literal;\nlast read: '<U+000A>    {<U+000A>        /'; expected string literal\n
      {\n  \"planets\": [\n    \"Mercury\",\n    \"Venus\",\n    \"Earth\",\n    \"Mars\",\n    \"Jupiter\",\n    \"Uranus\",\n    \"Neptune\"\n  ]\n}\n
      "},{"location":"features/enum_conversion/","title":"Specializing enum conversion","text":"

      By default, enum values are serialized to JSON as integers. In some cases this could result in undesired behavior. If an enum is modified or re-ordered after data has been serialized to JSON, the later de-serialized JSON data may be undefined or a different enum value than was originally intended.

      It is possible to more precisely specify how a given enum is mapped to and from JSON as shown below:

      // example enum type declaration\nenum TaskState {\n    TS_STOPPED,\n    TS_RUNNING,\n    TS_COMPLETED,\n    TS_INVALID=-1,\n};\n\n// map TaskState values to JSON as strings\nNLOHMANN_JSON_SERIALIZE_ENUM( TaskState, {\n    {TS_INVALID, nullptr},\n    {TS_STOPPED, \"stopped\"},\n    {TS_RUNNING, \"running\"},\n    {TS_COMPLETED, \"completed\"},\n})\n

      The NLOHMANN_JSON_SERIALIZE_ENUM() macro declares a set of to_json() / from_json() functions for type TaskState while avoiding repetition and boilerplate serialization code.

      "},{"location":"features/enum_conversion/#usage","title":"Usage","text":"
      // enum to JSON as string\njson j = TS_STOPPED;\nassert(j == \"stopped\");\n\n// json string to enum\njson j3 = \"running\";\nassert(j3.template get<TaskState>() == TS_RUNNING);\n\n// undefined json value to enum (where the first map entry above is the default)\njson jPi = 3.14;\nassert(jPi.template get<TaskState>() == TS_INVALID );\n
      "},{"location":"features/enum_conversion/#notes","title":"Notes","text":"

      Just as in Arbitrary Type Conversions above,

      • NLOHMANN_JSON_SERIALIZE_ENUM() MUST be declared in your enum type's namespace (which can be the global namespace), or the library will not be able to locate it, and it will default to integer serialization.
      • It MUST be available (e.g., proper headers must be included) everywhere you use the conversions.

      Other Important points:

      • When using template get<ENUM_TYPE>(), undefined JSON values will default to the first pair specified in your map. Select this default pair carefully.
      • If an enum or JSON value is specified more than once in your map, the first matching occurrence from the top of the map will be returned when converting to or from JSON.
      • To disable the default serialization of enumerators as integers and force a compiler error instead, see JSON_DISABLE_ENUM_SERIALIZATION.
      "},{"location":"features/iterators/","title":"Iterators","text":""},{"location":"features/iterators/#overview","title":"Overview","text":"

      A basic_json value is a container and allows access via iterators. Depending on the value type, basic_json stores zero or more values.

      As for other containers, begin() returns an iterator to the first value and end() returns an iterator to the value following the last value. The latter iterator is a placeholder and cannot be dereferenced. In case of null values, empty arrays, or empty objects, begin() will return end().

      "},{"location":"features/iterators/#iteration-order-for-objects","title":"Iteration order for objects","text":"

      When iterating over objects, values are ordered with respect to the object_comparator_t type which defaults to std::less. See the types documentation for more information.

      Example
      // create JSON object {\"one\": 1, \"two\": 2, \"three\": 3}\njson j;\nj[\"one\"] = 1;\nj[\"two\"] = 2;\nj[\"three\"] = 3;\n\nfor (auto it = j.begin(); it != j.end(); ++it)\n{\n    std::cout << *it << std::endl;\n}\n

      Output:

      1\n3\n2\n

      The reason for the order is the lexicographic ordering of the object keys \"one\", \"three\", \"two\".

      "},{"location":"features/iterators/#access-object-key-during-iteration","title":"Access object key during iteration","text":"

      The JSON iterators have two member functions, key() and value() to access the object key and stored value, respectively. When calling key() on a non-object iterator, an invalid_iterator.207 exception is thrown.

      Example
      // create JSON object {\"one\": 1, \"two\": 2, \"three\": 3}\njson j;\nj[\"one\"] = 1;\nj[\"two\"] = 2;\nj[\"three\"] = 3;\n\nfor (auto it = j.begin(); it != j.end(); ++it)\n{\n    std::cout << it.key() << \" : \" << it.value() << std::endl;\n}\n

      Output:

      one : 1\nthree : 3\ntwo : 2\n
      "},{"location":"features/iterators/#range-based-for-loops","title":"Range-based for loops","text":"

      C++11 allows using range-based for loops to iterate over a container.

      for (auto it : j_object)\n{\n    // \"it\" is of type json::reference and has no key() member\n    std::cout << \"value: \" << it << '\\n';\n}\n

      For this reason, the items() function allows accessing iterator::key() and iterator::value() during range-based for loops. In these loops, a reference to the JSON values is returned, so there is no access to the underlying iterator.

      for (auto& el : j_object.items())\n{\n    std::cout << \"key: \" << el.key() << \", value:\" << el.value() << '\\n';\n}\n

      The items() function also allows using structured bindings (C++17):

      for (auto& [key, val] : j_object.items())\n{\n    std::cout << \"key: \" << key << \", value:\" << val << '\\n';\n}\n

      Note

      When iterating over an array, key() will return the index of the element as string. For primitive types (e.g., numbers), key() returns an empty string.

      Warning

      Using items() on temporary objects is dangerous. Make sure the object's lifetime exceeds the iteration. See #2040 for more information.

      "},{"location":"features/iterators/#reverse-iteration-order","title":"Reverse iteration order","text":"

      rbegin() and rend() return iterators in the reverse sequence.

      Example
      json j = {1, 2, 3, 4};\n\nfor (auto it = j.rbegin(); it != j.rend(); ++it)\n{\n    std::cout << *it << std::endl;\n}\n

      Output:

      4\n3\n2\n1\n
      "},{"location":"features/iterators/#iterating-strings-and-binary-values","title":"Iterating strings and binary values","text":"

      Note that \"value\" means a JSON value in this setting, not values stored in the underlying containers. That is, *begin() returns the complete string or binary array and is also safe the underlying string or binary array is empty.

      Example
      json j = \"Hello, world\";\nfor (auto it = j.begin(); it != j.end(); ++it)\n{\n    std::cout << *it << std::endl;\n}\n

      Output:

      \"Hello, world\"\n
      "},{"location":"features/iterators/#iterator-invalidation","title":"Iterator invalidation","text":"Operations invalidated iterators clear all"},{"location":"features/json_patch/","title":"JSON Patch and Diff","text":""},{"location":"features/json_patch/#patches","title":"Patches","text":"

      JSON Patch (RFC 6902) defines a JSON document structure for expressing a sequence of operations to apply to a JSON document. With the patch function, a JSON Patch is applied to the current JSON value by executing all operations from the patch.

      Example

      The following code shows how a JSON patch is applied to a value.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // the original document\n    json doc = R\"(\n        {\n          \"baz\": \"qux\",\n          \"foo\": \"bar\"\n        }\n    )\"_json;\n\n    // the patch\n    json patch = R\"(\n        [\n          { \"op\": \"replace\", \"path\": \"/baz\", \"value\": \"boo\" },\n          { \"op\": \"add\", \"path\": \"/hello\", \"value\": [\"world\"] },\n          { \"op\": \"remove\", \"path\": \"/foo\"}\n        ]\n    )\"_json;\n\n    // apply the patch\n    json patched_doc = doc.patch(patch);\n\n    // output original and patched document\n    std::cout << std::setw(4) << doc << \"\\n\\n\"\n              << std::setw(4) << patched_doc << std::endl;\n}\n

      Output:

      {\n    \"baz\": \"qux\",\n    \"foo\": \"bar\"\n}\n\n{\n    \"baz\": \"boo\",\n    \"hello\": [\n        \"world\"\n    ]\n}\n
      "},{"location":"features/json_patch/#diff","title":"Diff","text":"

      The library can also calculate a JSON patch (i.e., a diff) given two JSON values.

      Invariant

      For two JSON values source and target, the following code yields always true:

      source.patch(diff(source, target)) == target;\n
      Example

      The following code shows how a JSON patch is created as a diff for two JSON values.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // the source document\n    json source = R\"(\n        {\n            \"baz\": \"qux\",\n            \"foo\": \"bar\"\n        }\n    )\"_json;\n\n    // the target document\n    json target = R\"(\n        {\n            \"baz\": \"boo\",\n            \"hello\": [\n                \"world\"\n            ]\n        }\n    )\"_json;\n\n    // create the patch\n    json patch = json::diff(source, target);\n\n    // roundtrip\n    json patched_source = source.patch(patch);\n\n    // output patch and roundtrip result\n    std::cout << std::setw(4) << patch << \"\\n\\n\"\n              << std::setw(4) << patched_source << std::endl;\n}\n

      Output:

      [\n    {\n        \"op\": \"replace\",\n        \"path\": \"/baz\",\n        \"value\": \"boo\"\n    },\n    {\n        \"op\": \"remove\",\n        \"path\": \"/foo\"\n    },\n    {\n        \"op\": \"add\",\n        \"path\": \"/hello\",\n        \"value\": [\n            \"world\"\n        ]\n    }\n]\n\n{\n    \"baz\": \"boo\",\n    \"hello\": [\n        \"world\"\n    ]\n}\n
      "},{"location":"features/json_pointer/","title":"JSON Pointer","text":""},{"location":"features/json_pointer/#introduction","title":"Introduction","text":"

      The library supports JSON Pointer (RFC 6901) as alternative means to address structured values. A JSON Pointer is a string that identifies a specific value within a JSON document.

      Consider the following JSON document

      {\n    \"array\": [\"A\", \"B\", \"C\"],\n    \"nested\": {\n        \"one\": 1,\n        \"two\": 2,\n        \"three\": [true, false]\n    }\n}\n

      Then every value inside the JSON document can be identified as follows:

      JSON Pointer JSON value `` {\"array\":[\"A\",\"B\",\"C\"],\"nested\":{\"one\":1,\"two\":2,\"three\":[true,false]}} /array [\"A\",\"B\",\"C\"] /array/0 A /array/1 B /array/2 C /nested {\"one\":1,\"two\":2,\"three\":[true,false]} /nested/one 1 /nested/two 2 /nested/three [true,false] /nested/three/0 true /nested/three/1 false

      Note / does not identify the root (i.e., the whole document), but an object entry with empty key \"\". See RFC 6901 for more information.

      "},{"location":"features/json_pointer/#json-pointer-creation","title":"JSON Pointer creation","text":"

      JSON Pointers can be created from a string:

      json::json_pointer p = \"/nested/one\";\n

      Furthermore, a user-defined string literal can be used to achieve the same result:

      auto p = \"/nested/one\"_json_pointer;\n

      The escaping rules of RFC 6901 are implemented. See the constructor documentation for more information.

      "},{"location":"features/json_pointer/#value-access","title":"Value access","text":"

      JSON Pointers can be used in the at, operator[], and value functions just like object keys or array indices.

      // the JSON value from above\nauto j = json::parse(R\"({\n    \"array\": [\"A\", \"B\", \"C\"],\n    \"nested\": {\n        \"one\": 1,\n        \"two\": 2,\n        \"three\": [true, false]\n    }\n})\");\n\n// access values\nauto val = j[\"\"_json_pointer];                              // {\"array\":[\"A\",\"B\",\"C\"],...}\nauto val1 = j[\"/nested/one\"_json_pointer];                  // 1\nauto val2 = j.at(json::json_pointer(\"/nested/three/1\"));    // false\nauto val3 = j.value(json::json_pointer(\"/nested/four\"), 0); // 0\n
      "},{"location":"features/json_pointer/#flatten-unflatten","title":"Flatten / unflatten","text":"

      The library implements a function flatten to convert any JSON document into a JSON object where each key is a JSON Pointer and each value is a primitive JSON value (i.e., a string, boolean, number, or null).

      // the JSON value from above\nauto j = json::parse(R\"({\n    \"array\": [\"A\", \"B\", \"C\"],\n    \"nested\": {\n        \"one\": 1,\n        \"two\": 2,\n        \"three\": [true, false]\n    }\n})\");\n\n// create flattened value\nauto j_flat = j.flatten();\n

      The resulting value j_flat is:

      {\n  \"/array/0\": \"A\",\n  \"/array/1\": \"B\",\n  \"/array/2\": \"C\",\n  \"/nested/one\": 1,\n  \"/nested/two\": 2,\n  \"/nested/three/0\": true,\n  \"/nested/three/1\": false\n}\n

      The reverse function, unflatten recreates the original value.

      auto j_original = j_flat.unflatten();\n
      "},{"location":"features/json_pointer/#see-also","title":"See also","text":"
      • Class json_pointer
      • Function flatten
      • Function unflatten
      • JSON Patch
      "},{"location":"features/macros/","title":"Supported Macros","text":"

      Some aspects of the library can be configured by defining preprocessor macros before including the json.hpp header. See also the API documentation for macros for examples and more information.

      "},{"location":"features/macros/#json_assertx","title":"JSON_ASSERT(x)","text":"

      This macro controls which code is executed for runtime assertions of the library.

      See full documentation of JSON_ASSERT(x).

      "},{"location":"features/macros/#json_catch_userexception","title":"JSON_CATCH_USER(exception)","text":"

      This macro overrides catch calls inside the library.

      See full documentation of JSON_CATCH_USER(exception).

      "},{"location":"features/macros/#json_diagnostics","title":"JSON_DIAGNOSTICS","text":"

      This macro enables extended diagnostics for exception messages. Possible values are 1 to enable or 0 to disable (default).

      When enabled, exception messages contain a JSON Pointer to the JSON value that triggered the exception, see Extended diagnostic messages for an example. Note that enabling this macro increases the size of every JSON value by one pointer and adds some runtime overhead.

      The diagnostics messages can also be controlled with the CMake option JSON_Diagnostics (OFF by default) which sets JSON_DIAGNOSTICS accordingly.

      See full documentation of JSON_DIAGNOSTICS.

      "},{"location":"features/macros/#json_has_cpp_11-json_has_cpp_14-json_has_cpp_17-json_has_cpp_20","title":"JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20","text":"

      The library targets C++11, but also supports some features introduced in later C++ versions (e.g., std::string_view support for C++17). For these new features, the library implements some preprocessor checks to determine the C++ standard. By defining any of these symbols, the internal check is overridden and the provided C++ version is unconditionally assumed. This can be helpful for compilers that only implement parts of the standard and would be detected incorrectly.

      See full documentation of JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, and JSON_HAS_CPP_20.

      "},{"location":"features/macros/#json_has_filesystem-json_has_experimental_filesystem","title":"JSON_HAS_FILESYSTEM, JSON_HAS_EXPERIMENTAL_FILESYSTEM","text":"

      When compiling with C++17, the library provides conversions from and to std::filesystem::path. As compiler support for filesystem is limited, the library tries to detect whether <filesystem>/std::filesystem (JSON_HAS_FILESYSTEM) or <experimental/filesystem>/std::experimental::filesystem (JSON_HAS_EXPERIMENTAL_FILESYSTEM) should be used. To override the built-in check, define JSON_HAS_FILESYSTEM or JSON_HAS_EXPERIMENTAL_FILESYSTEM to 1.

      See full documentation of JSON_HAS_FILESYSTEM and JSON_HAS_EXPERIMENTAL_FILESYSTEM.

      "},{"location":"features/macros/#json_noexception","title":"JSON_NOEXCEPTION","text":"

      Exceptions can be switched off by defining the symbol JSON_NOEXCEPTION.

      See full documentation of JSON_NOEXCEPTION.

      "},{"location":"features/macros/#json_disable_enum_serialization","title":"JSON_DISABLE_ENUM_SERIALIZATION","text":"

      When defined, default parse and serialize functions for enums are excluded and have to be provided by the user, for example, using NLOHMANN_JSON_SERIALIZE_ENUM.

      See full documentation of JSON_DISABLE_ENUM_SERIALIZATION.

      "},{"location":"features/macros/#json_no_io","title":"JSON_NO_IO","text":"

      When defined, headers <cstdio>, <ios>, <iosfwd>, <istream>, and <ostream> are not included and parse functions relying on these headers are excluded. This is relevant for environment where these I/O functions are disallowed for security reasons (e.g., Intel Software Guard Extensions (SGX)).

      See full documentation of JSON_NO_IO.

      "},{"location":"features/macros/#json_skip_library_version_check","title":"JSON_SKIP_LIBRARY_VERSION_CHECK","text":"

      When defined, the library will not create a compiler warning when a different version of the library was already included.

      See full documentation of JSON_SKIP_LIBRARY_VERSION_CHECK.

      "},{"location":"features/macros/#json_skip_unsupported_compiler_check","title":"JSON_SKIP_UNSUPPORTED_COMPILER_CHECK","text":"

      When defined, the library will not create a compile error when a known unsupported compiler is detected. This allows to use the library with compilers that do not fully support C++11 and may only work if unsupported features are not used.

      See full documentation of JSON_SKIP_UNSUPPORTED_COMPILER_CHECK.

      "},{"location":"features/macros/#json_throw_userexception","title":"JSON_THROW_USER(exception)","text":"

      This macro overrides throw calls inside the library. The argument is the exception to be thrown.

      See full documentation of JSON_THROW_USER(exception).

      "},{"location":"features/macros/#json_try_user","title":"JSON_TRY_USER","text":"

      This macro overrides try calls inside the library.

      See full documentation of JSON_TRY_USER.

      "},{"location":"features/macros/#json_use_implicit_conversions","title":"JSON_USE_IMPLICIT_CONVERSIONS","text":"

      When defined to 0, implicit conversions are switched off. By default, implicit conversions are switched on.

      See full documentation of JSON_USE_IMPLICIT_CONVERSIONS.

      "},{"location":"features/macros/#nlohmann_define_derived_type_intrusivetype-base_type-member","title":"NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE(type, base_type, member...)","text":""},{"location":"features/macros/#nlohmann_define_derived_type_intrusive_with_defaulttype-base_type-member","title":"NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT(type, base_type, member...)","text":""},{"location":"features/macros/#nlohmann_define_derived_type_non_intrusivetype-base_type-member","title":"NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE(type, base_type, member...)","text":""},{"location":"features/macros/#nlohmann_define_derived_type_non_intrusive_with_defaulttype-base_type-member","title":"NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT(type, base_type, member...)","text":""},{"location":"features/macros/#nlohmann_define_type_intrusivetype-member","title":"NLOHMANN_DEFINE_TYPE_INTRUSIVE(type, member...)","text":"

      This macro can be used to simplify the serialization/deserialization of types if (1) want to use a JSON object as serialization and (2) want to use the member variable names as object keys in that object.

      The macro is to be defined inside the class/struct to create code for. Unlike NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, it can access private members. The first parameter is the name of the class/struct, and all remaining parameters name the members.

      See full documentation of NLOHMANN_DEFINE_TYPE_INTRUSIVE.

      "},{"location":"features/macros/#nlohmann_define_type_intrusive_with_defaulttype-member","title":"NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT(type, member...)","text":"

      This macro is similar to NLOHMANN_DEFINE_TYPE_INTRUSIVE. It will not throw an exception in from_json() due to a missing value in the JSON object, but can throw due to a mismatched type. The from_json() function default constructs an object and uses its values as the defaults when calling the value function.

      See full documentation of NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT.

      "},{"location":"features/macros/#nlohmann_define_type_intrusive_only_serializetype-member","title":"NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE(type, member...)","text":"

      This macro is similar to NLOHMANN_DEFINE_TYPE_INTRUSIVE except that it defines only the serialization code. This is useful when the user type does not have a default constructor and only the serialization is required.

      See full documentation of NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE.

      "},{"location":"features/macros/#nlohmann_define_type_non_intrusivetype-member","title":"NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(type, member...)","text":"

      This macro can be used to simplify the serialization/deserialization of types if (1) want to use a JSON object as serialization and (2) want to use the member variable names as object keys in that object.

      The macro is to be defined inside the namespace of the class/struct to create code for. Private members cannot be accessed. Use NLOHMANN_DEFINE_TYPE_INTRUSIVE in these scenarios. The first parameter is the name of the class/struct, and all remaining parameters name the members.

      See full documentation of NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE.

      "},{"location":"features/macros/#nlohmann_define_type_non_intrusive_with_defaulttype-member","title":"NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT(type, member...)","text":"

      This macro is similar to NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE. It will not throw an exception in from_json() due to a missing value in the JSON object, but can throw due to a mismatched type. The from_json() function default constructs an object and uses its values as the defaults when calling the value function.

      See full documentation of NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT.

      "},{"location":"features/macros/#nlohmann_define_type_non_intrusive_only_serializetype-member","title":"NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE(type, member...)","text":"

      This macro is similar to NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE except that it defines only the serialization code. This is useful when the user type does not have a default constructor and only the serialization is required.

      See full documentation of NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE.

      "},{"location":"features/macros/#nlohmann_json_serialize_enumtype","title":"NLOHMANN_JSON_SERIALIZE_ENUM(type, ...)","text":"

      This macro simplifies the serialization/deserialization of enum types. See Specializing enum conversion for more information.

      See full documentation of NLOHMANN_JSON_SERIALIZE_ENUM.

      "},{"location":"features/macros/#nlohmann_json_version_major-nlohmann_json_version_minor-nlohmann_json_version_patch","title":"NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH","text":"

      These macros are defined by the library and contain the version numbers according to Semantic Versioning 2.0.0.

      See full documentation of NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, and NLOHMANN_JSON_VERSION_PATCH.

      "},{"location":"features/merge_patch/","title":"JSON Merge Patch","text":"

      The library supports JSON Merge Patch (RFC 7386) as a patch format. The merge patch format is primarily intended for use with the HTTP PATCH method as a means of describing a set of modifications to a target resource's content. This function applies a merge patch to the current JSON value.

      Instead of using JSON Pointer to specify values to be manipulated, it describes the changes using a syntax that closely mimics the document being modified.

      Example

      The following code shows how a JSON Merge Patch is applied to a JSON document.

      #include <iostream>\n#include <nlohmann/json.hpp>\n#include <iomanip> // for std::setw\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // the original document\n    json document = R\"({\n                \"title\": \"Goodbye!\",\n                \"author\": {\n                    \"givenName\": \"John\",\n                    \"familyName\": \"Doe\"\n                },\n                \"tags\": [\n                    \"example\",\n                    \"sample\"\n                ],\n                \"content\": \"This will be unchanged\"\n            })\"_json;\n\n    // the patch\n    json patch = R\"({\n                \"title\": \"Hello!\",\n                \"phoneNumber\": \"+01-123-456-7890\",\n                \"author\": {\n                    \"familyName\": null\n                },\n                \"tags\": [\n                    \"example\"\n                ]\n            })\"_json;\n\n    // apply the patch\n    document.merge_patch(patch);\n\n    // output original and patched document\n    std::cout << std::setw(4) << document << std::endl;\n}\n

      Output:

      {\n    \"author\": {\n        \"givenName\": \"John\"\n    },\n    \"content\": \"This will be unchanged\",\n    \"phoneNumber\": \"+01-123-456-7890\",\n    \"tags\": [\n        \"example\"\n    ],\n    \"title\": \"Hello!\"\n}\n
      "},{"location":"features/namespace/","title":"nlohmann Namespace","text":"

      The 3.11.0 release introduced an inline namespace to allow different parts of a codebase to safely use different versions of the JSON library as long as they never exchange instances of library types.

      "},{"location":"features/namespace/#structure","title":"Structure","text":"

      The complete default namespace name is derived as follows:

      • The root namespace is always nlohmann.
      • The inline namespace starts with json_abi and is followed by serveral optional ABI tags according to the value of these ABI-affecting macros, in order:
        • JSON_DIAGNOSTICS defined non-zero appends _diag.
        • JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON defined non-zero appends _ldvcmp.
      • The inline namespace ends with the suffix _v followed by the 3 components of the version number separated by underscores. To omit the version component, see Disabling the version component below.

      For example, the namespace name for version 3.11.2 with JSON_DIAGNOSTICS defined to 1 is:

      nlohmann::json_abi_diag_v3_11_2\n
      "},{"location":"features/namespace/#purpose","title":"Purpose","text":"

      Several incompatibilities have been observed. Amongst the most common ones is linking code compiled with different definitions of JSON_DIAGNOSTICS. This is illustrated in the diagram below.

      graph\n    json[\"<strong>nlohmann_json (v3.10.5)</strong><br>JSON_DIAGNOSTICS=0\"]\n    json_diag[\"<strong>nlohmann_json (v3.10.5)</strong><br>JSON_DIAGNOSTICS=1\"]\n    library[\"<strong>some library</strong>\"]\n    app[\"<strong>application</strong>\"]\n\n    library --> json\n    app --> json_diag\n    app --> library

      In releases prior to 3.11.0, mixing any version of the JSON library with different JSON_DIAGNOSTICS settings would result in a crashing application. If some_library never passes instances of JSON library types to the application, this scenario became safe in version 3.11.0 and above due to the inline namespace yielding distinct symbol names.

      "},{"location":"features/namespace/#limitations","title":"Limitations","text":"

      Neither the compiler nor the linker will issue as much as a warning when translation units \u2013 intended to be linked together and that include different versions and/or configurations of the JSON library \u2013 exchange and use library types.

      There is an exception when forward declarations are used (i.e., when including json_fwd.hpp) in which case the linker may complain about undefined references.

      "},{"location":"features/namespace/#disabling-the-version-component","title":"Disabling the version component","text":"

      Different versions are not necessarily ABI-incompatible, but the project does not actively track changes in the ABI and recommends that all parts of a codebase exchanging library types be built with the same version. Users can, at their own risk, disable the version component of the linline namespace, allowing different versions \u2013 but not configurations \u2013 to be used in cases where the linker would otherwise output undefined reference errors.

      To do so, define NLOHMANN_JSON_NAMESPACE_NO_VERSION to 1.

      This applies to version 3.11.2 and above only, versions 3.11.0 and 3.11.1 can apply the technique described in the next section to emulate the effect of the NLOHMANN_JSON_NAMESPACE_NO_VERSION macro.

      Use at your own risk

      Disabling the namespace version component and mixing ABI-incompatible versions will result in crashes or incorrect behavior. You have been warned!

      "},{"location":"features/namespace/#disabling-the-inline-namespace-completely","title":"Disabling the inline namespace completely","text":"

      When interoperability with code using a pre-3.11.0 version of the library is required, users can, at their own risk restore the old namespace layout by redefining NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END as follows:

      #define NLOHMANN_JSON_NAMESPACE_BEGIN  namespace nlohmann {\n#define NLOHMANN_JSON_NAMESPACE_END    }\n

      Use at your own risk

      Overriding the namespace and mixing ABI-incompatible versions will result in crashes or incorrect behavior. You have been warned!

      "},{"location":"features/namespace/#version-history","title":"Version history","text":"
      • Introduced inline namespace (json_v3_11_0[_abi-tag]*) in version 3.11.0.
      • Changed structure of inline namespace in version 3.11.2.
      "},{"location":"features/object_order/","title":"Object Order","text":"

      The JSON standard defines objects as \"an unordered collection of zero or more name/value pairs\". As such, an implementation does not need to preserve any specific order of object keys.

      "},{"location":"features/object_order/#default-behavior-sort-keys","title":"Default behavior: sort keys","text":"

      The default type nlohmann::json uses a std::map to store JSON objects, and thus stores object keys sorted alphabetically.

      Example
      #include <iostream>\n#include \"json.hpp\"\n\nusing json = nlohmann::json;\n\nint main()\n{\n    json j;\n    j[\"one\"] = 1;\n    j[\"two\"] = 2;\n    j[\"three\"] = 3;\n\n    std::cout << j.dump(2) << '\\n';\n}\n

      Output:

      {\n  \"one\": 1,\n  \"three\": 3,\n  \"two\": 2\n}\n
      "},{"location":"features/object_order/#alternative-behavior-preserve-insertion-order","title":"Alternative behavior: preserve insertion order","text":"

      If you do want to preserve the insertion order, you can try the type nlohmann::ordered_json.

      Example
      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing ordered_json = nlohmann::ordered_json;\n\nint main()\n{\n    ordered_json j;\n    j[\"one\"] = 1;\n    j[\"two\"] = 2;\n    j[\"three\"] = 3;\n\n    std::cout << j.dump(2) << '\\n';\n}\n

      Output:

      {\n  \"one\": 1,\n  \"two\": 2,\n  \"three\": 3\n}\n

      Alternatively, you can use a more sophisticated ordered map like tsl::ordered_map (integration) or nlohmann::fifo_map (integration).

      "},{"location":"features/object_order/#notes-on-parsing","title":"Notes on parsing","text":"

      Note that you also need to call the right parse function when reading from a file. Assume file input.json contains the JSON object above:

      {\n  \"one\": 1,\n  \"two\": 2,\n  \"three\": 3\n}\n

      Right way

      The following code correctly calls the parse function from nlohmann::ordered_json:

      std::ifstream i(\"input.json\");\nauto j = nlohmann::ordered_json::parse(i);\nstd::cout << j.dump(2) << std::endl;\n

      The output will be:

      {\n  \"one\": 1,\n  \"two\": 2,\n  \"three\": 3\n}\n
      Wrong way

      The following code incorrectly calls the parse function from nlohmann::json which does not preserve the insertion order, but sorts object keys. Assigning the result to nlohmann::ordered_json compiles, but does not restore the order from the input file.

      std::ifstream i(\"input.json\");\nnlohmann::ordered_json j = nlohmann::json::parse(i);\nstd::cout << j.dump(2) << std::endl;\n

      The output will be:

      {\n  \"one\": 1,\n  \"three\": 3\n  \"two\": 2,\n}\n
      "},{"location":"features/binary_formats/","title":"Binary Formats","text":"

      Though JSON is a ubiquitous data format, it is not a very compact format suitable for data exchange, for instance over a network. Hence, the library supports

      • BJData (Binary JData),
      • BSON (Binary JSON),
      • CBOR (Concise Binary Object Representation),
      • MessagePack, and
      • UBJSON (Universal Binary JSON)

      to efficiently encode JSON values to byte vectors and to decode such vectors.

      "},{"location":"features/binary_formats/#comparison","title":"Comparison","text":""},{"location":"features/binary_formats/#completeness","title":"Completeness","text":"Format Serialization Deserialization BJData complete complete BSON incomplete: top-level value must be an object incomplete, but all JSON types are supported CBOR complete incomplete, but all JSON types are supported MessagePack complete complete UBJSON complete complete"},{"location":"features/binary_formats/#binary-values","title":"Binary values","text":"Format Binary values Binary subtypes BJData not supported not supported BSON supported supported CBOR supported supported MessagePack supported supported UBJSON not supported not supported

      See binary values for more information.

      "},{"location":"features/binary_formats/#sizes","title":"Sizes","text":"Format canada.json twitter.json citm_catalog.json jeopardy.json BJData 53.2 % 91.1 % 78.1 % 96.6 % BJData (size) 58.6 % 92.1 % 86.7 % 97.4 % BJData (size+tyoe) 58.6 % 92.1 % 86.5 % 97.4 % BSON 85.8 % 95.2 % 95.8 % 106.7 % CBOR 50.5 % 86.3 % 68.4 % 88.0 % MessagePack 50.5 % 86.0 % 68.5 % 87.9 % UBJSON 53.2 % 91.3 % 78.2 % 96.6 % UBJSON (size) 58.6 % 92.3 % 86.8 % 97.4 % UBJSON (size+type) 55.9 % 92.3 % 85.0 % 95.0 %

      Sizes compared to minified JSON value.

      "},{"location":"features/binary_formats/bjdata/","title":"BJData","text":"

      The BJData format was derived from and improved upon Universal Binary JSON(UBJSON) specification (Draft 12). Specifically, it introduces an optimized array container for efficient storage of N-dimensional packed arrays (ND-arrays); it also adds 4 new type markers - [u] - uint16, [m] - uint32, [M] - uint64 and [h] - float16 - to unambiguously map common binary numeric types; furthermore, it uses little-endian (LE) to store all numerics instead of big-endian (BE) as in UBJSON to avoid unnecessary conversions on commonly available platforms.

      Compared to other binary JSON-like formats such as MessagePack and CBOR, both BJData and UBJSON demonstrate a rare combination of being both binary and quasi-human-readable. This is because all semantic elements in BJData and UBJSON, including the data-type markers and name/string types are directly human-readable. Data stored in the BJData/UBJSON format are not only compact in size, fast to read/write, but also can be directly searched or read using simple processing.

      References

      • BJData Specification
      "},{"location":"features/binary_formats/bjdata/#serialization","title":"Serialization","text":"

      The library uses the following mapping from JSON values types to BJData types according to the BJData specification:

      JSON value type value/range BJData type marker null null null Z boolean true true T boolean false false F number_integer -9223372036854775808..-2147483649 int64 L number_integer -2147483648..-32769 int32 l number_integer -32768..-129 int16 I number_integer -128..127 int8 i number_integer 128..255 uint8 U number_integer 256..32767 int16 I number_integer 32768..65535 uint16 u number_integer 65536..2147483647 int32 l number_integer 2147483648..4294967295 uint32 m number_integer 4294967296..9223372036854775807 int64 L number_integer 9223372036854775808..18446744073709551615 uint64 M number_unsigned 0..127 int8 i number_unsigned 128..255 uint8 U number_unsigned 256..32767 int16 I number_unsigned 32768..65535 uint16 u number_unsigned 65536..2147483647 int32 l number_unsigned 2147483648..4294967295 uint32 m number_unsigned 4294967296..9223372036854775807 int64 L number_unsigned 9223372036854775808..18446744073709551615 uint64 M number_float any value float64 D string with shortest length indicator string S array see notes on optimized format/ND-array array [ object see notes on optimized format map {

      Complete mapping

      The mapping is complete in the sense that any JSON value type can be converted to a BJData value.

      Any BJData output created by to_bjdata can be successfully parsed by from_bjdata.

      Size constraints

      The following values can not be converted to a BJData value:

      • strings with more than 18446744073709551615 bytes, i.e., 2^{64}-1 bytes (theoretical)

      Unused BJData markers

      The following markers are not used in the conversion:

      • Z: no-op values are not created.
      • C: single-byte strings are serialized with S markers.

      NaN/infinity handling

      If NaN or Infinity are stored inside a JSON number, they are serialized properly. This behavior differs from the dump() function which serializes NaN or Infinity to null.

      Endianness

      A breaking difference between BJData and UBJSON is the endianness of numerical values. In BJData, all numerical data types (integers UiuImlML and floating-point values hdD) are stored in the little-endian (LE) byte order as opposed to big-endian as used by UBJSON. Adopting LE to store numeric records avoids unnecessary byte swapping on most modern computers where LE is used as the default byte order.

      Optimized formats

      Optimized formats for containers are supported via two parameters of to_bjdata:

      • Parameter use_size adds size information to the beginning of a container and removes the closing marker.
      • Parameter use_type further checks whether all elements of a container have the same type and adds the type marker to the beginning of the container. The use_type parameter must only be used together with use_size = true.

      Note that use_size = true alone may result in larger representations - the benefit of this parameter is that the receiving side is immediately informed of the number of elements in the container.

      ND-array optimized format

      BJData extends UBJSON's optimized array size marker to support ND-arrays of uniform numerical data types (referred to as packed arrays). For example, the 2-D uint8 integer array [[1,2],[3,4],[5,6]], stored as nested optimized array in UBJSON [ [$U#i2 1 2 [$U#i2 3 4 [$U#i2 5 6 ], can be further compressed in BJData to [$U#[$i#i2 2 3 1 2 3 4 5 6 or [$U#[i2 i3] 1 2 3 4 5 6.

      To maintain type and size information, ND-arrays are converted to JSON objects following the annotated array format (defined in the JData specification (Draft 3)), when parsed using from_bjdata. For example, the above 2-D uint8 array can be parsed and accessed as

      {\n    \"_ArrayType_\": \"uint8\",\n    \"_ArraySize_\": [2,3],\n    \"_ArrayData_\": [1,2,3,4,5,6]\n}\n

      Likewise, when a JSON object in the above form is serialzed using to_bjdata, it is automatically converted into a compact BJData ND-array. The only exception is, that when the 1-dimensional vector stored in \"_ArraySize_\" contains a single integer or two integers with one being 1, a regular 1-D optimized array is generated.

      The current version of this library does not yet support automatic detection of and conversion from a nested JSON array input to a BJData ND-array.

      Restrictions in optimized data types for arrays and objects

      Due to diminished space saving, hampered readability, and increased security risks, in BJData, the allowed data types following the $ marker in an optimized array and object container are restricted to non-zero-fixed-length data types. Therefore, the valid optimized type markers can only be one of UiuImlMLhdDC. This also means other variable ([{SH) or zero-length types (TFN) can not be used in an optimized array or object in BJData.

      Binary values

      If the JSON data contains the binary type, the value stored is a list of integers, as suggested by the BJData documentation. In particular, this means that the serialization and the deserialization of JSON containing binary values into BJData and back will result in a different JSON object.

      Example
      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\n// function to print BJData's diagnostic format\nvoid print_byte(uint8_t byte)\n{\n    if (32 < byte and byte < 128)\n    {\n        std::cout << (char)byte;\n    }\n    else\n    {\n        std::cout << (int)byte;\n    }\n}\n\nint main()\n{\n    // create a JSON value\n    json j = R\"({\"compact\": true, \"schema\": false})\"_json;\n\n    // serialize it to BJData\n    std::vector<std::uint8_t> v = json::to_bjdata(j);\n\n    // print the vector content\n    for (auto& byte : v)\n    {\n        print_byte(byte);\n    }\n    std::cout << std::endl;\n\n    // create an array of numbers\n    json array = {1, 2, 3, 4, 5, 6, 7, 8};\n\n    // serialize it to BJData using default representation\n    std::vector<std::uint8_t> v_array = json::to_bjdata(array);\n    // serialize it to BJData using size optimization\n    std::vector<std::uint8_t> v_array_size = json::to_bjdata(array, true);\n    // serialize it to BJData using type optimization\n    std::vector<std::uint8_t> v_array_size_and_type = json::to_bjdata(array, true, true);\n\n    // print the vector contents\n    for (auto& byte : v_array)\n    {\n        print_byte(byte);\n    }\n    std::cout << std::endl;\n\n    for (auto& byte : v_array_size)\n    {\n        print_byte(byte);\n    }\n    std::cout << std::endl;\n\n    for (auto& byte : v_array_size_and_type)\n    {\n        print_byte(byte);\n    }\n    std::cout << std::endl;\n}\n

      Output:

      {i7compactTi6schemaF}\n[i1i2i3i4i5i6i7i8]\n[#i8i1i2i3i4i5i6i7i8\n[$i#i812345678\n
      "},{"location":"features/binary_formats/bjdata/#deserialization","title":"Deserialization","text":"

      The library maps BJData types to JSON value types as follows:

      BJData type JSON value type marker no-op no value, next value is read N null null Z false false F true true T float16 number_float h float32 number_float d float64 number_float D uint8 number_unsigned U int8 number_integer i uint16 number_unsigned u int16 number_integer I uint32 number_unsigned m int32 number_integer l uint64 number_unsigned M int64 number_integer L string string S char string C array array (optimized values are supported) [ ND-array object (in JData annotated array format) [$.#[. object object (optimized values are supported) {

      Complete mapping

      The mapping is complete in the sense that any BJData value can be converted to a JSON value.

      Example
      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create byte vector\n    std::vector<std::uint8_t> v = {0x7B, 0x69, 0x07, 0x63, 0x6F, 0x6D, 0x70, 0x61,\n                                   0x63, 0x74, 0x54, 0x69, 0x06, 0x73, 0x63, 0x68,\n                                   0x65, 0x6D, 0x61, 0x69, 0x00, 0x7D\n                                  };\n\n    // deserialize it with BJData\n    json j = json::from_bjdata(v);\n\n    // print the deserialized JSON value\n    std::cout << std::setw(2) << j << std::endl;\n}\n

      Output:

      {\n  \"compact\": true,\n  \"schema\": 0\n}\n
      "},{"location":"features/binary_formats/bson/","title":"BSON","text":"

      BSON, short for Binary JSON, is a binary-encoded serialization of JSON-like documents. Like JSON, BSON supports the embedding of documents and arrays within other documents and arrays. BSON also contains extensions that allow representation of data types that are not part of the JSON spec. For example, BSON has a Date type and a BinData type.

      References

      • BSON Website - the main source on BSON
      • BSON Specification - the specification
      "},{"location":"features/binary_formats/bson/#serialization","title":"Serialization","text":"

      The library uses the following mapping from JSON values types to BSON types:

      JSON value type value/range BSON type marker null null null 0x0A boolean true, false boolean 0x08 number_integer -9223372036854775808..-2147483649 int64 0x12 number_integer -2147483648..2147483647 int32 0x10 number_integer 2147483648..9223372036854775807 int64 0x12 number_unsigned 0..2147483647 int32 0x10 number_unsigned 2147483648..9223372036854775807 int64 0x12 number_unsigned 9223372036854775808..18446744073709551615 -- -- number_float any value double 0x01 string any value string 0x02 array any value document 0x04 object any value document 0x03 binary any value binary 0x05

      Incomplete mapping

      The mapping is incomplete, since only JSON-objects (and things contained therein) can be serialized to BSON. Also, integers larger than 9223372036854775807 cannot be serialized to BSON, and the keys may not contain U+0000, since they are serialized a zero-terminated c-strings.

      Example
      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON value\n    json j = R\"({\"compact\": true, \"schema\": 0})\"_json;\n\n    // serialize it to BSON\n    std::vector<std::uint8_t> v = json::to_bson(j);\n\n    // print the vector content\n    for (auto& byte : v)\n    {\n        std::cout << \"0x\" << std::hex << std::setw(2) << std::setfill('0') << (int)byte << \" \";\n    }\n    std::cout << std::endl;\n}\n

      Output:

      0x1b 0x00 0x00 0x00 0x08 0x63 0x6f 0x6d 0x70 0x61 0x63 0x74 0x00 0x01 0x10 0x73 0x63 0x68 0x65 0x6d 0x61 0x00 0x00 0x00 0x00 0x00 0x00 \n
      "},{"location":"features/binary_formats/bson/#deserialization","title":"Deserialization","text":"

      The library maps BSON record types to JSON value types as follows:

      BSON type BSON marker byte JSON value type double 0x01 number_float string 0x02 string document 0x03 object array 0x04 array binary 0x05 binary undefined 0x06 unsupported ObjectId 0x07 unsupported boolean 0x08 boolean UTC Date-Time 0x09 unsupported null 0x0A null Regular Expr. 0x0B unsupported DB Pointer 0x0C unsupported JavaScript Code 0x0D unsupported Symbol 0x0E unsupported JavaScript Code 0x0F unsupported int32 0x10 number_integer Timestamp 0x11 unsupported 128-bit decimal float 0x13 unsupported Max Key 0x7F unsupported Min Key 0xFF unsupported

      Incomplete mapping

      The mapping is incomplete. The unsupported mappings are indicated in the table above.

      Example
      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create byte vector\n    std::vector<std::uint8_t> v = {0x1b, 0x00, 0x00, 0x00, 0x08, 0x63, 0x6f, 0x6d,\n                                   0x70, 0x61, 0x63, 0x74, 0x00, 0x01, 0x10, 0x73,\n                                   0x63, 0x68, 0x65, 0x6d, 0x61, 0x00, 0x00, 0x00,\n                                   0x00, 0x00, 0x00\n                                  };\n\n    // deserialize it with BSON\n    json j = json::from_bson(v);\n\n    // print the deserialized JSON value\n    std::cout << std::setw(2) << j << std::endl;\n}\n

      Output:

      {\n  \"compact\": true,\n  \"schema\": 0\n}\n
      "},{"location":"features/binary_formats/cbor/","title":"CBOR","text":"

      The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation.

      References

      • CBOR Website - the main source on CBOR
      • CBOR Playground - an interactive webpage to translate between JSON and CBOR
      • RFC 7049 - the CBOR specification
      "},{"location":"features/binary_formats/cbor/#serialization","title":"Serialization","text":"

      The library uses the following mapping from JSON values types to CBOR types according to the CBOR specification (RFC 7049):

      JSON value type value/range CBOR type first byte null null Null 0xF6 boolean true True 0xF5 boolean false False 0xF4 number_integer -9223372036854775808..-2147483649 Negative integer (8 bytes follow) 0x3B number_integer -2147483648..-32769 Negative integer (4 bytes follow) 0x3A number_integer -32768..-129 Negative integer (2 bytes follow) 0x39 number_integer -128..-25 Negative integer (1 byte follow) 0x38 number_integer -24..-1 Negative integer 0x20..0x37 number_integer 0..23 Integer 0x00..0x17 number_integer 24..255 Unsigned integer (1 byte follow) 0x18 number_integer 256..65535 Unsigned integer (2 bytes follow) 0x19 number_integer 65536..4294967295 Unsigned integer (4 bytes follow) 0x1A number_integer 4294967296..18446744073709551615 Unsigned integer (8 bytes follow) 0x1B number_unsigned 0..23 Integer 0x00..0x17 number_unsigned 24..255 Unsigned integer (1 byte follow) 0x18 number_unsigned 256..65535 Unsigned integer (2 bytes follow) 0x19 number_unsigned 65536..4294967295 Unsigned integer (4 bytes follow) 0x1A number_unsigned 4294967296..18446744073709551615 Unsigned integer (8 bytes follow) 0x1B number_float any value representable by a float Single-Precision Float 0xFA number_float any value NOT representable by a float Double-Precision Float 0xFB string length: 0..23 UTF-8 string 0x60..0x77 string length: 23..255 UTF-8 string (1 byte follow) 0x78 string length: 256..65535 UTF-8 string (2 bytes follow) 0x79 string length: 65536..4294967295 UTF-8 string (4 bytes follow) 0x7A string length: 4294967296..18446744073709551615 UTF-8 string (8 bytes follow) 0x7B array size: 0..23 array 0x80..0x97 array size: 23..255 array (1 byte follow) 0x98 array size: 256..65535 array (2 bytes follow) 0x99 array size: 65536..4294967295 array (4 bytes follow) 0x9A array size: 4294967296..18446744073709551615 array (8 bytes follow) 0x9B object size: 0..23 map 0xA0..0xB7 object size: 23..255 map (1 byte follow) 0xB8 object size: 256..65535 map (2 bytes follow) 0xB9 object size: 65536..4294967295 map (4 bytes follow) 0xBA object size: 4294967296..18446744073709551615 map (8 bytes follow) 0xBB binary size: 0..23 byte string 0x40..0x57 binary size: 23..255 byte string (1 byte follow) 0x58 binary size: 256..65535 byte string (2 bytes follow) 0x59 binary size: 65536..4294967295 byte string (4 bytes follow) 0x5A binary size: 4294967296..18446744073709551615 byte string (8 bytes follow) 0x5B

      Binary values with subtype are mapped to tagged values (0xD8..0xDB) depending on the subtype, followed by a byte string, see \"binary\" cells in the table above.

      Complete mapping

      The mapping is complete in the sense that any JSON value type can be converted to a CBOR value.

      NaN/infinity handling

      If NaN or Infinity are stored inside a JSON number, they are serialized properly. This behavior differs from the normal JSON serialization which serializes NaN or Infinity to null.

      Unused CBOR types

      The following CBOR types are not used in the conversion:

      • UTF-8 strings terminated by \"break\" (0x7F)
      • arrays terminated by \"break\" (0x9F)
      • maps terminated by \"break\" (0xBF)
      • byte strings terminated by \"break\" (0x5F)
      • date/time (0xC0..0xC1)
      • bignum (0xC2..0xC3)
      • decimal fraction (0xC4)
      • bigfloat (0xC5)
      • expected conversions (0xD5..0xD7)
      • simple values (0xE0..0xF3, 0xF8)
      • undefined (0xF7)
      • half-precision floats (0xF9)
      • break (0xFF)

      Tagged items

      Binary subtypes will be serialized as tagged items. See binary values for an example.

      Example
      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON value\n    json j = R\"({\"compact\": true, \"schema\": 0})\"_json;\n\n    // serialize it to CBOR\n    std::vector<std::uint8_t> v = json::to_cbor(j);\n\n    // print the vector content\n    for (auto& byte : v)\n    {\n        std::cout << \"0x\" << std::hex << std::setw(2) << std::setfill('0') << (int)byte << \" \";\n    }\n    std::cout << std::endl;\n}\n

      Output:

      0xa2 0x67 0x63 0x6f 0x6d 0x70 0x61 0x63 0x74 0xf5 0x66 0x73 0x63 0x68 0x65 0x6d 0x61 0x00 \n
      "},{"location":"features/binary_formats/cbor/#deserialization","title":"Deserialization","text":"

      The library maps CBOR types to JSON value types as follows:

      CBOR type JSON value type first byte Integer number_unsigned 0x00..0x17 Unsigned integer number_unsigned 0x18 Unsigned integer number_unsigned 0x19 Unsigned integer number_unsigned 0x1A Unsigned integer number_unsigned 0x1B Negative integer number_integer 0x20..0x37 Negative integer number_integer 0x38 Negative integer number_integer 0x39 Negative integer number_integer 0x3A Negative integer number_integer 0x3B Byte string binary 0x40..0x57 Byte string binary 0x58 Byte string binary 0x59 Byte string binary 0x5A Byte string binary 0x5B UTF-8 string string 0x60..0x77 UTF-8 string string 0x78 UTF-8 string string 0x79 UTF-8 string string 0x7A UTF-8 string string 0x7B UTF-8 string string 0x7F array array 0x80..0x97 array array 0x98 array array 0x99 array array 0x9A array array 0x9B array array 0x9F map object 0xA0..0xB7 map object 0xB8 map object 0xB9 map object 0xBA map object 0xBB map object 0xBF False false 0xF4 True true 0xF5 Null null 0xF6 Half-Precision Float number_float 0xF9 Single-Precision Float number_float 0xFA Double-Precision Float number_float 0xFB

      Incomplete mapping

      The mapping is incomplete in the sense that not all CBOR types can be converted to a JSON value. The following CBOR types are not supported and will yield parse errors:

      • date/time (0xC0..0xC1)
      • bignum (0xC2..0xC3)
      • decimal fraction (0xC4)
      • bigfloat (0xC5)
      • expected conversions (0xD5..0xD7)
      • simple values (0xE0..0xF3, 0xF8)
      • undefined (0xF7)

      Object keys

      CBOR allows map keys of any type, whereas JSON only allows strings as keys in object values. Therefore, CBOR maps with keys other than UTF-8 strings are rejected.

      Tagged items

      Tagged items will throw a parse error by default. They can be ignored by passing cbor_tag_handler_t::ignore to function from_cbor. They can be stored by passing cbor_tag_handler_t::store to function from_cbor.

      Example
      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create byte vector\n    std::vector<std::uint8_t> v = {0xa2, 0x67, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x63,\n                                   0x74, 0xf5, 0x66, 0x73, 0x63, 0x68, 0x65, 0x6d,\n                                   0x61, 0x00\n                                  };\n\n    // deserialize it with CBOR\n    json j = json::from_cbor(v);\n\n    // print the deserialized JSON value\n    std::cout << std::setw(2) << j << std::endl;\n}\n

      Output:

      {\n  \"compact\": true,\n  \"schema\": 0\n}\n
      "},{"location":"features/binary_formats/messagepack/","title":"MessagePack","text":"

      MessagePack is an efficient binary serialization format. It lets you exchange data among multiple languages like JSON. But it's faster and smaller. Small integers are encoded into a single byte, and typical short strings require only one extra byte in addition to the strings themselves.

      References

      • MessagePack website
      • MessagePack specification
      "},{"location":"features/binary_formats/messagepack/#serialization","title":"Serialization","text":"

      The library uses the following mapping from JSON values types to MessagePack types according to the MessagePack specification:

      JSON value type value/range MessagePack type first byte null null nil 0xC0 boolean true true 0xC3 boolean false false 0xC2 number_integer -9223372036854775808..-2147483649 int64 0xD3 number_integer -2147483648..-32769 int32 0xD2 number_integer -32768..-129 int16 0xD1 number_integer -128..-33 int8 0xD0 number_integer -32..-1 negative fixint 0xE0..0xFF number_integer 0..127 positive fixint 0x00..0x7F number_integer 128..255 uint 8 0xCC number_integer 256..65535 uint 16 0xCD number_integer 65536..4294967295 uint 32 0xCE number_integer 4294967296..18446744073709551615 uint 64 0xCF number_unsigned 0..127 positive fixint 0x00..0x7F number_unsigned 128..255 uint 8 0xCC number_unsigned 256..65535 uint 16 0xCD number_unsigned 65536..4294967295 uint 32 0xCE number_unsigned 4294967296..18446744073709551615 uint 64 0xCF number_float any value representable by a float float 32 0xCA number_float any value NOT representable by a float float 64 0xCB string length: 0..31 fixstr 0xA0..0xBF string length: 32..255 str 8 0xD9 string length: 256..65535 str 16 0xDA string length: 65536..4294967295 str 32 0xDB array size: 0..15 fixarray 0x90..0x9F array size: 16..65535 array 16 0xDC array size: 65536..4294967295 array 32 0xDD object size: 0..15 fix map 0x80..0x8F object size: 16..65535 map 16 0xDE object size: 65536..4294967295 map 32 0xDF binary size: 0..255 bin 8 0xC4 binary size: 256..65535 bin 16 0xC5 binary size: 65536..4294967295 bin 32 0xC6

      Complete mapping

      The mapping is complete in the sense that any JSON value type can be converted to a MessagePack value.

      Any MessagePack output created by to_msgpack can be successfully parsed by from_msgpack.

      Size constraints

      The following values can not be converted to a MessagePack value:

      • strings with more than 4294967295 bytes
      • byte strings with more than 4294967295 bytes
      • arrays with more than 4294967295 elements
      • objects with more than 4294967295 elements

      NaN/infinity handling

      If NaN or Infinity are stored inside a JSON number, they are serialized properly in contrast to the dump function which serializes NaN or Infinity to null.

      Example
      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON value\n    json j = R\"({\"compact\": true, \"schema\": 0})\"_json;\n\n    // serialize it to MessagePack\n    std::vector<std::uint8_t> v = json::to_msgpack(j);\n\n    // print the vector content\n    for (auto& byte : v)\n    {\n        std::cout << \"0x\" << std::hex << std::setw(2) << std::setfill('0') << (int)byte << \" \";\n    }\n    std::cout << std::endl;\n}\n

      Output:

      0x82 0xa7 0x63 0x6f 0x6d 0x70 0x61 0x63 0x74 0xc3 0xa6 0x73 0x63 0x68 0x65 0x6d 0x61 0x00 \n
      "},{"location":"features/binary_formats/messagepack/#deserialization","title":"Deserialization","text":"

      The library maps MessagePack types to JSON value types as follows:

      MessagePack type JSON value type first byte positive fixint number_unsigned 0x00..0x7F fixmap object 0x80..0x8F fixarray array 0x90..0x9F fixstr string 0xA0..0xBF nil null 0xC0 false false 0xC2 true true 0xC3 float 32 number_float 0xCA float 64 number_float 0xCB uint 8 number_unsigned 0xCC uint 16 number_unsigned 0xCD uint 32 number_unsigned 0xCE uint 64 number_unsigned 0xCF int 8 number_integer 0xD0 int 16 number_integer 0xD1 int 32 number_integer 0xD2 int 64 number_integer 0xD3 str 8 string 0xD9 str 16 string 0xDA str 32 string 0xDB array 16 array 0xDC array 32 array 0xDD map 16 object 0xDE map 32 object 0xDF bin 8 binary 0xC4 bin 16 binary 0xC5 bin 32 binary 0xC6 ext 8 binary 0xC7 ext 16 binary 0xC8 ext 32 binary 0xC9 fixext 1 binary 0xD4 fixext 2 binary 0xD5 fixext 4 binary 0xD6 fixext 8 binary 0xD7 fixext 16 binary 0xD8 negative fixint number_integer 0xE0-0xFF

      Info

      Any MessagePack output created by to_msgpack can be successfully parsed by from_msgpack.

      Example
      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create byte vector\n    std::vector<std::uint8_t> v = {0x82, 0xa7, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x63,\n                                   0x74, 0xc3, 0xa6, 0x73, 0x63, 0x68, 0x65, 0x6d,\n                                   0x61, 0x00\n                                  };\n\n    // deserialize it with MessagePack\n    json j = json::from_msgpack(v);\n\n    // print the deserialized JSON value\n    std::cout << std::setw(2) << j << std::endl;\n}\n

      Output:

      {\n  \"compact\": true,\n  \"schema\": 0\n}\n
      "},{"location":"features/binary_formats/ubjson/","title":"UBJSON","text":"

      Universal Binary JSON (UBJSON) is a binary form directly imitating JSON, but requiring fewer bytes of data. It aims to achieve the generality of JSON, combined with being much easier to process than JSON.

      References

      • UBJSON Website
      "},{"location":"features/binary_formats/ubjson/#serialization","title":"Serialization","text":"

      The library uses the following mapping from JSON values types to UBJSON types according to the UBJSON specification:

      JSON value type value/range UBJSON type marker null null null Z boolean true true T boolean false false F number_integer -9223372036854775808..-2147483649 int64 L number_integer -2147483648..-32769 int32 l number_integer -32768..-129 int16 I number_integer -128..127 int8 i number_integer 128..255 uint8 U number_integer 256..32767 int16 I number_integer 32768..2147483647 int32 l number_integer 2147483648..9223372036854775807 int64 L number_unsigned 0..127 int8 i number_unsigned 128..255 uint8 U number_unsigned 256..32767 int16 I number_unsigned 32768..2147483647 int32 l number_unsigned 2147483648..9223372036854775807 int64 L number_unsigned 2147483649..18446744073709551615 high-precision H number_float any value float64 D string with shortest length indicator string S array see notes on optimized format array [ object see notes on optimized format map {

      Complete mapping

      The mapping is complete in the sense that any JSON value type can be converted to a UBJSON value.

      Any UBJSON output created by to_ubjson can be successfully parsed by from_ubjson.

      Size constraints

      The following values can not be converted to a UBJSON value:

      • strings with more than 9223372036854775807 bytes (theoretical)

      Unused UBJSON markers

      The following markers are not used in the conversion:

      • Z: no-op values are not created.
      • C: single-byte strings are serialized with S markers.

      NaN/infinity handling

      If NaN or Infinity are stored inside a JSON number, they are serialized properly. This behavior differs from the dump() function which serializes NaN or Infinity to null.

      Optimized formats

      The optimized formats for containers are supported: Parameter use_size adds size information to the beginning of a container and removes the closing marker. Parameter use_type further checks whether all elements of a container have the same type and adds the type marker to the beginning of the container. The use_type parameter must only be used together with use_size = true.

      Note that use_size = true alone may result in larger representations - the benefit of this parameter is that the receiving side is immediately informed on the number of elements of the container.

      Binary values

      If the JSON data contains the binary type, the value stored is a list of integers, as suggested by the UBJSON documentation. In particular, this means that serialization and the deserialization of a JSON containing binary values into UBJSON and back will result in a different JSON object.

      Example
      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\n// function to print UBJSON's diagnostic format\nvoid print_byte(uint8_t byte)\n{\n    if (32 < byte and byte < 128)\n    {\n        std::cout << (char)byte;\n    }\n    else\n    {\n        std::cout << (int)byte;\n    }\n}\n\nint main()\n{\n    // create a JSON value\n    json j = R\"({\"compact\": true, \"schema\": false})\"_json;\n\n    // serialize it to UBJSON\n    std::vector<std::uint8_t> v = json::to_ubjson(j);\n\n    // print the vector content\n    for (auto& byte : v)\n    {\n        print_byte(byte);\n    }\n    std::cout << std::endl;\n\n    // create an array of numbers\n    json array = {1, 2, 3, 4, 5, 6, 7, 8};\n\n    // serialize it to UBJSON using default representation\n    std::vector<std::uint8_t> v_array = json::to_ubjson(array);\n    // serialize it to UBJSON using size optimization\n    std::vector<std::uint8_t> v_array_size = json::to_ubjson(array, true);\n    // serialize it to UBJSON using type optimization\n    std::vector<std::uint8_t> v_array_size_and_type = json::to_ubjson(array, true, true);\n\n    // print the vector contents\n    for (auto& byte : v_array)\n    {\n        print_byte(byte);\n    }\n    std::cout << std::endl;\n\n    for (auto& byte : v_array_size)\n    {\n        print_byte(byte);\n    }\n    std::cout << std::endl;\n\n    for (auto& byte : v_array_size_and_type)\n    {\n        print_byte(byte);\n    }\n    std::cout << std::endl;\n}\n

      Output:

      {i7compactTi6schemaF}\n[i1i2i3i4i5i6i7i8]\n[#i8i1i2i3i4i5i6i7i8\n[$i#i812345678\n
      "},{"location":"features/binary_formats/ubjson/#deserialization","title":"Deserialization","text":"

      The library maps UBJSON types to JSON value types as follows:

      UBJSON type JSON value type marker no-op no value, next value is read N null null Z false false F true true T float32 number_float d float64 number_float D uint8 number_unsigned U int8 number_integer i int16 number_integer I int32 number_integer l int64 number_integer L string string S char string C array array (optimized values are supported) [ object object (optimized values are supported) {

      Complete mapping

      The mapping is complete in the sense that any UBJSON value can be converted to a JSON value.

      Example
      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create byte vector\n    std::vector<std::uint8_t> v = {0x7B, 0x69, 0x07, 0x63, 0x6F, 0x6D, 0x70, 0x61,\n                                   0x63, 0x74, 0x54, 0x69, 0x06, 0x73, 0x63, 0x68,\n                                   0x65, 0x6D, 0x61, 0x69, 0x00, 0x7D\n                                  };\n\n    // deserialize it with UBJSON\n    json j = json::from_ubjson(v);\n\n    // print the deserialized JSON value\n    std::cout << std::setw(2) << j << std::endl;\n}\n

      Output:

      {\n  \"compact\": true,\n  \"schema\": 0\n}\n
      "},{"location":"features/element_access/","title":"Element Access","text":"

      There are many ways elements in a JSON value can be accessed:

      • unchecked access via operator[]
      • checked access via at
      • access with default value via value
      • iterators
      • JSON pointers
      "},{"location":"features/element_access/checked_access/","title":"Checked access: at","text":""},{"location":"features/element_access/checked_access/#overview","title":"Overview","text":"

      The at member function performs checked access; that is, it returns a reference to the desired value if it exists and throws a basic_json::out_of_range exception otherwise.

      Read access

      Consider the following JSON value:

      {\n    \"name\": \"Mary Smith\",\n    \"age\": 42,\n    \"hobbies\": [\"hiking\", \"reading\"]\n}\n

      Assume the value is parsed to a json variable j.

      expression value j {\"name\": \"Mary Smith\", \"age\": 42, \"hobbies\": [\"hiking\", \"reading\"]} j.at(\"name\") \"Mary Smith\" j.at(\"age\") 42 j.at(\"hobbies\") [\"hiking\", \"reading\"] j.at(\"hobbies\").at(0) \"hiking\" j.at(\"hobbies\").at(1) \"reading\"

      The return value is a reference, so it can be modified by the original value.

      Write access
      j.at(\"name\") = \"John Smith\";\n

      This code produces the following JSON value:

      {\n    \"name\": \"John Smith\",\n    \"age\": 42,\n    \"hobbies\": [\"hiking\", \"reading\"]\n}\n

      When accessing an invalid index (i.e., an index greater than or equal to the array size) or the passed object key is non-existing, an exception is thrown.

      Accessing via invalid index or missing key
      j.at(\"hobbies\").at(3) = \"cooking\";\n

      This code produces the following exception:

      [json.exception.out_of_range.401] array index 3 is out of range\n

      When you extended diagnostic messages are enabled by defining JSON_DIAGNOSTICS, the exception further gives information where the key or index is missing or out of range.

      [json.exception.out_of_range.401] (/hobbies) array index 3 is out of range\n
      "},{"location":"features/element_access/checked_access/#notes","title":"Notes","text":"

      Exceptions

      • at can only be used with objects (with a string argument) or with arrays (with a numeric argument). For other types, a basic_json::type_error is thrown.
      • basic_json::out_of_range exception exceptions are thrown if the provided key is not found in an object or the provided index is invalid.
      "},{"location":"features/element_access/checked_access/#summary","title":"Summary","text":"scenario non-const value const value access to existing object key reference to existing value is returned const reference to existing value is returned access to valid array index reference to existing value is returned const reference to existing value is returned access to non-existing object key basic_json::out_of_range exception is thrown basic_json::out_of_range exception is thrown access to invalid array index basic_json::out_of_range exception is thrown basic_json::out_of_range exception is thrown"},{"location":"features/element_access/default_value/","title":"Access with default value: value","text":""},{"location":"features/element_access/default_value/#overview","title":"Overview","text":"

      In many situations such as configuration files, missing values are not exceptional, but may be treated as if a default value was present.

      Example

      Consider the following JSON value:

      {\n    \"logOutput\": \"result.log\",\n    \"append\": true\n}\n

      Assume the value is parsed to a json variable j.

      expression value j {\"logOutput\": \"result.log\", \"append\": true} j.value(\"logOutput\", \"logfile.log\") \"result.log\" j.value(\"append\", true) true j.value(\"append\", false) true j.value(\"logLevel\", \"verbose\") \"verbose\""},{"location":"features/element_access/default_value/#note","title":"Note","text":"

      Exceptions

      • value can only be used with objects. For other types, a basic_json::type_error is thrown.
      "},{"location":"features/element_access/unchecked_access/","title":"Unchecked access: operator[]","text":""},{"location":"features/element_access/unchecked_access/#overview","title":"Overview","text":"

      Elements in a JSON object and a JSON array can be accessed via operator[] similar to a std::map and a std::vector, respectively.

      Read access

      Consider the following JSON value:

      {\n    \"name\": \"Mary Smith\",\n    \"age\": 42,\n    \"hobbies\": [\"hiking\", \"reading\"]\n}\n

      Assume the value is parsed to a json variable j.

      expression value j {\"name\": \"Mary Smith\", \"age\": 42, \"hobbies\": [\"hiking\", \"reading\"]} j[\"name\"] \"Mary Smith\" j[\"age\"] 42 j[\"hobbies\"] [\"hiking\", \"reading\"] j[\"hobbies\"][0] \"hiking\" j[\"hobbies\"][1] \"reading\"

      The return value is a reference, so it can modify the original value. In case the passed object key is non-existing, a null value is inserted which can be immediately be overwritten.

      Write access
      j[\"name\"] = \"John Smith\";\nj[\"maidenName\"] = \"Jones\";\n

      This code produces the following JSON value:

      {\n    \"name\": \"John Smith\",\n    \"maidenName\": \"Jones\",\n    \"age\": 42,\n    \"hobbies\": [\"hiking\", \"reading\"]\n}\n

      When accessing an invalid index (i.e., an index greater than or equal to the array size), the JSON array is resized such that the passed index is the new maximal index. Intermediate values are filled with null.

      Filling up arrays with null values
      j[\"hobbies\"][0] = \"running\";\nj[\"hobbies\"][3] = \"cooking\";\n

      This code produces the following JSON value:

      {\n    \"name\": \"John Smith\",\n    \"maidenName\": \"Jones\",\n    \"age\": 42,\n    \"hobbies\": [\"running\", \"reading\", null, \"cooking\"]\n}\n
      "},{"location":"features/element_access/unchecked_access/#notes","title":"Notes","text":"

      Design rationale

      The library behaves differently to std::vector and std::map:

      • std::vector::operator[] never inserts a new element.
      • std::map::operator[] is not available for const values.

      The type json wraps all JSON value types. It would be impossible to remove operator[] for const objects. At the same time, inserting elements for non-const objects is really convenient as it avoids awkward insert calls. To this end, we decided to have an inserting non-const behavior for both arrays and objects.

      Info

      The access is unchecked. In case the passed object key does not exist or the passed array index is invalid, no exception is thrown.

      Danger

      • It is undefined behavior to access a const object with a non-existing key.
      • It is undefined behavior to access a const array with an invalid index.
      • In debug mode, an assertion will fire in both cases. You can disable assertions by defining the preprocessor symbol NDEBUG or redefine the macro JSON_ASSERT(x). See the documentation on runtime assertions for more information.

      Exceptions

      operator[] can only be used with objects (with a string argument) or with arrays (with a numeric argument). For other types, a basic_json::type_error is thrown.

      "},{"location":"features/element_access/unchecked_access/#summary","title":"Summary","text":"scenario non-const value const value access to existing object key reference to existing value is returned const reference to existing value is returned access to valid array index reference to existing value is returned const reference to existing value is returned access to non-existing object key reference to newly inserted null value is returned undefined behavior; runtime assertion in debug mode access to invalid array index reference to newly inserted null value is returned; any index between previous maximal index and passed index are filled with null undefined behavior; runtime assertion in debug mode"},{"location":"features/parsing/","title":"Parsing","text":"

      Note

      This page is under construction.

      "},{"location":"features/parsing/#input","title":"Input","text":""},{"location":"features/parsing/#sax-vs-dom-parsing","title":"SAX vs. DOM parsing","text":""},{"location":"features/parsing/#exceptions","title":"Exceptions","text":"

      See parsing and exceptions.

      "},{"location":"features/parsing/json_lines/","title":"JSON Lines","text":"

      The JSON Lines format is a text format of newline-delimited JSON. In particular:

      1. The input must be UTF-8 encoded.
      2. Every line must be a valid JSON value.
      3. The line separator must be \\n. As \\r is silently ignored, \\r\\n is also supported.
      4. The final character may be \\n, but is not required to be one.

      JSON Text example

      {\"name\": \"Gilbert\", \"wins\": [[\"straight\", \"7\u2663\"], [\"one pair\", \"10\u2665\"]]}\n{\"name\": \"Alexa\", \"wins\": [[\"two pair\", \"4\u2660\"], [\"two pair\", \"9\u2660\"]]}\n{\"name\": \"May\", \"wins\": []}\n{\"name\": \"Deloise\", \"wins\": [[\"three of a kind\", \"5\u2663\"]]}\n

      JSON Lines input with more than one value is treated as invalid JSON by the parse or accept functions. To process it line by line, functions like std::getline can be used:

      Example: Parse JSON Text input line by line

      The example below demonstrates how JSON Lines can be processed.

      #include <sstream>\n#include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // JSON Lines (see https://jsonlines.org)\n    std::stringstream input;\n    input << R\"({\"name\": \"Gilbert\", \"wins\": [[\"straight\", \"7\u2663\"], [\"one pair\", \"10\u2665\"]]}\n{\"name\": \"Alexa\", \"wins\": [[\"two pair\", \"4\u2660\"], [\"two pair\", \"9\u2660\"]]}\n{\"name\": \"May\", \"wins\": []}\n{\"name\": \"Deloise\", \"wins\": [[\"three of a kind\", \"5\u2663\"]]}\n)\";\n\n    std::string line;\n    while (std::getline(input, line))\n    {\n        std::cout << json::parse(line) << std::endl;\n    }\n}\n

      Output:

      {\"name\":\"Gilbert\",\"wins\":[[\"straight\",\"7\u2663\"],[\"one pair\",\"10\u2665\"]]}\n{\"name\":\"Alexa\",\"wins\":[[\"two pair\",\"4\u2660\"],[\"two pair\",\"9\u2660\"]]}\n{\"name\":\"May\",\"wins\":[]}\n{\"name\":\"Deloise\",\"wins\":[[\"three of a kind\",\"5\u2663\"]]}\n

      Note

      Using operator>> like

      json j;\nwhile (input >> j)\n{\n    std::cout << j << std::endl;\n}\n

      with a JSON Lines input does not work, because the parser will try to parse one value after the last one.

      "},{"location":"features/parsing/parse_exceptions/","title":"Parsing and Exceptions","text":"

      When the input is not valid JSON, an exception of type parse_error is thrown. This exception contains the position in the input where the error occurred, together with a diagnostic message and the last read input token. The exceptions page contains a list of examples for parse error exceptions. In case you process untrusted input, always enclose your code with a try/catch block, like

      json j;\ntry\n{\n    j = json::parse(my_input);\n}\ncatch (json::parse_error& ex)\n{\n    std::cerr << \"parse error at byte \" << ex.byte << std::endl;\n}\n

      In case exceptions are undesired or not supported by the environment, there are different ways to proceed:

      "},{"location":"features/parsing/parse_exceptions/#switch-off-exceptions","title":"Switch off exceptions","text":"

      The parse() function accepts a bool parameter allow_exceptions which controls whether an exception is thrown when a parse error occurs (true, default) or whether a discarded value should be returned (false).

      json j = json::parse(my_input, nullptr, false);\nif (j.is_discarded())\n{\n    std::cerr << \"parse error\" << std::endl;\n}\n

      Note there is no diagnostic information available in this scenario.

      "},{"location":"features/parsing/parse_exceptions/#use-accept-function","title":"Use accept() function","text":"

      Alternatively, function accept() can be used which does not return a json value, but a bool indicating whether the input is valid JSON.

      if (!json::accept(my_input))\n{\n    std::cerr << \"parse error\" << std::endl;\n}\n

      Again, there is no diagnostic information available.

      "},{"location":"features/parsing/parse_exceptions/#user-defined-sax-interface","title":"User-defined SAX interface","text":"

      Finally, you can implement the SAX interface and decide what should happen in case of a parse error.

      This function has the following interface:

      bool parse_error(std::size_t position,\n                 const std::string& last_token,\n                 const json::exception& ex);\n

      The return value indicates whether the parsing should continue, so the function should usually return false.

      Example
      #include <iostream>\n#include \"json.hpp\"\n\nusing json = nlohmann::json;\n\nclass sax_no_exception : public nlohmann::detail::json_sax_dom_parser<json>\n{\n  public:\n    sax_no_exception(json& j)\n      : nlohmann::detail::json_sax_dom_parser<json>(j, false)\n    {}\n\n    bool parse_error(std::size_t position,\n                     const std::string& last_token,\n                     const json::exception& ex)\n    {\n        std::cerr << \"parse error at input byte \" << position << \"\\n\"\n                  << ex.what() << \"\\n\"\n                  << \"last read: \\\"\" << last_token << \"\\\"\"\n                  << std::endl;\n        return false;\n    }\n};\n\nint main()\n{\n    std::string myinput = \"[1,2,3,]\";\n\n    json result;\n    sax_no_exception sax(result);\n\n    bool parse_result = json::sax_parse(myinput, &sax);\n    if (!parse_result)\n    {\n        std::cerr << \"parsing unsuccessful!\" << std::endl;\n    }\n\n    std::cout << \"parsed value: \" << result << std::endl;\n}\n

      Output:

      parse error at input byte 8\n[json.exception.parse_error.101] parse error at line 1, column 8: syntax error while parsing value - unexpected ']'; expected '[', '{', or a literal\nlast read: \"3,]\"\nparsing unsuccessful!\nparsed value: [1,2,3]\n
      "},{"location":"features/parsing/parser_callbacks/","title":"Parser Callbacks","text":""},{"location":"features/parsing/parser_callbacks/#overview","title":"Overview","text":"

      With a parser callback function, the result of parsing a JSON text can be influenced. When passed to parse, it is called on certain events (passed as parse_event_t via parameter event) with a set recursion depth depth and context JSON value parsed. The return value of the callback function is a boolean indicating whether the element that emitted the callback shall be kept or not.

      The type of the callback function is:

      template<typename BasicJsonType>\nusing parser_callback_t =\n    std::function<bool(int depth, parse_event_t event, BasicJsonType& parsed)>;\n
      "},{"location":"features/parsing/parser_callbacks/#callback-event-types","title":"Callback event types","text":"

      We distinguish six scenarios (determined by the event type) in which the callback function can be called. The following table describes the values of the parameters depth, event, and parsed.

      parameter event description parameter depth parameter parsed parse_event_t::object_start the parser read { and started to process a JSON object depth of the parent of the JSON object a JSON value with type discarded parse_event_t::key the parser read a key of a value in an object depth of the currently parsed JSON object a JSON string containing the key parse_event_t::object_end the parser read } and finished processing a JSON object depth of the parent of the JSON object the parsed JSON object parse_event_t::array_start the parser read [ and started to process a JSON array depth of the parent of the JSON array a JSON value with type discarded parse_event_t::array_end the parser read ] and finished processing a JSON array depth of the parent of the JSON array the parsed JSON array parse_event_t::value the parser finished reading a JSON value depth of the value the parsed JSON value Example

      When parsing the following JSON text,

      {\n    \"name\": \"Berlin\",\n    \"location\": [\n        52.519444,\n        13.406667\n    ]\n}\n

      these calls are made to the callback function:

      event depth parsed object_start 0 discarded key 1 \"name\" value 1 \"Berlin\" key 1 \"location\" array_start 1 discarded value 2 52.519444 value 2 13.406667 array_end 1 [52.519444,13.406667] object_end 0 {\"location\":[52.519444,13.406667],\"name\":\"Berlin\"}"},{"location":"features/parsing/parser_callbacks/#return-value","title":"Return value","text":"

      Discarding a value (i.e., returning false) has different effects depending on the context in which the function was called:

      • Discarded values in structured types are skipped. That is, the parser will behave as if the discarded value was never read.
      • In case a value outside a structured type is skipped, it is replaced with null. This case happens if the top-level element is skipped.
      Example

      The example below demonstrates the parse() function with and without callback function.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, 38793]\n        }\n    }\n    )\";\n\n    // parse and serialize JSON\n    json j_complete = json::parse(text);\n    std::cout << std::setw(4) << j_complete << \"\\n\\n\";\n\n    // define parser callback\n    json::parser_callback_t cb = [](int depth, json::parse_event_t event, json & parsed)\n    {\n        // skip object elements with key \"Thumbnail\"\n        if (event == json::parse_event_t::key and parsed == json(\"Thumbnail\"))\n        {\n            return false;\n        }\n        else\n        {\n            return true;\n        }\n    };\n\n    // parse (with callback) and serialize JSON\n    json j_filtered = json::parse(text, cb);\n    std::cout << std::setw(4) << j_filtered << '\\n';\n}\n

      Output:

      {\n    \"Image\": {\n        \"Animated\": false,\n        \"Height\": 600,\n        \"IDs\": [\n            116,\n            943,\n            234,\n            38793\n        ],\n        \"Thumbnail\": {\n            \"Height\": 125,\n            \"Url\": \"http://www.example.com/image/481989943\",\n            \"Width\": 100\n        },\n        \"Title\": \"View from 15th Floor\",\n        \"Width\": 800\n    }\n}\n\n{\n    \"Image\": {\n        \"Animated\": false,\n        \"Height\": 600,\n        \"IDs\": [\n            116,\n            943,\n            234,\n            38793\n        ],\n        \"Title\": \"View from 15th Floor\",\n        \"Width\": 800\n    }\n}\n
      "},{"location":"features/parsing/sax_interface/","title":"SAX Interface","text":"

      The library uses a SAX-like interface with the following functions:

      classDiagram\n\nclass sax_t [\"json::sax_t\"] {\n    <<interface>>\n    +bool null()*\n\n    +bool boolean(bool val)*\n\n    +bool number_integer(number_integer_t val)*\n    +bool number_unsigned(number_unsigned_t val)*\n\n    +bool number_float(number_float_t val, const string_t& s)*\n\n    +bool string(string_t& val)*\n    +bool binary(binary_t& val)*\n\n    +bool start_object(std::size_t elements)*\n    +bool end_object()*\n    +bool start_array(std::size_t elements)*\n    +bool end_array()*\n    +bool key(string_t& val)*\n\n    +bool parse_error(std::size_t position, const std::string& last_token, const json::exception& ex)*\n}
      // called when null is parsed\nbool null();\n\n// called when a boolean is parsed; value is passed\nbool boolean(bool val);\n\n// called when a signed or unsigned integer number is parsed; value is passed\nbool number_integer(number_integer_t val);\nbool number_unsigned(number_unsigned_t val);\n\n// called when a floating-point number is parsed; value and original string is passed\nbool number_float(number_float_t val, const string_t& s);\n\n// called when a string is parsed; value is passed and can be safely moved away\nbool string(string_t& val);\n// called when a binary value is parsed; value is passed and can be safely moved away\nbool binary(binary& val);\n\n// called when an object or array begins or ends, resp. The number of elements is passed (or -1 if not known)\nbool start_object(std::size_t elements);\nbool end_object();\nbool start_array(std::size_t elements);\nbool end_array();\n// called when an object key is parsed; value is passed and can be safely moved away\nbool key(string_t& val);\n\n// called when a parse error occurs; byte position, the last token, and an exception is passed\nbool parse_error(std::size_t position, const std::string& last_token, const json::exception& ex);\n

      The return value of each function determines whether parsing should proceed.

      To implement your own SAX handler, proceed as follows:

      1. Implement the SAX interface in a class. You can use class nlohmann::json_sax<json> as base class, but you can also use any class where the functions described above are implemented and public.
      2. Create an object of your SAX interface class, e.g. my_sax.
      3. Call bool json::sax_parse(input, &my_sax); where the first parameter can be any input like a string or an input stream and the second parameter is a pointer to your SAX interface.

      Note the sax_parse function only returns a bool indicating the result of the last executed SAX event. It does not return json value - it is up to you to decide what to do with the SAX events. Furthermore, no exceptions are thrown in case of a parse error - it is up to you what to do with the exception object passed to your parse_error implementation. Internally, the SAX interface is used for the DOM parser (class json_sax_dom_parser) as well as the acceptor (json_sax_acceptor), see file json_sax.hpp.

      "},{"location":"features/parsing/sax_interface/#see-also","title":"See also","text":"
      • json_sax - documentation of the SAX interface
      • sax_parse - SAX parser
      "},{"location":"features/types/","title":"Types","text":"

      This page gives an overview how JSON values are stored and how this can be configured.

      "},{"location":"features/types/#overview","title":"Overview","text":"

      By default, JSON values are stored as follows:

      JSON type C++ type object std::map<std::string, basic_json> array std::vector<basic_json> null std::nullptr_t string std::string boolean bool number std::int64_t, std::uint64_t, and double

      Note there are three different types for numbers - when parsing JSON text, the best fitting type is chosen.

      "},{"location":"features/types/#storage","title":"Storage","text":"
      classDiagram\n\nclass value_t {\n    <<enumeration>>\n    null\n    object\n    array\n    string\n    boolean\n    number_integer\n    number_unsigned\n    number_float\n    binary\n    discarded\n}\n\nclass json_value {\n    <<union>>\n    object_t* object\n    array_t* array\n    string_t* string\n    binary_t* binary\n    boolean_t boolean\n    number_integer_t number_integer\n    number_unsigned_t number_unsigned\n    number_float_t number_float\n}\n\nclass basic_json {\n    -value_t m_type\n    -json_value m_value\n    +typedef object_t\n    +typedef array_t\n    +typedef binary_t\n    +typedef boolean_t\n    +typedef number_integer_t\n    +typedef number_unsigned_t\n    +typedef number_float_t\n}\n\nbasic_json .. json_value\nbasic_json .. value_t
      "},{"location":"features/types/#template-arguments","title":"Template arguments","text":"

      The data types to store a JSON value are derived from the template arguments passed to class basic_json:

      template<\n    template<typename U, typename V, typename... Args> class ObjectType = std::map,\n    template<typename U, typename... Args> class ArrayType = std::vector,\n    class StringType = std::string,\n    class BooleanType = bool,\n    class NumberIntegerType = std::int64_t,\n    class NumberUnsignedType = std::uint64_t,\n    class NumberFloatType = double,\n    template<typename U> class AllocatorType = std::allocator,\n    template<typename T, typename SFINAE = void> class JSONSerializer = adl_serializer,\n    class BinaryType = std::vector<std::uint8_t>\n>\nclass basic_json;\n

      Type json is an alias for basic_json<> and uses the default types.

      From the template arguments, the following types are derived:

      using object_comparator_t = std::less<>;\nusing object_t = ObjectType<StringType, basic_json, object_comparator_t,\n                   AllocatorType<std::pair<const StringType, basic_json>>>;\n\nusing array_t = ArrayType<basic_json, AllocatorType<basic_json>>;\n\nusing string_t = StringType;\n\nusing boolean_t = BooleanType;\n\nusing number_integer_t = NumberIntegerType;\nusing number_unsigned_t = NumberUnsignedType;\nusing number_float_t = NumberFloatType;\n\nusing binary_t = nlohmann::byte_container_with_subtype<BinaryType>;\n
      "},{"location":"features/types/#objects","title":"Objects","text":"

      RFC 8259 describes JSON objects as follows:

      An object is an unordered collection of zero or more name/value pairs, where a name is a string and a value is a string, number, boolean, null, object, or array.

      "},{"location":"features/types/#default-type","title":"Default type","text":"

      With the default values for ObjectType (std::map), StringType (std::string), and AllocatorType (std::allocator), the default value for object_t is:

      std::map<\n  std::string, // key_type\n  basic_json, // value_type\n  std::less<>, // key_compare\n  std::allocator<std::pair<const std::string, basic_json>> // allocator_type\n>\n
      "},{"location":"features/types/#behavior","title":"Behavior","text":"

      The choice of object_t influences the behavior of the JSON class. With the default type, objects have the following behavior:

      • When all names are unique, objects will be interoperable in the sense that all software implementations receiving that object will agree on the name-value mappings.
      • When the names within an object are not unique, it is unspecified which one of the values for a given key will be chosen. For instance, {\"key\": 2, \"key\": 1} could be equal to either {\"key\": 1} or {\"key\": 2}.
      • Internally, name/value pairs are stored in lexicographical order of the names. Objects will also be serialized (see dump) in this order. For instance, both {\"b\": 1, \"a\": 2} and {\"a\": 2, \"b\": 1} will be stored and serialized as {\"a\": 2, \"b\": 1}.
      • When comparing objects, the order of the name/value pairs is irrelevant. This makes objects interoperable in the sense that they will not be affected by these differences. For instance, {\"b\": 1, \"a\": 2} and {\"a\": 2, \"b\": 1} will be treated as equal.
      "},{"location":"features/types/#key-order","title":"Key order","text":"

      The order name/value pairs are added to the object is not preserved by the library. Therefore, iterating an object may return name/value pairs in a different order than they were originally stored. In fact, keys will be traversed in alphabetical order as std::map with std::less is used by default. Please note this behavior conforms to RFC 8259, because any order implements the specified \"unordered\" nature of JSON objects.

      "},{"location":"features/types/#limits","title":"Limits","text":"

      RFC 8259 specifies:

      An implementation may set limits on the maximum depth of nesting.

      In this class, the object's limit of nesting is not explicitly constrained. However, a maximum depth of nesting may be introduced by the compiler or runtime environment. A theoretical limit can be queried by calling the max_size function of a JSON object.

      "},{"location":"features/types/#storage_1","title":"Storage","text":"

      Objects are stored as pointers in a basic_json type. That is, for any access to object values, a pointer of type object_t* must be dereferenced.

      "},{"location":"features/types/#arrays","title":"Arrays","text":"

      RFC 8259 describes JSON arrays as follows:

      An array is an ordered sequence of zero or more values.

      "},{"location":"features/types/#default-type_1","title":"Default type","text":"

      With the default values for ArrayType (std::vector) and AllocatorType (std::allocator), the default value for array_t is:

      std::vector<\n  basic_json, // value_type\n  std::allocator<basic_json> // allocator_type\n>\n
      "},{"location":"features/types/#limits_1","title":"Limits","text":"

      RFC 8259 specifies:

      An implementation may set limits on the maximum depth of nesting.

      In this class, the array's limit of nesting is not explicitly constrained. However, a maximum depth of nesting may be introduced by the compiler or runtime environment. A theoretical limit can be queried by calling the max_size function of a JSON array.

      "},{"location":"features/types/#storage_2","title":"Storage","text":"

      Arrays are stored as pointers in a basic_json type. That is, for any access to array values, a pointer of type array_t* must be dereferenced.

      "},{"location":"features/types/#strings","title":"Strings","text":"

      RFC 8259 describes JSON strings as follows:

      A string is a sequence of zero or more Unicode characters.

      Unicode values are split by the JSON class into byte-sized characters during deserialization.

      "},{"location":"features/types/#default-type_2","title":"Default type","text":"

      With the default values for StringType (std::string), the default value for string_t is std::string.

      "},{"location":"features/types/#encoding","title":"Encoding","text":"

      Strings are stored in UTF-8 encoding. Therefore, functions like std::string::size() or std::string::length() return the number of bytes in the string rather than the number of characters or glyphs.

      "},{"location":"features/types/#string-comparison","title":"String comparison","text":"

      RFC 8259 states:

      Software implementations are typically required to test names of object members for equality. Implementations that transform the textual representation into sequences of Unicode code units and then perform the comparison numerically, code unit by code unit, are interoperable in the sense that implementations will agree in all cases on equality or inequality of two strings. For example, implementations that compare strings with escaped characters unconverted may incorrectly find that \"a\\\\b\" and \"a\\u005Cb\" are not equal.

      This implementation is interoperable as it does compare strings code unit by code unit.

      "},{"location":"features/types/#storage_3","title":"Storage","text":"

      String values are stored as pointers in a basic_json type. That is, for any access to string values, a pointer of type string_t* must be dereferenced.

      "},{"location":"features/types/#booleans","title":"Booleans","text":"

      RFC 8259 implicitly describes a boolean as a type which differentiates the two literals true and false.

      "},{"location":"features/types/#default-type_3","title":"Default type","text":"

      With the default values for BooleanType (bool), the default value for boolean_t is bool.

      "},{"location":"features/types/#storage_4","title":"Storage","text":"

      Boolean values are stored directly inside a basic_json type.

      "},{"location":"features/types/#numbers","title":"Numbers","text":"

      See the number handling article for a detailed discussion on how numbers are handled by this library.

      RFC 8259 describes numbers as follows:

      The representation of numbers is similar to that used in most programming languages. A number is represented in base 10 using decimal digits. It contains an integer component that may be prefixed with an optional minus sign, which may be followed by a fraction part and/or an exponent part. Leading zeros are not allowed. (...) Numeric values that cannot be represented in the grammar below (such as Infinity and NaN) are not permitted.

      This description includes both integer and floating-point numbers. However, C++ allows more precise storage if it is known whether the number is a signed integer, an unsigned integer or a floating-point number. Therefore, three different types, number_integer_t, number_unsigned_t, and number_float_t are used.

      "},{"location":"features/types/#default-types","title":"Default types","text":"

      With the default values for NumberIntegerType (std::int64_t), the default value for number_integer_t is std::int64_t. With the default values for NumberUnsignedType (std::uint64_t), the default value for number_unsigned_t is std::uint64_t. With the default values for NumberFloatType (double), the default value for number_float_t is double.

      "},{"location":"features/types/#default-behavior","title":"Default behavior","text":"
      • The restrictions about leading zeros is not enforced in C++. Instead, leading zeros in integer literals lead to an interpretation as octal number. Internally, the value will be stored as decimal number. For instance, the C++ integer literal 010 will be serialized to 8. During deserialization, leading zeros yield an error.
      • Not-a-number (NaN) values will be serialized to null.
      "},{"location":"features/types/#limits_2","title":"Limits","text":"

      RFC 8259 specifies:

      An implementation may set limits on the range and precision of numbers.

      When the default type is used, the maximal integer number that can be stored is 9223372036854775807 (INT64_MAX) and the minimal integer number that can be stored is -9223372036854775808 (INT64_MIN). Integer numbers that are out of range will yield over/underflow when used in a constructor. During deserialization, too large or small integer numbers will be automatically be stored as number_unsigned_t or number_float_t.

      When the default type is used, the maximal unsigned integer number that can be stored is 18446744073709551615 (UINT64_MAX) and the minimal integer number that can be stored is 0. Integer numbers that are out of range will yield over/underflow when used in a constructor. During deserialization, too large or small integer numbers will be automatically be stored as number_integer_t or number_float_t.

      RFC 8259 further states:

      Note that when such software is used, numbers that are integers and are in the range [-2^{53}+1, 2^{53}-1] are interoperable in the sense that implementations will agree exactly on their numeric values.

      As this range is a subrange of the exactly supported range [INT64_MIN, INT64_MAX], this class's integer type is interoperable.

      RFC 8259 states:

      This specification allows implementations to set limits on the range and precision of numbers accepted. Since software that implements IEEE 754-2008 binary64 (double precision) numbers is generally available and widely used, good interoperability can be achieved by implementations that expect no more precision or range than these provide, in the sense that implementations will approximate JSON numbers within the expected precision.

      This implementation does exactly follow this approach, as it uses double precision floating-point numbers. Note values smaller than -1.79769313486232e+308 and values greater than 1.79769313486232e+308 will be stored as NaN internally and be serialized to null.

      "},{"location":"features/types/#storage_5","title":"Storage","text":"

      Integer number values, unsigned integer number values, and floating-point number values are stored directly inside a basic_json type.

      "},{"location":"features/types/number_handling/","title":"Number Handling","text":"

      This document describes how the library is handling numbers.

      "},{"location":"features/types/number_handling/#background","title":"Background","text":"

      This section briefly summarizes how the JSON specification describes how numbers should be handled.

      "},{"location":"features/types/number_handling/#json-number-syntax","title":"JSON number syntax","text":"

      JSON defines the syntax of numbers as follows:

      RFC 8259, Section 6

      The representation of numbers is similar to that used in most programming languages. A number is represented in base 10 using decimal digits. It contains an integer component that may be prefixed with an optional minus sign, which may be followed by a fraction part and/or an exponent part. Leading zeros are not allowed.

      A fraction part is a decimal point followed by one or more digits.

      An exponent part begins with the letter E in uppercase or lowercase, which may be followed by a plus or minus sign. The E and optional sign are followed by one or more digits.

      The following railroad diagram from json.org visualizes the number syntax:

      "},{"location":"features/types/number_handling/#number-interoperability","title":"Number interoperability","text":"

      On number interoperability, the following remarks are made:

      RFC 8259, Section 6

      This specification allows implementations to set limits on the range and precision of numbers accepted. Since software that implements IEEE 754 binary64 (double precision) numbers [IEEE754] is generally available and widely used, good interoperability can be achieved by implementations that expect no more precision or range than these provide, in the sense that implementations will approximate JSON numbers within the expected precision. A JSON number such as 1E400 or 3.141592653589793238462643383279 may indicate potential interoperability problems, since it suggests that the software that created it expects receiving software to have greater capabilities for numeric magnitude and precision than is widely available.

      Note that when such software is used, numbers that are integers and are in the range [-2^{53}+1, 2^{53}-1] are interoperable in the sense that implementations will agree exactly on their numeric values.

      "},{"location":"features/types/number_handling/#library-implementation","title":"Library implementation","text":"

      This section describes how the above number specification is implemented by this library.

      "},{"location":"features/types/number_handling/#number-storage","title":"Number storage","text":"

      In the default json type, numbers are stored as std::uint64_t, std::int64_t, and double, respectively. Thereby, std::uint64_t and std::int64_t are used only if they can store the number without loss of precision. If this is impossible (e.g., if the number is too large), the number is stored as double.

      Notes

      • Numbers with a decimal digit or scientific notation are always stored as double.
      • The number types can be changed, see Template number types.
      • As of version 3.9.1, the conversion is realized by std::strtoull, std::strtoll, and std::strtod, respectively.

      Examples

      • Integer -12345678912345789123456789 is smaller than INT64_MIN and will be stored as floating-point number -1.2345678912345788e+25.
      • Integer 1E3 will be stored as floating-point number 1000.0.
      "},{"location":"features/types/number_handling/#number-limits","title":"Number limits","text":"
      • Any 64-bit signed or unsigned integer can be stored without loss of precision.
      • Numbers exceeding the limits of double (i.e., numbers that after conversion via std::strtod are not satisfying std::isfinite such as 1E400) will throw exception json.exception.out_of_range.406 during parsing.
      • Floating-point numbers are rounded to the next number representable as double. For instance 3.141592653589793238462643383279 is stored as 0x400921fb54442d18. This is the same behavior as the code double x = 3.141592653589793238462643383279;.

      Interoperability

      • The library interoperable with respect to the specification, because its supported range [-2^{63}, 2^{64}-1] is larger than the described range [-2^{53}+1, 2^{53}-1].
      • All integers outside the range [-2^{63}, 2^{64}-1], as well as floating-point numbers are stored as double. This also concurs with the specification above.
      "},{"location":"features/types/number_handling/#zeros","title":"Zeros","text":"

      The JSON number grammar allows for different ways to express zero, and this library will store zeros differently:

      Literal Stored value and type Serialization 0 std::uint64_t(0) 0 -0 std::int64_t(0) 0 0.0 double(0.0) 0.0 -0.0 double(-0.0) -0.0 0E0 double(0.0) 0.0 -0E0 double(-0.0) -0.0

      That is, -0 is stored as a signed integer, but the serialization does not reproduce the -.

      "},{"location":"features/types/number_handling/#number-serialization","title":"Number serialization","text":"
      • Integer numbers are serialized as is; that is, no scientific notation is used.
      • Floating-point numbers are serialized as specified by the %g printf modifier with std::numeric_limits<double>::max_digits10 significant digits. The rationale is to use the shortest representation while still allow round-tripping.

      Notes regarding precision of floating-point numbers

      As described above, floating-point numbers are rounded to the nearest double and serialized with the shortest representation to allow round-tripping. This can yield confusing examples:

      • The serialization can have fewer decimal places than the input: 2555.5599999999999 will be serialized as 2555.56. The reverse can also be true.
      • The serialization can be in scientific notation even if the input is not: 0.0000972439793401814 will be serialized as 9.72439793401814e-05. The reverse can also be true: 12345E-5 will be serialized as 0.12345.
      • Conversions from float to double can also introduce rounding errors:
        float f = 0.3;\njson j = f;\nstd::cout << j << '\\n';\n
        yields 0.30000001192092896.

      All examples here can be reproduced by passing the original double value to

      std::printf(\"%.*g\\n\", std::numeric_limits<double>::max_digits10, double_value);\n
      "},{"location":"features/types/number_handling/#nan-handling","title":"NaN handling","text":"

      NaN (not-a-number) cannot be expressed with the number syntax described above and are in fact explicitly excluded:

      RFC 8259, Section 6

      Numeric values that cannot be represented in the grammar below (such as Infinity and NaN) are not permitted.

      That is, there is no way to parse a NaN value. However, NaN values can be stored in a JSON value by assignment.

      This library serializes NaN values as null. This corresponds to the behavior of JavaScript's JSON.stringify function.

      Example

      The following example shows how a NaN value is stored in a json value.

      int main()\n{\n    double val = std::numeric_limits<double>::quiet_NaN();\n    std::cout << \"val=\" << val << std::endl;\n    json j = val;\n    std::cout << \"j=\" << j.dump() << std::endl;\n    val = j;\n    std::cout << \"val=\" << val << std::endl;\n}\n

      output:

      val=nan\nj=null\nval=nan\n
      "},{"location":"features/types/number_handling/#number-comparison","title":"Number comparison","text":"

      Floating-point inside JSON values numbers are compared with json::number_float_t::operator== which is double::operator== by default.

      Alternative comparison functions

      To compare floating-point while respecting an epsilon, an alternative comparison function could be used, for instance

      template<typename T, typename = typename std::enable_if<std::is_floating_point<T>::value, T>::type>\ninline bool is_same(T a, T b, T epsilon = std::numeric_limits<T>::epsilon()) noexcept\n{\n    return std::abs(a - b) <= epsilon;\n}\n
      Or you can self-define an operator equal function like this:

      bool my_equal(const_reference lhs, const_reference rhs)\n{\n    const auto lhs_type lhs.type();\n    const auto rhs_type rhs.type();\n    if (lhs_type == rhs_type)\n    {\n        switch(lhs_type)\n        {\n            // self_defined case\n            case value_t::number_float:\n                return std::abs(lhs - rhs) <= std::numeric_limits<float>::epsilon();\n\n            // other cases remain the same with the original\n            ...\n        }\n    }\n    ...\n}\n

      (see #703 for more information.)

      Note

      NaN values never compare equal to themselves or to other NaN values. See #514.

      "},{"location":"features/types/number_handling/#number-conversion","title":"Number conversion","text":"

      Just like the C++ language itself, the get family of functions allows conversions between unsigned and signed integers, and between integers and floating-point values to integers. This behavior may be surprising.

      Unconditional number conversions

      double d = 42.3;                                   // non-integer double value 42.3\njson jd = d;                                       // stores double value 42.3\nstd::int64_t i = jd.template get<std::int64_t>();  // now i==42; no warning or error is produced\n

      Note the last line with throw a json.exception.type_error.302 exception if jd is not a numerical type, for instance a string.

      The rationale is twofold:

      1. JSON does not define a number type or precision (see above).
      2. C++ also allows to silently convert between number types.

      Conditional number conversion

      The code above can be solved by explicitly checking the nature of the value with members such as is_number_integer() or is_number_unsigned():

      // check if jd is really integer-valued\nif (jd.is_number_integer())\n{\n    // if so, do the conversion and use i\n    std::int64_t i = jd.template get<std::int64_t>();\n    // ...\n}\nelse\n{\n    // otherwise, take appropriate action\n    // ...\n}\n

      Note this approach also has the advantage that it can react on non-numerical JSON value types such as strings.

      (Example taken from #777.)

      "},{"location":"features/types/number_handling/#determine-number-types","title":"Determine number types","text":"

      As the example in Number conversion shows, there are different functions to determine the type of the stored number:

      • is_number() returns true for any number type
      • is_number_integer() returns true for signed and unsigned integers
      • is_number_unsigned() returns true for unsigned integers only
      • is_number_float() returns true for floating-point numbers
      • type_name() returns \"number\" for any number type
      • type() returns a different enumerator of value_t for all number types
      function unsigned integer signed integer floating-point string is_number() true true true false is_number_integer() true true false false is_number_unsigned() true false false false is_number_float() false false true false type_name() \"number\" \"number\" \"number\" \"string\" type() number_unsigned number_integer number_float string"},{"location":"features/types/number_handling/#template-number-types","title":"Template number types","text":"

      The number types can be changed with template parameters.

      position number type default type possible values 5 signed integers std::int64_t std::int32_t, std::int16_t, etc. 6 unsigned integers std::uint64_t std::uint32_t, std::uint16_t, etc. 7 floating-point double float, long double

      Constraints on number types

      • The type for signed integers must be convertible from long long. The type for floating-point numbers is used in case of overflow.
      • The type for unsigned integers must be convertible from unsigned long long. The type for floating-point numbers is used in case of overflow.
      • The types for signed and unsigned integers must be distinct, see #2573.
      • Only double, float, and long double are supported for floating-point numbers.

      Example

      A basic_json type that uses long double as floating-point type.

      using json_ld = nlohmann::basic_json<std::map, std::vector, std::string, bool,\n                                     std::int64_t, std::uint64_t, long double>;\n

      Note values should then be parsed with json_ld::parse rather than json::parse as the latter would parse floating-point values to double before then converting them to long double.

      "},{"location":"home/code_of_conduct/","title":"Contributor Covenant Code of Conduct","text":""},{"location":"home/code_of_conduct/#our-pledge","title":"Our Pledge","text":"

      In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.

      "},{"location":"home/code_of_conduct/#our-standards","title":"Our Standards","text":"

      Examples of behavior that contributes to creating a positive environment include:

      • Using welcoming and inclusive language
      • Being respectful of differing viewpoints and experiences
      • Gracefully accepting constructive criticism
      • Focusing on what is best for the community
      • Showing empathy towards other community members

      Examples of unacceptable behavior by participants include:

      • The use of sexualized language or imagery and unwelcome sexual attention or advances
      • Trolling, insulting/derogatory comments, and personal or political attacks
      • Public or private harassment
      • Publishing others' private information, such as a physical or electronic address, without explicit permission
      • Other conduct which could reasonably be considered inappropriate in a professional setting
      "},{"location":"home/code_of_conduct/#our-responsibilities","title":"Our Responsibilities","text":"

      Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.

      Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.

      "},{"location":"home/code_of_conduct/#scope","title":"Scope","text":"

      This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.

      "},{"location":"home/code_of_conduct/#enforcement","title":"Enforcement","text":"

      Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at mail@nlohmann.me. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.

      Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.

      "},{"location":"home/code_of_conduct/#attribution","title":"Attribution","text":"

      This Code of Conduct is adapted from the Contributor Covenant, version 1.4, available at http://contributor-covenant.org/version/1/4

      "},{"location":"home/customers/","title":"Customers","text":"

      The library is used in multiple projects, applications, operating systems, etc. The list below is not exhaustive, but the result of an internet search. If you know further customers of the library, please let me know.

      "},{"location":"home/customers/#space-exploration","title":"Space Exploration","text":"
      • Peregrine Lunar Lander Flight 01 - The library was utilized for payload management in the Peregrine Moon Lander, developed by Astrobotic Technology and launched as part of NASA's Commercial Lunar Payload Services (CLPS) program. After six days in orbit, the spacecraft was intentionally redirected into Earth's atmosphere, where it burned up over the Pacific Ocean on January 18, 2024.
      "},{"location":"home/customers/#automotive","title":"Automotive","text":"
      • Alexa Auto SDK, a software development kit enabling the integration of Alexa into automotive systems
      • Apollo, a framework for building autonomous driving systems
      • Automotive Grade Linux (AGL): a collaborative open-source platform for automotive software development
      • Genesis Motor (infotainment), a luxury automotive brand
      • Hyundai (infotainment), a global automotive brand
      • Kia (infotainment), a global automotive brand
      • Mercedes-Benz Operating System (MB.OS), a core component of the vehicle software ecosystem from Mercedes-Benz
      • Rivian (infotainment), an electric vehicle manufacturer
      • Suzuki (infotainment), a global automotive and motorcycle manufacturer
      "},{"location":"home/customers/#gaming-and-entertainment","title":"Gaming and Entertainment","text":"
      • Assassin's Creed: Mirage: a stealth-action game set in the Middle East, focusing on the journey of a young assassin with classic parkour and stealth mechanics
      • Chasm: The Rift: a first-person shooter blending horror and adventure, where players navigate dark realms and battle monsters
      • College Football 25: a college football simulation game featuring gameplay that mimics real-life college teams and competitions
      • Concepts: a digital sketching app designed for creative professionals, offering flexible drawing tools for illustration, design, and brainstorming
      • Depthkit: a tool for creating and capturing volumetric video, enabling immersive 3D experiences and interactive content
      • immersivetech: a technology company focused on immersive experiences, providing tools and solutions for virtual and augmented reality applications
      • LOOT, a tool for optimizing the load order of game plugins, commonly used in The Elder Scrolls and Fallout series
      • Madden NFL 25: a sports simulation game capturing the excitement of American football with realistic gameplay and team management features
      • Marne, an unofficial private server platform for hosting custom Battlefield 1 game experiences
      • Minecraft, a popular sandbox video game
      • NHL 22: a hockey simulation game offering realistic gameplay, team management, and various modes to enhance the hockey experience
      • Pixelpart: a 2D animation and video compositing software that allows users to create animated graphics and visual effects with a focus on simplicity and ease of use
      • Red Dead Redemption II: an open-world action-adventure game following an outlaw's story in the late 1800s, emphasizing deep storytelling and immersive gameplay
      • Tactics Ogre: Reborn, a tactical role-playing game featuring strategic battles and deep storytelling elements
      • Throne and Liberty, an MMORPG that offers an expansive fantasy world with dynamic gameplay and immersive storytelling
      • Unity Vivox, a communication service that enables voice and text chat functionality in multiplayer games developed with Unity
      • Zool: Redimensioned: a modern reimagining of the classic platformer featuring fast-paced gameplay and vibrant environments
      "},{"location":"home/customers/#consumer-electronics","title":"Consumer Electronics","text":"
      • Audinate: a provider of networked audio solutions specializing in Dante technology, which facilitates high-quality digital audio transport over IP networks
      • Cisco Webex Desk Camera, a video camera designed for professional-quality video conferencing and remote collaboration
      • Philips Hue Personal Wireless Lighting: a smart lighting system for customizable and wireless home illumination
      • Ray-Ban Meta Smart glasses, a pair of smart glasses designed for capturing photos and videos with integrated connectivity and social features
      • Siemens SINEMA Remote Connect, a remote connectivity solution for monitoring and managing industrial networks and devices securely
      • Sony PlayStation 4, a gaming console developed by Sony that offers a wide range of games and multimedia entertainment features
      • Sony Virtual Webcam Driver for Remote Camera, a software driver that enables the use of Sony cameras as virtual webcams for video conferencing and streaming
      "},{"location":"home/customers/#operating-systems","title":"Operating Systems","text":"
      • Apple iOS and macOS, a family of operating systems developed by Apple, including iOS for mobile devices and macOS for desktop computers
      • Google Fuchsia, an open-source operating system developed by Google, designed to be secure, updatable, and adaptable across various devices
      • SerenityOS, an open-source operating system that aims to provide a simple and beautiful user experience with a focus on simplicity and elegance
      • Yocto: a Linux-based build system for creating custom operating systems and software distributions, tailored for embedded devices and IoT applications
      "},{"location":"home/customers/#development-tools-and-ides","title":"Development Tools and IDEs","text":"
      • Accentize SpectralBalance, an adaptive speech analysis tool designed to enhance audio quality by optimizing frequency balance in recordings
      • Arm Compiler for Linux, a software development toolchain for compiling and optimizing applications on Arm-based Linux systems
      • BBEdit, a professional text and code editor for macOS
      • CoderPad, a collaborative coding platform that enables real-time code interviews and assessments for developers; the library is included in every CoderPad instance and can be accessed with a simple #include \"json.hpp\"
      • Compiler Explorer, a web-based tool that allows users to write, compile, and visualize the assembly output of code in various programming languages; the library is readily available and accessible with the directive #include <nlohmann/json.hpp>.
      • GitHub CodeQL, a code analysis tool used for identifying security vulnerabilities and bugs in software through semantic queries
      • Hex-Rays: a reverse engineering toolset for analyzing and decompiling binaries, primarily used for security research and vulnerability analysis
      • ImHex, a hex editor designed for reverse engineering, providing advanced features for data analysis and manipulation
      • Intel GPA Framework, a suite of cross-platform tools for capturing, analyzing, and optimizing graphics applications across different APIs
      • Meta Yoga, a layout engine that facilitates flexible and efficient user interface design across multiple platforms
      • NVIDIA Nsight Compute, a performance analysis tool for CUDA applications that provides detailed insights into GPU performance metrics
      • Notepad++, a free source code editor that supports various programming languages
      • OpenRGB, an open source RGB lighting control that doesn't depend on manufacturer software
      • OpenTelemetry C++: a library for collecting and exporting observability data in C++, enabling developers to implement distributed tracing and metrics in their application
      • Qt Creator, an IDE for developing applications using the Qt application framework
      • Scanbot SDK: a software development kit (SDK) that provides tools for integrating advanced document scanning and barcode scanning capabilities into applications
      "},{"location":"home/customers/#machine-learning-and-ai","title":"Machine Learning and AI","text":"
      • Apple Core ML Tools, a set of tools for converting and configuring machine learning models for deployment in Apple's Core ML framework
      • Avular Mobile Robotics: a platform for developing and deploying mobile robotics solutions
      • Google gemma.cpp, a lightweight C++ inference engine designed for running AI models from the Gemma family
      • llama.cpp, a C++ library designed for efficient inference of large language models (LLMs), enabling streamlined integration into applications
      • Mozilla llamafile, a tool designed for distributing and executing large language models (LLMs) efficiently using a single file format
      • NVIDIA ACE, a suite of real-time AI solutions designed for the development of interactive avatars and digital human applications, enabling scalable and sophisticated user interactions
      • Peer: a platform offering personalized AI assistants for interactive learning and creative collaboration
      • stable-diffusion.cpp: a C++ implementation of the Stable Diffusion image generation model
      • TanvasTouch: a software development kit (SDK) that enables developers to create tactile experiences on touchscreens, allowing users to feel textures and physical sensations in a digital environment
      • TensorFlow, a machine learning framework that facilitates the development and training of models, supporting data serialization and efficient data exchange between components
      "},{"location":"home/customers/#scientific-research-and-analysis","title":"Scientific Research and Analysis","text":"
      • BLACK, a bounded linear temporal logic (LTL) satisfiability checker
      • CERN Atlas Athena, a software framework used in the ATLAS experiment at the Large Hadron Collider (LHC) for performance monitoring
      • KAMERA: a platform for synchronized data collection and real-time deep learning to map marine species like polar bears and seals, aiding Arctic ecosystem research
      • KiCad: a free and open-source software suite for electronic design automation
      • MeVisLab: a software framework for medical image processing and visualization.
      • OpenPMD API: a versatile programming interface for accessing and managing scientific data, designed to facilitate the efficient storage, retrieval, and sharing of simulation data across various applications and platforms
      • ParaView: an open-source tool for large-scale data visualization and analysis across various scientific domains
      • QGIS: a free and open-source geographic information system (GIS) application that allows users to create, edit, visualize, and analyze geospatial data across a variety of formats
      • VTK: a software library for 3D computer graphics, image processing, and visualization
      • VolView: a lightweight application for interactive visualization and analysis of 3D medical imaging data.
      "},{"location":"home/customers/#business-and-productivity-software","title":"Business and Productivity Software","text":"
      • ArcGIS PRO, a desktop geographic information system (GIS) application developed by Esri for mapping and spatial analysis
      • Autodesk Desktop, a software platform developed by Autodesk for creating and managing desktop applications and services
      • Check Point: a cybersecurity company specializing in threat prevention and network security solutions, offering a range of products designed to protect enterprises from cyber threats and ensure data integrity
      • Microsoft Office for Mac, a suite of productivity applications developed by Microsoft for macOS, including tools for word processing, spreadsheets, and presentations
      • Nexthink Infinity: a digital employee experience management platform for monitoring and improving IT performance
      • Sophos Connect Client: a secure VPN client from Sophos that allows remote users to connect to their corporate network, ensuring secure access to resources and data
      • Stonebranch: a cloud-based cybersecurity solution that integrates backup, disaster recovery, and cybersecurity features to protect data and ensure business continuity for organizations
      • Tablecruncher: a data analysis tool that allows users to import, analyze, and visualize spreadsheet data, offering interactive features for better insights and decision-making
      • magicplan, a mobile application for creating floor plans and interior designs using augmented reality
      "},{"location":"home/customers/#databases-and-big-data","title":"Databases and Big Data","text":"
      • ADIOS2: a data management framework designed for high-performance input and output operations
      • Cribl Stream: a real-time data processing platform that enables organizations to collect, route, and transform observability data, enhancing visibility and insights into their systems
      • DB Browser for SQLite, a visual open-source tool for creating, designing, and editing SQLite database files
      • MySQL Connector/C++, a C++ library for connecting and interacting with MySQL databases
      • MySQL NDB Cluster, a distributed database system that provides high availability and scalability for MySQL databases
      • PrestoDB, a distributed SQL query engine designed for large-scale data analytics, originally developed by Facebook
      • ROOT Data Analysis Framework, an open-source data analysis framework widely used in high-energy physics and other fields for data processing and visualization
      "},{"location":"home/customers/#simulation-and-modeling","title":"Simulation and Modeling","text":"
      • Arcturus HoloSuite, a software toolset for capturing, editing, and streaming volumetric video, featuring advanced compression technologies for high-quality 3D content creation
      • azul, a fast and efficient 3D city model viewer designed for visualizing urban environments and spatial data
      • cpplot, a library for creating interactive graphs and charts in C++, which can be viewed in web browsers
      • NVIDIA Omniverse, a platform for 3D content creation and collaboration that enables real-time simulations and interactive experiences across various industries
      • Pixar Renderman, a photorealistic 3D rendering software developed by Pixar, widely used in the film industry for creating high-quality visual effects and animations
      • ROS - Robot Operating System, a set of software libraries and tools that assist in developing robot applications
      • UBS, a multinational financial services and banking company
      • GAMS: a high-performance mathematical modeling system for optimization and decision support
      • M-Star: a computational fluid dynamics software for simulating and analyzing fluid flow
      • MapleSim CAD Toolbox: a software extension for MapleSim that integrates CAD models, allowing users to import, manipulate, and analyze 3D CAD data within the MapleSim environment for enhanced modeling and simulation
      • Kitware SMTK: a software toolkit for managing simulation models and workflows in scientific and engineering applications
      "},{"location":"home/customers/#enterprise-and-cloud-applications","title":"Enterprise and Cloud Applications","text":"
      • Acronis Cyber Protect Cloud: an all-in-one data protection solution that combines backup, disaster recovery, and cybersecurity to safeguard business data from threats like ransomware
      • Baereos: a backup solution that provides data protection and recovery options for various environments, including physical and virtual systems
      • Bitdefender Home Scanner, a tool from Bitdefender that scans devices for malware and security threats, providing a safeguard against potential online dangers
      • Citrix Provisioning: a solution that streamlines the delivery of virtual desktops and applications by allowing administrators to manage and provision resources efficiently across multiple environments
      • Citrix Virtual Apps and Desktops, a solution from Citrix that delivers virtual apps and desktops
      • Cyberarc: a security solution that specializes in privileged access management, enabling organizations to control and monitor access to critical systems and data, thereby enhancing overall cybersecurity posture
      • Egnyte Desktop: a secure cloud storage solution designed for businesses, enabling file sharing, collaboration, and data management across teams while ensuring compliance and data protection
      • Ethereum Solidity, a high-level, object-oriented programming language designed for implementing smart contracts on the Ethereum platform
      • Inciga: a monitoring tool for IT infrastructure, designed to provide insights into system performance and availability through customizable dashboards and alerts
      • Intel Accelerator Management Daemon for VMware ESXi: a management tool designed for monitoring and controlling Intel hardware accelerators within VMware ESXi environments, optimizing performance and resource allocation
      • Juniper Identity Management Service
      • Microsoft Azure IoT SDK, a collection of tools and libraries to help developers connect, build, and deploy Internet of Things (IoT) solutions on the Azure cloud platform
      • Microsoft WinGet, a command-line utility included in the Windows Package Manager
      • Pointr: a platform for indoor positioning and navigation solutions, offering tools and SDKs for developers to create location-based applications
      "},{"location":"home/design_goals/","title":"Design goals","text":"

      There 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.

      See the contribution guidelines for more information.

      "},{"location":"home/exceptions/","title":"Exceptions","text":""},{"location":"home/exceptions/#overview","title":"Overview","text":""},{"location":"home/exceptions/#base-type","title":"Base type","text":"

      All exceptions inherit from class json::exception (which in turn inherits from std::exception). It is used as the base class for all exceptions thrown by the basic_json class. This class can hence be used as \"wildcard\" to catch exceptions.

      classDiagram\n  direction LR\n    class `std::exception` {\n        <<interface>>\n    }\n\n    class `json::exception` {\n        +const int id\n        +const char* what() const\n    }\n\n    class `json::parse_error` {\n        +const std::size_t byte\n    }\n\n    class `json::invalid_iterator`\n    class `json::type_error`\n    class `json::out_of_range`\n    class `json::other_error`\n\n    `std::exception` <|-- `json::exception`\n    `json::exception` <|-- `json::parse_error`\n    `json::exception` <|-- `json::invalid_iterator`\n    `json::exception` <|-- `json::type_error`\n    `json::exception` <|-- `json::out_of_range`\n    `json::exception` <|-- `json::other_error`
      "},{"location":"home/exceptions/#switch-off-exceptions","title":"Switch off exceptions","text":"

      Exceptions are used widely within the library. They can, however, be switched off with either using the compiler flag -fno-exceptions or by defining the symbol JSON_NOEXCEPTION. In this case, exceptions are replaced by abort() calls. You can further control this behavior by defining JSON_THROW_USER (overriding throw), JSON_TRY_USER (overriding try), and JSON_CATCH_USER (overriding catch).

      Note that JSON_THROW_USER should leave the current scope (e.g., by throwing or aborting), as continuing after it may yield undefined behavior.

      Example

      The code below switches off exceptions and creates a log entry with a detailed error message in case of errors.

      #include <iostream>\n\n#define JSON_TRY_USER if(true)\n#define JSON_CATCH_USER(exception) if(false)\n#define JSON_THROW_USER(exception)                           \\\n    {std::clog << \"Error in \" << __FILE__ << \":\" << __LINE__ \\\n               << \" (function \" << __FUNCTION__ << \") - \"    \\\n               << (exception).what() << std::endl;           \\\n     std::abort();}\n\n#include <nlohmann/json.hpp>\n

      Note the explanatory what() string of exceptions is not available for MSVC if exceptions are disabled, see #2824.

      See documentation of JSON_TRY_USER, JSON_CATCH_USER and JSON_THROW_USER for more information.

      "},{"location":"home/exceptions/#extended-diagnostic-messages","title":"Extended diagnostic messages","text":"

      Exceptions in the library are thrown in the local context of the JSON value they are detected. This makes detailed diagnostics messages, and hence debugging, difficult.

      Example
      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    json j;\n    j[\"address\"][\"street\"] = \"Fake Street\";\n    j[\"address\"][\"housenumber\"] = \"12\";\n\n    try\n    {\n        int housenumber = j[\"address\"][\"housenumber\"];\n    }\n    catch (const json::exception& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n}\n

      Output:

      [json.exception.type_error.302] type must be number, but is string\n

      This exception can be hard to debug if storing the value \"12\" and accessing it is further apart.

      To create better diagnostics messages, each JSON value needs a pointer to its parent value such that a global context (i.e., a path from the root value to the value that lead to the exception) can be created. That global context is provided as JSON Pointer.

      As this global context comes at the price of storing one additional pointer per JSON value and runtime overhead to maintain the parent relation, extended diagnostics are disabled by default. They can, however, be enabled by defining the preprocessor symbol JSON_DIAGNOSTICS to 1 before including json.hpp.

      Example
      #include <iostream>\n\n# define JSON_DIAGNOSTICS 1\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    json j;\n    j[\"address\"][\"street\"] = \"Fake Street\";\n    j[\"address\"][\"housenumber\"] = \"12\";\n\n    try\n    {\n        int housenumber = j[\"address\"][\"housenumber\"];\n    }\n    catch (const json::exception& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n}\n

      Output:

      [json.exception.type_error.302] (/address/housenumber) type must be number, but is string\n

      Now the exception message contains a JSON Pointer /address/housenumber that indicates which value has the wrong type.

      See documentation of JSON_DIAGNOSTICS for more information.

      "},{"location":"home/exceptions/#parse-errors","title":"Parse errors","text":"

      This exception is thrown by the library when a parse error occurs. Parse errors can occur during the deserialization of JSON text, CBOR, MessagePack, as well as when using JSON Patch.

      Exceptions have ids 1xx.

      Byte index

      Member byte holds the byte index of the last read character in the input file.

      For an input with n bytes, 1 is the index of the first character and n+1 is the index of the terminating null byte or the end of file. This also holds true when reading a byte vector (CBOR or MessagePack).

      Example

      The following code shows how a parse_error exception can be caught.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    try\n    {\n        // parsing input with a syntax error\n        json::parse(\"[1,2,3,]\");\n    }\n    catch (const json::parse_error& e)\n    {\n        // output exception information\n        std::cout << \"message: \" << e.what() << '\\n'\n                  << \"exception id: \" << e.id << '\\n'\n                  << \"byte position of error: \" << e.byte << std::endl;\n    }\n}\n

      Output:

      message: [json.exception.parse_error.101] parse error at line 1, column 8: syntax error while parsing value - unexpected ']'; expected '[', '{', or a literal\nexception id: 101\nbyte position of error: 8\n
      "},{"location":"home/exceptions/#jsonexceptionparse_error101","title":"json.exception.parse_error.101","text":"

      This error indicates a syntax error while deserializing a JSON text. The error message describes that an unexpected token (character) was encountered, and the member byte indicates the error position.

      Example message

      Input ended prematurely:

      [json.exception.parse_error.101] parse error at 2: unexpected end of input; expected string literal\n

      No input:

      [json.exception.parse_error.101] parse error at line 1, column 1: attempting to parse an empty input; check that your input string or stream contains the expected JSON\n

      Control character was not escaped:

      [json.exception.parse_error.101] parse error at line 1, column 2: syntax error while parsing value - invalid string: control character U+0009 (HT) must be escaped to \\u0009 or \\\\; last read: '\"<U+0009>'\"\n

      String was not closed:

      [json.exception.parse_error.101] parse error at line 1, column 2: syntax error while parsing value - invalid string: missing closing quote; last read: '\"'\n

      Invalid number format:

      [json.exception.parse_error.101] parse error at line 1, column 3: syntax error while parsing value - invalid number; expected '+', '-', or digit after exponent; last read: '1E'\n

      \\u was not be followed by four hex digits:

      [json.exception.parse_error.101] parse error at line 1, column 6: syntax error while parsing value - invalid string: '\\u' must be followed by 4 hex digits; last read: '\"\\u01\"'\n

      Invalid UTF-8 surrogate pair:

      [json.exception.parse_error.101] parse error at line 1, column 13: syntax error while parsing value - invalid string: surrogate U+DC00..U+DFFF must follow U+D800..U+DBFF; last read: '\"\\uD7FF\\uDC00'\"\n

      Invalid UTF-8 byte:

      [json.exception.parse_error.101] parse error at line 3, column 24: syntax error while parsing value - invalid string: ill-formed UTF-8 byte; last read: '\"vous \\352t'\n

      Tip

      • Make sure the input is correctly read. Try to write the input to standard output to check if, for instance, the input file was successfully opened.
      • Paste the input to a JSON validator like http://jsonlint.com or a tool like jq.
      "},{"location":"home/exceptions/#jsonexceptionparse_error102","title":"json.exception.parse_error.102","text":"

      JSON uses the \\uxxxx format to describe Unicode characters. Code points above 0xFFFF are split into two \\uxxxx entries (\"surrogate pairs\"). This error indicates that the surrogate pair is incomplete or contains an invalid code point.

      Example message

      parse error at 14: missing or wrong low surrogate\n

      Note

      This exception is not used any more. Instead json.exception.parse_error.101 with a more detailed description is used.

      "},{"location":"home/exceptions/#jsonexceptionparse_error103","title":"json.exception.parse_error.103","text":"

      Unicode supports code points up to 0x10FFFF. Code points above 0x10FFFF are invalid.

      Example message

      parse error: code points above 0x10FFFF are invalid\n

      Note

      This exception is not used any more. Instead json.exception.parse_error.101 with a more detailed description is used.

      "},{"location":"home/exceptions/#jsonexceptionparse_error104","title":"json.exception.parse_error.104","text":"

      RFC 6902 requires a JSON Patch document to be a JSON document that represents an array of objects.

      Example message

      [json.exception.parse_error.104] parse error: JSON patch must be an array of objects\n
      "},{"location":"home/exceptions/#jsonexceptionparse_error105","title":"json.exception.parse_error.105","text":"

      An operation of a JSON Patch document must contain exactly one \"op\" member, whose value indicates the operation to perform. Its value must be one of \"add\", \"remove\", \"replace\", \"move\", \"copy\", or \"test\"; other values are errors.

      Example message

      [json.exception.parse_error.105] parse error: operation 'add' must have member 'value'\n
      [json.exception.parse_error.105] parse error: operation 'copy' must have string member 'from'\n
      [json.exception.parse_error.105] parse error: operation value 'foo' is invalid\n

      "},{"location":"home/exceptions/#jsonexceptionparse_error106","title":"json.exception.parse_error.106","text":"

      An array index in a JSON Pointer (RFC 6901) may be 0 or any number without a leading 0.

      Example message

      [json.exception.parse_error.106] parse error: array index '01' must not begin with '0'\n
      "},{"location":"home/exceptions/#jsonexceptionparse_error107","title":"json.exception.parse_error.107","text":"

      A JSON Pointer must be a Unicode string containing a sequence of zero or more reference tokens, each prefixed by a / character.

      Example message

      [json.exception.parse_error.107] parse error at byte 1: JSON pointer must be empty or begin with '/' - was: 'foo'\n
      "},{"location":"home/exceptions/#jsonexceptionparse_error108","title":"json.exception.parse_error.108","text":"

      In a JSON Pointer, only ~0 and ~1 are valid escape sequences.

      Example message

      [json.exception.parse_error.108] parse error: escape character '~' must be followed with '0' or '1'\n
      "},{"location":"home/exceptions/#jsonexceptionparse_error109","title":"json.exception.parse_error.109","text":"

      A JSON Pointer array index must be a number.

      Example messages

      [json.exception.parse_error.109] parse error: array index 'one' is not a number\n
      [json.exception.parse_error.109] parse error: array index '+1' is not a number\n

      "},{"location":"home/exceptions/#jsonexceptionparse_error110","title":"json.exception.parse_error.110","text":"

      When parsing CBOR or MessagePack, the byte vector ends before the complete value has been read.

      Example message

      [json.exception.parse_error.110] parse error at byte 5: syntax error while parsing CBOR string: unexpected end of input\n
      [json.exception.parse_error.110] parse error at byte 2: syntax error while parsing UBJSON value: expected end of input; last byte: 0x5A\n

      "},{"location":"home/exceptions/#jsonexceptionparse_error112","title":"json.exception.parse_error.112","text":"

      An unexpected byte was read in a binary format or length information is invalid (BSON).

      Example messages

      [json.exception.parse_error.112] parse error at byte 1: syntax error while parsing CBOR value: invalid byte: 0x1C\n
      [json.exception.parse_error.112] parse error at byte 1: syntax error while parsing MessagePack value: invalid byte: 0xC1\n
      [json.exception.parse_error.112] parse error at byte 4: syntax error while parsing BJData size: expected '#' after type information; last byte: 0x02\n
      [json.exception.parse_error.112] parse error at byte 4: syntax error while parsing UBJSON size: expected '#' after type information; last byte: 0x02\n
      [json.exception.parse_error.112] parse error at byte 10: syntax error while parsing BSON string: string length must be at least 1, is -2147483648\n
      [json.exception.parse_error.112] parse error at byte 15: syntax error while parsing BSON binary: byte array length cannot be negative, is -1\n

      "},{"location":"home/exceptions/#jsonexceptionparse_error113","title":"json.exception.parse_error.113","text":"

      While parsing a map key, a value that is not a string has been read.

      Example messages

      [json.exception.parse_error.113] parse error at byte 2: syntax error while parsing CBOR string: expected length specification (0x60-0x7B) or indefinite string type (0x7F); last byte: 0xFF\n
      [json.exception.parse_error.113] parse error at byte 2: syntax error while parsing MessagePack string: expected length specification (0xA0-0xBF, 0xD9-0xDB); last byte: 0xFF\n
      [json.exception.parse_error.113] parse error at byte 2: syntax error while parsing UBJSON char: byte after 'C' must be in range 0x00..0x7F; last byte: 0x82\n

      "},{"location":"home/exceptions/#jsonexceptionparse_error114","title":"json.exception.parse_error.114","text":"

      The parsing of the corresponding BSON record type is not implemented (yet).

      Example message

      [json.exception.parse_error.114] parse error at byte 5: Unsupported BSON record type 0xFF\n
      "},{"location":"home/exceptions/#jsonexceptionparse_error115","title":"json.exception.parse_error.115","text":"

      A UBJSON high-precision number could not be parsed.

      Example message

      [json.exception.parse_error.115] parse error at byte 5: syntax error while parsing UBJSON high-precision number: invalid number text: 1A\n
      "},{"location":"home/exceptions/#iterator-errors","title":"Iterator errors","text":"

      This exception is thrown if iterators passed to a library function do not match the expected semantics.

      Exceptions have ids 2xx.

      Example

      The following code shows how an invalid_iterator exception can be caught.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    try\n    {\n        // calling iterator::key() on non-object iterator\n        json j = \"string\";\n        json::iterator it = j.begin();\n        auto k = it.key();\n    }\n    catch (const json::invalid_iterator& e)\n    {\n        // output exception information\n        std::cout << \"message: \" << e.what() << '\\n'\n                  << \"exception id: \" << e.id << std::endl;\n    }\n}\n

      Output:

      message: [json.exception.invalid_iterator.207] cannot use key() for non-object iterators\nexception id: 207\n
      "},{"location":"home/exceptions/#jsonexceptioninvalid_iterator201","title":"json.exception.invalid_iterator.201","text":"

      The iterators passed to constructor basic_json(InputIT first, InputIT last) are not compatible, meaning they do not belong to the same container. Therefore, the range (first, last) is invalid.

      Example message

      [json.exception.invalid_iterator.201] iterators are not compatible\n
      "},{"location":"home/exceptions/#jsonexceptioninvalid_iterator202","title":"json.exception.invalid_iterator.202","text":"

      In the erase or insert function, the passed iterator pos does not belong to the JSON value for which the function was called. It hence does not define a valid position for the deletion/insertion.

      Example messages

      [json.exception.invalid_iterator.202] iterator does not fit current value\n
      [json.exception.invalid_iterator.202] iterators first and last must point to objects\n

      "},{"location":"home/exceptions/#jsonexceptioninvalid_iterator203","title":"json.exception.invalid_iterator.203","text":"

      Either iterator passed to function erase(IteratorType first, IteratorType last) does not belong to the JSON value from which values shall be erased. It hence does not define a valid range to delete values from.

      Example message

      [json.exception.invalid_iterator.203] iterators do not fit current value\n
      "},{"location":"home/exceptions/#jsonexceptioninvalid_iterator204","title":"json.exception.invalid_iterator.204","text":"

      When an iterator range for a primitive type (number, boolean, or string) is passed to a constructor or an erase function, this range has to be exactly (begin(), end()), because this is the only way the single stored value is expressed. All other ranges are invalid.

      Example message

      [json.exception.invalid_iterator.204] iterators out of range\n
      "},{"location":"home/exceptions/#jsonexceptioninvalid_iterator205","title":"json.exception.invalid_iterator.205","text":"

      When an iterator for a primitive type (number, boolean, or string) is passed to an erase function, the iterator has to be the begin() iterator, because it is the only way to address the stored value. All other iterators are invalid.

      Example message

      [json.exception.invalid_iterator.205] iterator out of range\n
      "},{"location":"home/exceptions/#jsonexceptioninvalid_iterator206","title":"json.exception.invalid_iterator.206","text":"

      The iterators passed to constructor basic_json(InputIT first, InputIT last) belong to a JSON null value and hence to not define a valid range.

      Example message

      [json.exception.invalid_iterator.206] cannot construct with iterators from null\n
      "},{"location":"home/exceptions/#jsonexceptioninvalid_iterator207","title":"json.exception.invalid_iterator.207","text":"

      The key() member function can only be used on iterators belonging to a JSON object, because other types do not have a concept of a key.

      Example message

      [json.exception.invalid_iterator.207] cannot use key() for non-object iterators\n
      "},{"location":"home/exceptions/#jsonexceptioninvalid_iterator208","title":"json.exception.invalid_iterator.208","text":"

      The operator[] to specify a concrete offset cannot be used on iterators belonging to a JSON object, because JSON objects are unordered.

      Example message

      [json.exception.invalid_iterator.208] cannot use operator[] for object iterators\n
      "},{"location":"home/exceptions/#jsonexceptioninvalid_iterator209","title":"json.exception.invalid_iterator.209","text":"

      The offset operators (+, -, +=, -=) cannot be used on iterators belonging to a JSON object, because JSON objects are unordered.

      Example message

      [json.exception.invalid_iterator.209] cannot use offsets with object iterators\n
      "},{"location":"home/exceptions/#jsonexceptioninvalid_iterator210","title":"json.exception.invalid_iterator.210","text":"

      The iterator range passed to the insert function are not compatible, meaning they do not belong to the same container. Therefore, the range (first, last) is invalid.

      Example message

      [json.exception.invalid_iterator.210] iterators do not fit\n
      "},{"location":"home/exceptions/#jsonexceptioninvalid_iterator211","title":"json.exception.invalid_iterator.211","text":"

      The iterator range passed to the insert function must not be a subrange of the container to insert to.

      Example message

      [json.exception.invalid_iterator.211] passed iterators may not belong to container\n
      "},{"location":"home/exceptions/#jsonexceptioninvalid_iterator212","title":"json.exception.invalid_iterator.212","text":"

      When two iterators are compared, they must belong to the same container.

      Example message

      [json.exception.invalid_iterator.212] cannot compare iterators of different containers\n
      "},{"location":"home/exceptions/#jsonexceptioninvalid_iterator213","title":"json.exception.invalid_iterator.213","text":"

      The order of object iterators cannot be compared, because JSON objects are unordered.

      Example message

      [json.exception.invalid_iterator.213] cannot compare order of object iterators\n
      "},{"location":"home/exceptions/#jsonexceptioninvalid_iterator214","title":"json.exception.invalid_iterator.214","text":"

      Cannot get value for iterator: Either the iterator belongs to a null value or it is an iterator to a primitive type (number, boolean, or string), but the iterator is different to begin().

      Example message

      [json.exception.invalid_iterator.214] cannot get value\n
      "},{"location":"home/exceptions/#type-errors","title":"Type errors","text":"

      This exception is thrown in case of a type error; that is, a library function is executed on a JSON value whose type does not match the expected semantics.

      Exceptions have ids 3xx.

      Example

      The following code shows how a type_error exception can be caught.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    try\n    {\n        // calling push_back() on a string value\n        json j = \"string\";\n        j.push_back(\"another string\");\n    }\n    catch (const json::type_error& e)\n    {\n        // output exception information\n        std::cout << \"message: \" << e.what() << '\\n'\n                  << \"exception id: \" << e.id << std::endl;\n    }\n}\n

      Output:

      message: [json.exception.type_error.308] cannot use push_back() with string\nexception id: 308\n
      "},{"location":"home/exceptions/#jsonexceptiontype_error301","title":"json.exception.type_error.301","text":"

      To create an object from an initializer list, the initializer list must consist only of a list of pairs whose first element is a string. When this constraint is violated, an array is created instead.

      Example message

      [json.exception.type_error.301] cannot create object from initializer list\n
      "},{"location":"home/exceptions/#jsonexceptiontype_error302","title":"json.exception.type_error.302","text":"

      During implicit or explicit value conversion, the JSON type must be compatible to the target type. For instance, a JSON string can only be converted into string types, but not into numbers or boolean types.

      Example messages

      [json.exception.type_error.302] type must be object, but is null\n
      [json.exception.type_error.302] type must be string, but is object\n

      "},{"location":"home/exceptions/#jsonexceptiontype_error303","title":"json.exception.type_error.303","text":"

      To retrieve a reference to a value stored in a basic_json object with get_ref, the type of the reference must match the value type. For instance, for a JSON array, the ReferenceType must be array_t &.

      Example messages

      [json.exception.type_error.303] incompatible ReferenceType for get_ref, actual type is object\n
      [json.exception.type_error.303] incompatible ReferenceType for get_ref, actual type is number\"\n

      "},{"location":"home/exceptions/#jsonexceptiontype_error304","title":"json.exception.type_error.304","text":"

      The at() member functions can only be executed for certain JSON types.

      Example messages

      [json.exception.type_error.304] cannot use at() with string\n
      [json.exception.type_error.304] cannot use at() with number\n

      "},{"location":"home/exceptions/#jsonexceptiontype_error305","title":"json.exception.type_error.305","text":"

      The operator[] member functions can only be executed for certain JSON types.

      Example messages

      [json.exception.type_error.305] cannot use operator[] with a string argument with array\n
      [json.exception.type_error.305] cannot use operator[] with a numeric argument with object\n

      "},{"location":"home/exceptions/#jsonexceptiontype_error306","title":"json.exception.type_error.306","text":"

      The value() member functions can only be executed for certain JSON types.

      Example message

      [json.exception.type_error.306] cannot use value() with number\n
      "},{"location":"home/exceptions/#jsonexceptiontype_error307","title":"json.exception.type_error.307","text":"

      The erase() member functions can only be executed for certain JSON types.

      Example message

      [json.exception.type_error.307] cannot use erase() with string\n
      "},{"location":"home/exceptions/#jsonexceptiontype_error308","title":"json.exception.type_error.308","text":"

      The push_back() and operator+= member functions can only be executed for certain JSON types.

      Example message

      [json.exception.type_error.308] cannot use push_back() with string\n
      "},{"location":"home/exceptions/#jsonexceptiontype_error309","title":"json.exception.type_error.309","text":"

      The insert() member functions can only be executed for certain JSON types.

      Example messages

      [json.exception.type_error.309] cannot use insert() with array\n
      [json.exception.type_error.309] cannot use insert() with number\n

      "},{"location":"home/exceptions/#jsonexceptiontype_error310","title":"json.exception.type_error.310","text":"

      The swap() member functions can only be executed for certain JSON types.

      Example message

      [json.exception.type_error.310] cannot use swap() with number\n
      "},{"location":"home/exceptions/#jsonexceptiontype_error311","title":"json.exception.type_error.311","text":"

      The emplace() and emplace_back() member functions can only be executed for certain JSON types.

      Example messages

      [json.exception.type_error.311] cannot use emplace() with number\n
      [json.exception.type_error.311] cannot use emplace_back() with number\n

      "},{"location":"home/exceptions/#jsonexceptiontype_error312","title":"json.exception.type_error.312","text":"

      The update() member functions can only be executed for certain JSON types.

      Example message

      [json.exception.type_error.312] cannot use update() with array\n
      "},{"location":"home/exceptions/#jsonexceptiontype_error313","title":"json.exception.type_error.313","text":"

      The unflatten function converts an object whose keys are JSON Pointers back into an arbitrary nested JSON value. The JSON Pointers must not overlap, because then the resulting value would not be well-defined.

      Example message

      [json.exception.type_error.313] invalid value to unflatten\n
      "},{"location":"home/exceptions/#jsonexceptiontype_error314","title":"json.exception.type_error.314","text":"

      The unflatten function only works for an object whose keys are JSON Pointers.

      Example message

      Calling unflatten() on an array [1,2,3]:

      [json.exception.type_error.314] only objects can be unflattened\n
      "},{"location":"home/exceptions/#jsonexceptiontype_error315","title":"json.exception.type_error.315","text":"

      The unflatten() function only works for an object whose keys are JSON Pointers and whose values are primitive.

      Example message

      Calling unflatten() on an object {\"/1\", [1,2,3]}:

      [json.exception.type_error.315] values in object must be primitive\n
      "},{"location":"home/exceptions/#jsonexceptiontype_error316","title":"json.exception.type_error.316","text":"

      The dump() function only works with UTF-8 encoded strings; that is, if you assign a std::string to a JSON value, make sure it is UTF-8 encoded.

      Example message

      Calling dump() on a JSON value containing an ISO 8859-1 encoded string:

      [json.exception.type_error.316] invalid UTF-8 byte at index 15: 0x6F\n

      Tip

      • Store the source file with UTF-8 encoding.
      • Pass an error handler as last parameter to the dump() function to avoid this exception:
        • json::error_handler_t::replace will replace invalid bytes sequences with U+FFFD
        • json::error_handler_t::ignore will silently ignore invalid byte sequences
      "},{"location":"home/exceptions/#jsonexceptiontype_error317","title":"json.exception.type_error.317","text":"

      The dynamic type of the object cannot be represented in the requested serialization format (e.g. a raw true or null JSON object cannot be serialized to BSON)

      Example messages

      Serializing null to BSON:

      [json.exception.type_error.317] to serialize to BSON, top-level type must be object, but is null\n
      Serializing [1,2,3] to BSON:
      [json.exception.type_error.317] to serialize to BSON, top-level type must be object, but is array\n

      Tip

      Encapsulate the JSON value in an object. That is, instead of serializing true, serialize {\"value\": true}

      "},{"location":"home/exceptions/#out-of-range","title":"Out of range","text":"

      This exception is thrown in case a library function is called on an input parameter that exceeds the expected range, for instance in case of array indices or nonexisting object keys.

      Exceptions have ids 4xx.

      Example

      The following code shows how an out_of_range exception can be caught.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    try\n    {\n        // calling at() for an invalid index\n        json j = {1, 2, 3, 4};\n        j.at(4) = 10;\n    }\n    catch (const json::out_of_range& e)\n    {\n        // output exception information\n        std::cout << \"message: \" << e.what() << '\\n'\n                  << \"exception id: \" << e.id << std::endl;\n    }\n}\n

      Output:

      message: [json.exception.out_of_range.401] array index 4 is out of range\nexception id: 401\n
      "},{"location":"home/exceptions/#jsonexceptionout_of_range401","title":"json.exception.out_of_range.401","text":"

      The provided array index i is larger than size-1.

      Example message

      array index 3 is out of range\n
      "},{"location":"home/exceptions/#jsonexceptionout_of_range402","title":"json.exception.out_of_range.402","text":"

      The special array index - in a JSON Pointer never describes a valid element of the array, but the index past the end. That is, it can only be used to add elements at this position, but not to read it.

      Example message

      array index '-' (3) is out of range\n
      "},{"location":"home/exceptions/#jsonexceptionout_of_range403","title":"json.exception.out_of_range.403","text":"

      The provided key was not found in the JSON object.

      Example message

      key 'foo' not found\n
      "},{"location":"home/exceptions/#jsonexceptionout_of_range404","title":"json.exception.out_of_range.404","text":"

      A reference token in a JSON Pointer could not be resolved.

      Example message

      unresolved reference token 'foo'\n
      "},{"location":"home/exceptions/#jsonexceptionout_of_range405","title":"json.exception.out_of_range.405","text":"

      The JSON Patch operations 'remove' and 'add' can not be applied to the root element of the JSON value.

      Example message

      JSON pointer has no parent\n
      "},{"location":"home/exceptions/#jsonexceptionout_of_range406","title":"json.exception.out_of_range.406","text":"

      A parsed number could not be stored as without changing it to NaN or INF.

      Example message

      number overflow parsing '10E1000'\n
      "},{"location":"home/exceptions/#jsonexceptionout_of_range407","title":"json.exception.out_of_range.407","text":"

      UBJSON and BSON only support integer numbers up to 9223372036854775807.

      Example message

      number overflow serializing '9223372036854775808'\n

      Note

      Since version 3.9.0, integer numbers beyond int64 are serialized as high-precision UBJSON numbers, and this exception does not further occur.

      "},{"location":"home/exceptions/#jsonexceptionout_of_range408","title":"json.exception.out_of_range.408","text":"

      The size (following #) of an UBJSON array or object exceeds the maximal capacity.

      Example message

      excessive array size: 8658170730974374167\n
      "},{"location":"home/exceptions/#jsonexceptionout_of_range409","title":"json.exception.out_of_range.409","text":"

      Key identifiers to be serialized to BSON cannot contain code point U+0000, since the key is stored as zero-terminated c-string.

      Example message

      BSON key cannot contain code point U+0000 (at byte 2)\n
      "},{"location":"home/exceptions/#further-exceptions","title":"Further exceptions","text":"

      This exception is thrown in case of errors that cannot be classified with the other exception types.

      Exceptions have ids 5xx.

      Example

      The following code shows how an other_error exception can be caught.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    try\n    {\n        // executing a failing JSON Patch operation\n        json value = R\"({\n            \"best_biscuit\": {\n                \"name\": \"Oreo\"\n            }\n        })\"_json;\n        json patch = R\"([{\n            \"op\": \"test\",\n            \"path\": \"/best_biscuit/name\",\n            \"value\": \"Choco Leibniz\"\n        }])\"_json;\n        value.patch(patch);\n    }\n    catch (const json::other_error& e)\n    {\n        // output exception information\n        std::cout << \"message: \" << e.what() << '\\n'\n                  << \"exception id: \" << e.id << std::endl;\n    }\n}\n

      Output:

      message: [json.exception.other_error.501] unsuccessful: {\"op\":\"test\",\"path\":\"/best_biscuit/name\",\"value\":\"Choco Leibniz\"}\nexception id: 501\n
      "},{"location":"home/exceptions/#jsonexceptionother_error501","title":"json.exception.other_error.501","text":"

      A JSON Patch operation 'test' failed. The unsuccessful operation is also printed.

      Example message

      Executing {\"op\":\"test\", \"path\":\"/baz\", \"value\":\"bar\"} on {\"baz\": \"qux\"}:

      [json.exception.other_error.501] unsuccessful: {\"op\":\"test\",\"path\":\"/baz\",\"value\":\"bar\"}\n
      "},{"location":"home/faq/","title":"Frequently Asked Questions (FAQ)","text":""},{"location":"home/faq/#known-bugs","title":"Known bugs","text":""},{"location":"home/faq/#brace-initialization-yields-arrays","title":"Brace initialization yields arrays","text":"

      Question

      Why does

      json j{true};\n

      and

      json j(true);\n

      yield different results ([true] vs. true)?

      This is a known issue, and -- even worse -- the behavior differs between GCC and Clang. The \"culprit\" for this is the library's constructor overloads for initializer lists to allow syntax like

      json array = {1, 2, 3, 4};\n

      for arrays and

      json object = {{\"one\", 1}, {\"two\", 2}}; \n

      for objects.

      Tip

      To avoid any confusion and ensure portable code, do not use brace initialization with the types basic_json, json, or ordered_json unless you want to create an object or array as shown in the examples above.

      "},{"location":"home/faq/#limitations","title":"Limitations","text":""},{"location":"home/faq/#relaxed-parsing","title":"Relaxed parsing","text":"

      Question

      Can you add an option to ignore trailing commas?

      This library does not support any feature which would jeopardize interoperability.

      "},{"location":"home/faq/#parse-errors-reading-non-ascii-characters","title":"Parse errors reading non-ASCII characters","text":"

      Questions

      • Why is the parser complaining about a Chinese character?
      • Does the library support Unicode?
      • I get an exception [json.exception.parse_error.101] parse error at line 1, column 53: syntax error while parsing value - invalid string: ill-formed UTF-8 byte; last read: '\"Test\u00e9$')\"

      The library supports Unicode input as follows:

      • Only UTF-8 encoded input is supported which is the default encoding for JSON according to RFC 8259.
      • std::u16string and std::u32string can be parsed, assuming UTF-16 and UTF-32 encoding, respectively. These encodings are not supported when reading from files or other input containers.
      • Other encodings such as Latin-1 or ISO 8859-1 are not supported and will yield parse or serialization errors.
      • Unicode noncharacters will not be replaced by the library.
      • Invalid surrogates (e.g., incomplete pairs such as \\uDEAD) will yield parse errors.
      • The strings stored in the library are UTF-8 encoded. When using the default string type (std::string), note that its length/size functions return the number of stored bytes rather than the number of characters or glyphs.
      • When you store strings with different encodings in the library, calling dump() may throw an exception unless json::error_handler_t::replace or json::error_handler_t::ignore are used as error handlers.

      In most cases, the parser is right to complain, because the input is not UTF-8 encoded. This is especially true for Microsoft Windows where Latin-1 or ISO 8859-1 is often the standard encoding.

      "},{"location":"home/faq/#wide-string-handling","title":"Wide string handling","text":"

      Question

      Why are wide strings (e.g., std::wstring) dumped as arrays of numbers?

      As described above, the library assumes UTF-8 as encoding. To store a wide string, you need to change the encoding.

      Example

      #include <codecvt> // codecvt_utf8\n#include <locale>  // wstring_convert\n\n// encoding function\nstd::string to_utf8(std::wstring& wide_string)\n{\n    static std::wstring_convert<std::codecvt_utf8<wchar_t>> utf8_conv;\n    return utf8_conv.to_bytes(wide_string);\n}\n\njson j;\nstd::wstring ws = L\"\u8ecaB1234 \u3053\u3093\u306b\u3061\u306f\";\n\nj[\"original\"] = ws;\nj[\"encoded\"] = to_utf8(ws);\n\nstd::cout << j << std::endl;\n

      The result is:

      {\n  \"encoded\": \"\u8ecaB1234 \u3053\u3093\u306b\u3061\u306f\",\n  \"original\": [36554, 66, 49, 50, 51, 52, 32, 12371, 12435, 12395, 12385, 12399]\n}\n
      "},{"location":"home/faq/#exceptions","title":"Exceptions","text":""},{"location":"home/faq/#parsing-without-exceptions","title":"Parsing without exceptions","text":"

      Question

      Is it possible to indicate a parse error without throwing an exception?

      Yes, see Parsing and exceptions.

      "},{"location":"home/faq/#key-name-in-exceptions","title":"Key name in exceptions","text":"

      Question

      Can I get the key of the object item that caused an exception?

      Yes, you can. Please define the symbol JSON_DIAGNOSTICS to get extended diagnostics messages.

      "},{"location":"home/faq/#serialization-issues","title":"Serialization issues","text":""},{"location":"home/faq/#number-precision","title":"Number precision","text":"

      Question

      • It seems that precision is lost when serializing a double.
      • Can I change the precision for floating-point serialization?

      The library uses std::numeric_limits<number_float_t>::digits10 (15 for IEEE doubles) digits for serialization. This value is sufficient to guarantee roundtripping. If one uses more than this number of digits of precision, then string -> value -> string is not guaranteed to round-trip.

      cppreference.com

      The value of std::numeric_limits<T>::digits10 is the number of base-10 digits that can be represented by the type T without change, that is, any number with this many significant decimal digits can be converted to a value of type T and back to decimal form, without change due to rounding or overflow.

      Tip

      The website https://float.exposed gives a good insight into the internal storage of floating-point numbers.

      See this section on the library's number handling for more information.

      "},{"location":"home/faq/#compilation-issues","title":"Compilation issues","text":""},{"location":"home/faq/#android-sdk","title":"Android SDK","text":"

      Question

      Why does the code not compile with Android SDK?

      Android defaults to using very old compilers and C++ libraries. To fix this, add the following to your Application.mk. This will switch to the LLVM C++ library, the Clang compiler, and enable C++11 and other features disabled by default.

      APP_STL := c++_shared\nNDK_TOOLCHAIN_VERSION := clang3.6\nAPP_CPPFLAGS += -frtti -fexceptions\n

      The code compiles successfully with Android NDK, Revision 9 - 11 (and possibly later) and CrystaX's Android NDK version 10.

      "},{"location":"home/faq/#missing-stl-function","title":"Missing STL function","text":"

      Questions

      • Why do I get a compilation error 'to_string' is not a member of 'std' (or similarly, for strtod or strtof)?
      • Why does the code not compile with MinGW or Android SDK?

      This is not an issue with the code, but rather with the compiler itself. On Android, see above to build with a newer environment. For MinGW, please refer to this site and this discussion for information on how to fix this bug. For Android NDK using APP_STL := gnustl_static, please refer to this discussion.

      "},{"location":"home/license/","title":"License","text":"

      The class is licensed under the MIT License:

      Copyright \u00a9 2013-2024 Niels Lohmann

      Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \u201cSoftware\u201d), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

      The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

      THE SOFTWARE IS PROVIDED \u201cAS IS\u201d, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

      The class contains the UTF-8 Decoder from Bjoern Hoehrmann which is licensed under the MIT License (see above). Copyright \u00a9 2008-2009 Bj\u00f6rn Hoehrmann bjoern@hoehrmann.de

      The class contains a slightly modified version of the Grisu2 algorithm from Florian Loitsch which is licensed under the MIT License (see above). Copyright \u00a9 2009 Florian Loitsch

      The class contains a copy of Hedley from Evan Nemerson which is licensed as CC0-1.0.

      "},{"location":"home/releases/","title":"Releases","text":""},{"location":"home/releases/#v373","title":"v3.7.3","text":"

      Files

      • include.zip (274 KB)
      • include.zip.asc (1 KB)
      • json.hpp (791 KB)
      • json.hpp.asc (1 KB)

      Release date: 2019-11-17 SHA-256: 3b5d2b8f8282b80557091514d8ab97e27f9574336c804ee666fda673a9b59926 (json.hpp), 87b5884741427220d3a33df1363ae0e8b898099fbc59f1c451113f6732891014 (include.zip)

      "},{"location":"home/releases/#summary","title":"Summary","text":"

      This release fixes a bug introduced in release 3.7.2 which could yield quadratic complexity in destructor calls. All changes are backward-compatible.

      "},{"location":"home/releases/#bug-fixes","title":"Bug Fixes","text":"
      • Removed reserve() calls from the destructor which could lead to quadratic complexity. #1837 #1838
      "},{"location":"home/releases/#deprecated-functions","title":"Deprecated functions","text":"

      This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):

      • Function iterator_wrapper are deprecated. Please use the member function items() instead.
      • Functions friend std::istream& operator<<(basic_json&, std::istream&) and friend std::ostream& operator>>(const basic_json&, std::ostream&) are deprecated. Please use friend std::istream& operator>>(std::istream&, basic_json&) and friend operator<<(std::ostream&, const basic_json&) instead.
      "},{"location":"home/releases/#v372","title":"v3.7.2","text":"

      Files

      • include.zip (274 KB)
      • include.zip.asc (1 KB)
      • json.hpp (791 KB)
      • json.hpp.asc (1 KB)

      Release date: 2019-11-10 SHA-256: 0a65fcbbe1b334d3f45c9498e5ee28c3f3b2428aea98557da4a3ff12f0f14ad6 (json.hpp), 67f69c9a93b7fa0612dc1b6273119d2c560317333581845f358aaa68bff8f087 (include.zip)

      "},{"location":"home/releases/#summary_1","title":"Summary","text":"

      Project bad_json_parsers tested how JSON parser libraries react on deeply nested inputs. It turns out that this library segfaulted at a certain nesting depth. This bug was fixed with this release. Now the parsing is only bounded by the available memory. All changes are backward-compatible.

      "},{"location":"home/releases/#bug-fixes_1","title":"Bug Fixes","text":"
      • Fixed a bug that lead to stack overflow for deeply nested JSON values (objects, array) by changing the implementation of the destructor from a recursive to an iterative approach. #832, #1419, #1835
      "},{"location":"home/releases/#further-changes","title":"Further Changes","text":"
      • Added WhiteStone Bolt. #1830
      "},{"location":"home/releases/#deprecated-functions_1","title":"Deprecated functions","text":"

      This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):

      • Function iterator_wrapper are deprecated. Please use the member function items() instead.
      • Functions friend std::istream& operator<<(basic_json&, std::istream&) and friend std::ostream& operator>>(const basic_json&, std::ostream&) are deprecated. Please use friend std::istream& operator>>(std::istream&, basic_json&) and friend operator<<(std::ostream&, const basic_json&) instead.
      "},{"location":"home/releases/#v371","title":"v3.7.1","text":"

      Files

      • include.zip (273 KB)
      • include.zip.asc (1 KB)
      • json.hpp (789 KB)
      • json.hpp.asc (1 KB)

      Release date: 2019-11-06 SHA-256: b5ba7228f3c22a882d379e93d08eab4349458ee16fbf45291347994eac7dc7ce (json.hpp), 77b9f54b34e7989e6f402afb516f7ff2830df551c3a36973085e2c7a6b1045fe (include.zip)

      "},{"location":"home/releases/#summary_2","title":"Summary","text":"

      This release fixes several small bugs in the library. All changes are backward-compatible.

      "},{"location":"home/releases/#bug-fixes_2","title":"Bug Fixes","text":"
      • Fixed a segmentation fault when serializing std::int64_t minimum value. #1708 #1722
      • Fixed the contains() function for JSON Pointers. #1727 #1741
      • Fixed too lax SFINAE guard for conversion from std::pair and std::tuple to json. #1805 #1806 #1825 #1826
      • Fixed some regressions detected by UBSAN. Updated CI to use Clang-Tidy 7.1.0. #1716 #1728
      • Fixed integer truncation in iteration_proxy. #1797
      • Updated Hedley to v11 to fix a E2512 error in MSVC. #1799
      • Fixed a compile error in enum deserialization of non non-default-constructible types. #1647 #1821
      • Fixed the conversion from json to std::valarray.
      "},{"location":"home/releases/#improvements","title":"Improvements","text":"
      • The items() function can now be used with a custom string type. #1765
      • Made json_pointer::back const. #1764 #1769
      • Meson is part of the release archive. #1672 #1694
      • Improved documentation on the Meson and Spack package manager. #1694 #1720
      "},{"location":"home/releases/#further-changes_1","title":"Further Changes","text":"
      • Added GitHub Workflow with ubuntu-latest/GCC 7.4.0 as CI step.
      • Added GCC 9 to Travis CI to compile with C++20 support. #1724
      • Added MSVC 2019 to the AppVeyor CI. #1780
      • Added badge to fuzzing status.
      • Fixed some cppcheck warnings. #1760
      • Fixed several typos in the documentation. #1720 #1767 #1803
      • Added documentation on the JSON_THROW_USER, JSON_TRY_USER, and JSON_CATCH_USER macros to control user-defined exception handling.
      • Used GitHub's CODEOWNERS and SECURITY feature.
      • Removed GLOB from CMake files. #1779
      • Updated to Doctest 2.3.5.
      "},{"location":"home/releases/#deprecated-functions_2","title":"Deprecated functions","text":"

      This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):

      • Function iterator_wrapper are deprecated. Please use the member function items() instead.
      • Functions friend std::istream& operator<<(basic_json&, std::istream&) and friend std::ostream& operator>>(const basic_json&, std::ostream&) are deprecated. Please use friend std::istream& operator>>(std::istream&, basic_json&) and friend operator<<(std::ostream&, const basic_json&) instead.
      "},{"location":"home/releases/#v370","title":"v3.7.0","text":"

      Files

      • include.zip (143 KB)
      • include.zip.asc (1 KB)
      • json.hpp (782 KB)
      • json.hpp.asc (1 KB)

      Release date: 2019-07-28 SHA-256: a503214947952b69f0062f572cb74c17582a495767446347ce2e452963fc2ca4 (json.hpp), 541c34438fd54182e9cdc68dd20c898d766713ad6d901fb2c6e28ff1f1e7c10d (include.zip)

      "},{"location":"home/releases/#summary_3","title":"Summary","text":"

      This release introduces a few convenience functions and performs a lot of house keeping (bug fixes and small improvements). All changes are backward-compatible.

      "},{"location":"home/releases/#new-features","title":"New Features","text":"
      • Add overload of the contains function to check if a JSON pointer is valid without throwing exceptions, just like its counterpart for object keys. #1600
      • Add a function to_string to allow for generic conversion to strings. #916 #1585
      • Add return value for the emplace_back function, returning a reference to the added element just like C++17 is introducing this for std::vector. #1609
      • Add info how to use the library with the pacman package manager on MSYS2. #1670
      "},{"location":"home/releases/#bug-fixes_3","title":"Bug Fixes","text":"
      • Fix an issue where typedefs with certain names yielded a compilation error. #1642 #1643
      • Fix a conversion to std::string_view in the unit tests. #1634 #1639
      • Fix MSVC Debug build. #1536 #1570 #1608
      • Fix get_to method to clear existing content before writing. #1511 #1555
      • Fix a -Wc++17-extensions warning. nodiscard attributes are now only used with Clang when -std=c++17 is used. #1535 #1551
      "},{"location":"home/releases/#improvements_1","title":"Improvements","text":"
      • Switch from Catch to doctest for the unit tests which speeds up compilation and runtime of the 112,112,308 tests.
      • Add an explicit section to the README about the frequently addressed topics character encoding, comments in JSON, and the order of object keys.
      "},{"location":"home/releases/#further-changes_2","title":"Further Changes","text":"
      • Use GNUInstallDirs to set library install directories. #1673
      • Fix links in the README. #1620 #1621 #1622 #1623 #1625
      • Mention json type on the documentation start page. #1616
      • Complete documentation of value() function with respect to type_error.302 exception. #1601
      • Fix links in the documentation. #1598
      • Add regression tests for MSVC. #1543 #1570
      • Use CircleCI for continuous integration.
      • Use Doozer for continuous integration on Linux (CentOS, Raspbian, Fedora)
      • Add tests to check each CMake flag (JSON_BuildTests, JSON_Install, JSON_MultipleHeaders, JSON_Sanitizer, JSON_Valgrind, JSON_NoExceptions, JSON_Coverage).
      • Use Hedley to avoid re-inventing several compiler-agnostic feature macros like JSON_DEPRECATED, JSON_NODISCARD, JSON_LIKELY, JSON_UNLIKELY, JSON_HAS_CPP_14, or JSON_HAS_CPP_17. Functions taking or returning pointers are annotated accordingly when a pointer will not be null.
      • Build and run tests on AppVeyor in DEBUG and RELEASE mode.
      "},{"location":"home/releases/#deprecated-functions_3","title":"Deprecated functions","text":"

      This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):

      • Function iterator_wrapper are deprecated. Please use the member function items() instead.
      • Functions friend std::istream& operator<<(basic_json&, std::istream&) and friend std::ostream& operator>>(const basic_json&, std::ostream&) are deprecated. Please use friend std::istream& operator>>(std::istream&, basic_json&) and friend operator<<(std::ostream&, const basic_json&) instead.
      "},{"location":"home/releases/#v361","title":"v3.6.1","text":"

      Files

      • include.zip (136 KB)
      • include.zip.asc (1 KB)
      • json.hpp (711 KB)
      • json.hpp.asc (1 KB)

      Release date: 2019-03-20 SHA-256: d2eeb25d2e95bffeb08ebb7704cdffd2e8fca7113eba9a0b38d60a5c391ea09a (json.hpp), 69cc88207ce91347ea530b227ff0776db82dcb8de6704e1a3d74f4841bc651cf (include.zip)

      "},{"location":"home/releases/#summary_4","title":"Summary","text":"

      This release fixes a regression and a bug introduced by the earlier 3.6.0 release. All changes are backward-compatible.

      "},{"location":"home/releases/#bug-fixes_4","title":"Bug Fixes","text":"
      • Fixed regression of #590 which could lead to compilation errors with GCC 7 and GCC 8. #1530
      • Fixed a compilation error when <Windows.h> was included. #1531
      "},{"location":"home/releases/#further-changes_3","title":"Further Changes","text":"
      • Fixed a warning for missing field initializers. #1527
      "},{"location":"home/releases/#deprecated-functions_4","title":"Deprecated functions","text":"

      This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):

      • Function iterator_wrapper are deprecated. Please use the member function items() instead.
      • Functions friend std::istream& operator<<(basic_json&, std::istream&) and friend std::ostream& operator>>(const basic_json&, std::ostream&) are deprecated. Please use friend std::istream& operator>>(std::istream&, basic_json&) and friend operator<<(std::ostream&, const basic_json&) instead.
      "},{"location":"home/releases/#v360","title":"v3.6.0","text":"

      Files

      • include.zip (136 KB)
      • include.zip.asc (1 KB)
      • json.hpp (711 KB)
      • json.hpp.asc (1 KB)

      Release date: 2019-03-20 SHA-256: ce9839370f28094c71107c405affb3b08c4a098154988014cbb0800b1c44a831 (json.hpp), 237c5e66e7f8186a02804ce9dbd5f69ce89fe7424ef84adf6142e973bd9532f4 (include.zip)

      \u2139\ufe0f This release introduced a regression. Please update to version 3.6.1!

      "},{"location":"home/releases/#summary_5","title":"Summary","text":"

      This release adds some convenience functions for JSON Pointers, introduces a contains function to check if a key is present in an object, and improves the performance of integer serialization. Furthermore, a lot of small bug fixes and improvements have been made. All changes are backward-compatible.

      "},{"location":"home/releases/#new-features_1","title":"New Features","text":"
      • Overworked the public interface for JSON Pointers. The creation of JSON Pointers is simplified with operator/ and operator/=. JSON Pointers can be inspected with empty, back, and parent_pointer, and manipulated with push_back and pop_back. #1434
      • Added a boolean method contains to check whether an element exists in a JSON object with a given key. Returns false when called on non-object types. #1471 #1474
      "},{"location":"home/releases/#bug-fixes_5","title":"Bug Fixes","text":"
      • Fixed a compilation issues with libc 2.12. #1483 #1514
      • Fixed endian conversion on PPC64. #1489
      • Fixed library to compile with GCC 9. #1472 #1492
      • Fixed a compilation issue with GCC 7 on CentOS. #1496
      • Fixed an integer overflow. #1447
      • Fixed buffer flushing in serializer. #1445 #1446
      "},{"location":"home/releases/#improvements_2","title":"Improvements","text":"
      • The performance of dumping integers has been greatly improved. #1411
      • Added CMake parameter JSON_Install to control whether the library should be installed (default: on). #1330
      • Fixed a lot of compiler and linter warnings. #1400 #1435 #1502
      • Reduced required CMake version from 3.8 to 3.1. #1409 #1428 #1441 #1498
      • Added nodiscard attribute to meta(), array(), object(), from_cbor, from_msgpack, from_ubjson, from_bson, and parse. #1433
      "},{"location":"home/releases/#further-changes_4","title":"Further Changes","text":"
      • Added missing headers. #1500
      • Fixed typos and broken links in README. #1417 #1423 #1425 #1451 #1455 #1491
      • Fixed documentation of parse function. #1473
      • Suppressed warning that cannot be fixed inside the library. #1401 #1468
      • Imroved package manager suppert:
        • Updated Buckaroo instructions. #1495
        • Improved Meson support. #1463
        • Added Conda package manager documentation. #1430
        • Added NuGet package manager documentation. #1132
      • Continuous Integration
        • Removed unstable or deprecated Travis builders (Xcode 6.4 - 8.2) and added Xcode 10.1 builder.
        • Added Clang 7 to Travis CI.
        • Fixed AppVeyor x64 builds. #1374 #1414
      • Updated thirdparty libraries:
        • Catch 1.12.0 -> 1.12.2
        • Google Benchmark 1.3.0 -> 1.4.1
        • Doxygen 1.8.15 -> 1.8.16
      "},{"location":"home/releases/#deprecated-functions_5","title":"Deprecated functions","text":"

      This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):

      • Function iterator_wrapper are deprecated. Please use the member function items() instead.
      • Functions friend std::istream& operator<<(basic_json&, std::istream&) and friend std::ostream& operator>>(const basic_json&, std::ostream&) are deprecated. Please use friend std::istream& operator>>(std::istream&, basic_json&) and friend operator<<(std::ostream&, const basic_json&) instead.
      "},{"location":"home/releases/#v350","title":"v3.5.0","text":"

      Files

      • include.zip (133 KB)
      • include.zip.asc (1 KB)
      • json.hpp (693 KB)
      • json.hpp.asc (1 KB)

      Release date: 2018-12-22 SHA-256: 8a6dbf3bf01156f438d0ca7e78c2971bca50eec4ca6f0cf59adf3464c43bb9d5 (json.hpp), 3564da9c5b0cf2e032f97c69baedf10ddbc98030c337d0327a215ea72259ea21 (include.zip)

      "},{"location":"home/releases/#summary_6","title":"Summary","text":"

      This release introduces the support for structured bindings and reading from FILE*. Besides, a few bugs have been fixed. All changes are backward-compatible.

      "},{"location":"home/releases/#new-features_2","title":"New Features","text":"
      • Structured bindings are now supported for JSON objects and arrays via the items() member function, so finally this code is possible:

        for (auto& [key, val] : j.items()) {\n    std::cout << key << ':' << val << '\\n';\n}\n
        #1388 #1391

      • Added support for reading from FILE* to support situations in which streams are nit available or would require too much RAM. #1370 #1392

      "},{"location":"home/releases/#bug-fixes_6","title":"Bug Fixes","text":"
      • The eofbit was not set for input streams when the end of a stream was reached while parsing. #1340 #1343
      • Fixed a bug in the SAX parser for BSON arrays.
      "},{"location":"home/releases/#improvements_3","title":"Improvements","text":"
      • Added support for Clang 5.0.1 (PS4 version). #1341 #1342
      "},{"location":"home/releases/#further-changes_5","title":"Further Changes","text":"
      • Added a warning for implicit conversions to the documentation: It is not recommended to use implicit conversions when reading from a JSON value. Details about this recommendation can be found here. #1363
      • Fixed typos in the documentation. #1329 #1380 #1382
      • Fixed a C4800 warning. #1364
      • Fixed a -Wshadow warning #1346
      • Wrapped std::snprintf calls to avoid error in MSVC. #1337
      • Added code to allow installation via Meson. #1345
      "},{"location":"home/releases/#deprecated-functions_6","title":"Deprecated functions","text":"

      This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):

      • Function iterator_wrapper are deprecated. Please use the member function items() instead.
      • Functions friend std::istream& operator<<(basic_json&, std::istream&) and friend std::ostream& operator>>(const basic_json&, std::ostream&) are deprecated. Please use friend std::istream& operator>>(std::istream&, basic_json&) and friend operator<<(std::ostream&, const basic_json&) instead.
      "},{"location":"home/releases/#v340","title":"v3.4.0","text":"

      Files

      • include.zip (132 KB)
      • include.zip.asc (1 KB)
      • json.hpp (689 KB)
      • json.hpp.asc (1 KB)

      Release date: 2018-10-30 SHA-256: 63da6d1f22b2a7bb9e4ff7d6b255cf691a161ff49532dcc45d398a53e295835f (json.hpp), bfec46fc0cee01c509cf064d2254517e7fa80d1e7647fea37cf81d97c5682bdc (include.zip)

      "},{"location":"home/releases/#summary_7","title":"Summary","text":"

      This release introduces three new features:

      • BSON (Binary JSON) is next to CBOR, MessagePack, and UBJSON the fourth binary (de)serialization format supported by the library.
      • Adjustable error handlers for invalid Unicode allows to specify the behavior when invalid byte sequences are serialized.
      • Simplified enum/JSON mapping with a macro in case the default mapping to integers is not desired.

      Furthermore, some effort has been invested in improving the parse error messages. Besides, a few bugs have been fixed. All changes are backward-compatible.

      "},{"location":"home/releases/#new-features_3","title":"New Features","text":"
      • The library can read and write a subset of BSON (Binary JSON). All data types known from JSON are supported, whereas other types more tied to MongoDB such as timestamps, object ids, or binary data are currently not implemented. See the README for examples. #1244 #1320
      • The behavior when the library encounters an invalid Unicode sequence during serialization can now be controlled by defining one of three Unicode error handlers: (1) throw an exception (default behavior), (2) replace invalid sequences by the Unicode replacement character (U+FFFD), or (3) ignore/filter invalid sequences. See the documentation of the dump function for examples. #1198 #1314
      • To easily specify a user-defined enum/JSON mapping, a macro NLOHMANN_JSON_SERIALIZE_ENUM has been introduced. See the README section for more information. #1208 #1323
      "},{"location":"home/releases/#bug-fixes_7","title":"Bug Fixes","text":"
      • fixed truncation #1286 #1315
      • fixed an issue with std::pair #1299 #1301
      • fixed an issue with std::variant #1292 #1294
      • fixed a bug in the JSON Pointer parser
      "},{"location":"home/releases/#improvements_4","title":"Improvements","text":"
      • The diagnosis messages for parse errors have been improved: error messages now indicated line/column positions where possible (in addition to a byte count) and also the context in which the error occurred (e.g., \"while parsing a JSON string\"). Example: error parse error at 2: syntax error - invalid string: control character must be escaped; last read: '<U+0009>' is now reported as parse error at line 1, column 2: syntax error while parsing value - invalid string: control character U+0009 (HT) must be escaped to \\u0009 or \\t; last read: '<U+0009>'. #1280 #1288 #1303
      "},{"location":"home/releases/#further-changes_6","title":"Further Changes","text":"
      • improved Meson documentation #1305
      • fixed some more linter warnings #1280
      • fixed Clang detection for third-party Google Benchmark library #1277
      "},{"location":"home/releases/#deprecated-functions_7","title":"Deprecated functions","text":"

      This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):

      • Function iterator_wrapper are deprecated. Please use the member function items() instead.
      • Functions friend std::istream& operator<<(basic_json&, std::istream&) and friend std::ostream& operator>>(const basic_json&, std::ostream&) are deprecated. Please use friend std::istream& operator>>(std::istream&, basic_json&) and friend operator<<(std::ostream&, const basic_json&) instead.
      "},{"location":"home/releases/#v330","title":"v3.3.0","text":"

      Files

      • include.zip (123 KB)
      • include.zip.asc (1 KB)
      • json.hpp (635 KB)
      • json.hpp.asc (1 KB)

      Release date: 2018-10-05 SHA-256: f1327bb60c58757a3dd2b0c9c45d49503d571337681d950ec621f8374bcc14d4 (json.hpp), 9588d63557333aaa485e92221ec38014a85a6134e7486fe3441e0541a5a89576 (include.zip)

      "},{"location":"home/releases/#summary_8","title":"Summary","text":"

      This release adds support for GCC 4.8. Furthermore, it adds a function get_to to write a JSON value to a passed reference. Another topic of this release was the CMake support which has been overworked and documented.

      Besides, a lot of bugs have been fixed and slight improvements have been made. All changes are backward-compatible.

      "},{"location":"home/releases/#new-features_4","title":"New Features","text":"
      • The library can now also built with GCC 4.8. Though this compiler does not fully support C++11, it can successfully compile and run the test suite. Note that bug 57824 in GCC 4.8 still forbids to use multiline raw strings in arguments to macros. #1257
      • Added new function get_to to write a JSON value to a passed reference. The destination type is automatically derived which allows more succinct code compared to the get function. #1227 #1231
      "},{"location":"home/releases/#bug-fixes_8","title":"Bug Fixes","text":"
      • Fixed a bug in the CMake file that made target_link_libraries to not properly include nlohmann_json. #1243 #1245 #1260
      • Fixed a warning in MSVC 2017 complaining about a constexpr if. #1204 #1268 #1272
      • Fixed a bug that prevented compilation with ICPC. #755 #1222
      • Improved the SFINAE correctness to fix a bug in the conversion operator. #1237 #1238
      • Fixed a -Wctor-dtor-privacy warning. #1224
      • Fixed a warning on a lambda in unevaluated context. #1225 #1230
      • Fixed a bug introduced in version 3.2.0 where defining JSON_CATCH_USER led to duplicate macro definition of JSON_INTERNAL_CATCH. #1213 #1214
      • Fixed a bug that prevented compilation with Clang 3.4.2 in RHEL 7. #1179 #1249
      "},{"location":"home/releases/#improvements_5","title":"Improvements","text":"
      • Added documentation on CMake integration of the library. #1270
      • Changed the CMake file to use find_package(nlohmann_json) without installing the library. #1202
      • Improved error messages in case operator[] is used with the wrong combination (json.exception.type_error.305) of JSON container type and argument type. Example: \"cannot use operator[] with a string argument\". #1220 #1221
      • Added a license and version information to the Meson build file. #1252
      • Removed static assertions to indicated missing to_json or from_json functions as such assertions do not play well with SFINAE. These assertions also led to problems with GMock. #960 #1212 #1228
      • The test suite now does not wait forever if run in a wrong directory and input files are not found. #1262
      • The test suite does not show deprecation warnings for deprecated functions which frequently led to confusion. #1271
      "},{"location":"home/releases/#further-changes_7","title":"Further Changes","text":"
      • GCC 4.8 and Xcode 10 were added to the continuous integration suite at Travis.
      • Added lgtm checks to pull requests.
      • Added tests for CMake integration. #1260
      "},{"location":"home/releases/#deprecated-functions_8","title":"Deprecated functions","text":"

      This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):

      • Function iterator_wrapper are deprecated. Please use the member function items() instead.
      • Functions friend std::istream& operator<<(basic_json&, std::istream&) and friend std::ostream& operator>>(const basic_json&, std::ostream&) are deprecated. Please use friend std::istream& operator>>(std::istream&, basic_json&) and friend operator<<(std::ostream&, const basic_json&) instead.
      "},{"location":"home/releases/#v320","title":"v3.2.0","text":"

      Files

      • include.zip (124 KB)
      • include.zip.asc (1 KB)
      • json.hpp (636 KB)
      • json.hpp.asc (1 KB)

      Release date: 2018-08-20 SHA-256: ce6b5610a051ec6795fa11c33854abebb086f0fd67c311f5921c3c07f9531b44 (json.hpp), 35ee642558b90e2f9bc758995c4788c4b4d4dec54eef95fb8f38cb4d49c8fc7c (include.zip)

      "},{"location":"home/releases/#summary_9","title":"Summary","text":"

      This release introduces a SAX interface to the library. While this may be a very special feature used by only few people, it allowed to unify all functions that consumed input and created some kind of JSON value. Internally, now all existing functions like parse, accept, from_cbor, from_msgpack, and from_ubjson use the SAX interface with different event processors. This allowed to separate the input processing from the value generation. Furthermore, throwing an exception in case of a parse error is now optional and up to the event processor. Finally, the JSON parser is now non-recursive (meaning it does not use the call stack, but std::vector<bool> to track the hierarchy of structured values) which allows to process nested input more efficiently.

      Furthermore, the library finally is able to parse from wide string types. This is the first step toward opening the library from UTF-8 to UTF-16 and UTF-32.

      This release further fixes several bugs in the library. All changes are backward-compatible.

      "},{"location":"home/releases/#new-features_5","title":"New Features","text":"
      • added a parser with a SAX interface (#971, #1153)
      • support to parse from wide string types std::wstring, std::u16string, and std::u32string; the input will be converted to UTF-8 (#1031)
      • added support for std::string_view when using C++17 (#1028)
      • allow to roundtrip std::map and std::unordered_map from JSON if key type is not convertible to string; in these cases, values are serialized to arrays of pairs (#1079, #1089, #1133, #1138)
      "},{"location":"home/releases/#bug-fixes_9","title":"Bug Fixes","text":"
      • allow to create nullptr_t from JSON allowing to properly roundtrip null values (#1169)
      • allow compare user-defined string types (#1130)
      • better support for algorithms using iterators from items() (#1045, #1134)
      • added parameter to avoid compilation error with MSVC 2015 debug builds (#1114)
      • re-added accidentally skipped unit tests (#1176)
      • fixed MSVC issue with std::swap (#1168)
      "},{"location":"home/releases/#improvements_6","title":"Improvements","text":"
      • key() function for iterators returns a const reference rather than a string copy (#1098)
      • binary formats CBOR, MessagePack, and UBJSON now supports float as type for floating-point numbers (#1021)
      "},{"location":"home/releases/#further-changes_8","title":"Further Changes","text":"
      • changed issue templates
      • improved continuous integration: added builders for Xcode 9.3 and 9.4, added builders for GCC 8 and Clang 6, added builder for MinGW, added builders for MSVC targeting x86
      • required CMake version is now at least 3.8 (#1040)
      • overworked CMake file wrt. packaging (#1048)
      • added package managers: Spack (#1041) and CocoaPods (#1148)
      • fixed Meson include directory (#1142)
      • preprocessor macro JSON_SKIP_UNSUPPORTED_COMPILER_CHECK can skip the rejection of unsupported compilers - use at your own risk! (#1128)
      • preprocessor macro JSON_INTERNAL_CATCH/JSON_INTERNAL_CATCH_USER allows to control the behavior of exception handling inside the library (#1187)
      • added note on char to JSON conversion
      • added note how to send security-related issue via encrypted email
      • removed dependency to std::stringstream (#1117)
      • added SPDX-License-Identifier
      • added updated JSON Parsing Test Suite, described in Parsing JSON is a Minefield \ud83d\udca3
      • updated to Catch 1.12.0
      "},{"location":"home/releases/#deprecated-functions_9","title":"Deprecated functions","text":"

      This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):

      • Function iterator_wrapper are deprecated. Please use the member function items() instead.
      • Functions friend std::istream& operator<<(basic_json&, std::istream&) and friend std::ostream& operator>>(const basic_json&, std::ostream&) are deprecated. Please use friend std::istream& operator>>(std::istream&, basic_json&) and friend operator<<(std::ostream&, const basic_json&) instead.
      "},{"location":"home/releases/#v312","title":"v3.1.2","text":"

      Files

      • include.zip (115 KB)
      • include.zip.asc (1 KB)
      • json.hpp (582 KB)
      • json.hpp.asc (1 KB)

      Release date: 2018-03-14 SHA-256: fbdfec4b4cf63b3b565d09f87e6c3c183bdd45c5be1864d3fcb338f6f02c1733 (json.hpp), 495362ee1b9d03d9526ba9ccf1b4a9c37691abe3a642ddbced13e5778c16660c (include.zip)

      "},{"location":"home/releases/#summary_10","title":"Summary","text":"

      This release fixes several bugs in the library. All changes are backward-compatible.

      "},{"location":"home/releases/#bug-fixes_10","title":"Bug Fixes","text":"
      • Fixed a memory leak occurring in the parser callback (#1001).
      • Different specializations of basic_json (e.g., using different template arguments for strings or objects) can now be used in assignments (#972, #977, #986).
      • Fixed a logical error in an iterator range check (#992).
      "},{"location":"home/releases/#improvements_7","title":"Improvements","text":"
      • The parser and the serialization now support user-defined string types (#1006, #1009).
      "},{"location":"home/releases/#further-changes_9","title":"Further Changes","text":"
      • Clang Analyzer is now used as additional static analyzer; see make clang_analyze.
      • Overworked README by adding links to the documentation (#981).
      "},{"location":"home/releases/#deprecated-functions_10","title":"Deprecated functions","text":"

      This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):

      • Function iterator_wrapper are deprecated. Please use the member function items() instead.
      • Functions friend std::istream& operator<<(basic_json&, std::istream&) and friend std::ostream& operator>>(const basic_json&, std::ostream&) are deprecated. Please use friend std::istream& operator>>(std::istream&, basic_json&) and friend operator<<(std::ostream&, const basic_json&) instead.
      "},{"location":"home/releases/#v311","title":"v3.1.1","text":"

      Files

      • include.zip (114 KB)
      • include.zip.asc (1 KB)
      • json.hpp (577 KB)
      • json.hpp.asc (1 KB)

      Release date: 2018-02-13 SHA-256: e14ce5e33d6a2daf748026bd4947f3d9686ca4cfd53d10c3da46a0a9aceb7f2e (json.hpp), fde771d4b9e4f222965c00758a2bdd627d04fb7b59e09b7f3d1965abdc848505 (include.zip)

      "},{"location":"home/releases/#summary_11","title":"Summary","text":"

      This release fixes several bugs in the library. All changes are backward-compatible.

      "},{"location":"home/releases/#bug-fixes_11","title":"Bug Fixes","text":"
      • Fixed parsing of CBOR strings with indefinite length (#961). Earlier versions of this library misinterpreted the CBOR standard and rejected input with the 0x7F start byte.
      • Fixed user-defined conversion to vector type (#924, #969). A wrong SFINAE check rejected code though a user-defined conversion was provided.
      • Fixed documentation of the parser behavior for objects with duplicate keys (#963). The exact behavior is not specified by RFC 8259 and the library now also provides no guarantee which object key is stored.
      • Added check to detect memory overflow when parsing UBJSON containers (#962). The optimized UBJSON format allowed for specifying an array with billions of null elements with a few bytes and the library did not check whether this size exceeded max_size().
      "},{"location":"home/releases/#further-changes_10","title":"Further Changes","text":"
      • Code coverage is now calculated for the individual header files, allowing to find uncovered lines more quickly than by browsing through the single header version (#953, #957).
      • A Makefile target run_benchmarks was added to quickly build and run the benchmark suite.
      • The documentation was harmonized with respect to the header inclusion (#955). Now all examples and the README use #include <nlohmann/json.hpp> to allow for selecting single_include or include or whatever installation folder as include directory.
      • Added note on how to use the library with the cget package manager (#954).
      "},{"location":"home/releases/#deprecated-functions_11","title":"Deprecated functions","text":"

      This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):

      • Function iterator_wrapper are deprecated. Please use the member function items() instead.
      • Functions friend std::istream& operator<<(basic_json&, std::istream&) and friend std::ostream& operator>>(const basic_json&, std::ostream&) are deprecated. Please use friend std::istream& operator>>(std::istream&, basic_json&) and friend operator<<(std::ostream&, const basic_json&) instead.
      "},{"location":"home/releases/#v310","title":"v3.1.0","text":"

      Files

      • include.zip (114 KB)
      • include.zip.asc (1 KB)
      • json.hpp (577 KB)
      • json.hpp.asc (1 KB)

      Release date: 2018-02-01 SHA-256: d40f614d10a6e4e4e80dca9463da905285f20e93116c36d97d4dc1aa63d10ba4 (json.hpp), 2b7234fca394d1e27b7e017117ed80b7518fafbb4f4c13a7c069624f6f924673 (include.zip)

      "},{"location":"home/releases/#summary_12","title":"Summary","text":"

      This release adds support for the UBJSON format and JSON Merge Patch. It also contains some minor changes and bug fixes. All changes are backward-compatible.

      "},{"location":"home/releases/#new-features_6","title":"New features","text":"
      • The library now supports UBJSON (Universal Binary JSON Specification) as binary format to read and write JSON values space-efficiently. See the documentation overview for a comparison of the different formats CBOR, MessagePack, and UBJSON.
      • JSON Merge Patch (RFC 7386) offers an intuitive means to describe patches between JSON values (#876, #877). See the documentation of merge_patch for more information.
      "},{"location":"home/releases/#improvements_8","title":"Improvements","text":"
      • The library now uses the Grisu2 algorithm for printing floating-point numbers (based on the reference implementation by Florian Loitsch) which produces a short representation which is guaranteed to round-trip (#360, #935, #936).
      • The UTF-8 handling was further simplified by using the decoder of Bj\u00f6rn Hoehrmann in more scenarios.
      "},{"location":"home/releases/#reorganization","title":"Reorganization","text":"
      • Though the library is released as a single header, its development got more and more complicated. With this release, the header is split into several files and the single-header file json.hpp can be generated from these development sources. In the repository, folder include contains the development sources and single_include contains the single json.hpp header (#700, #906, #907, #910, #911, #915, #920, #924, #925, #928, #944).
      • The split further allowed for a forward declaration header include/nlohmann/json_fwd.hpp to speed up compilation times (#314).
      "},{"location":"home/releases/#further-changes_11","title":"Further changes","text":"
      • Google Benchmark is now used for micro benchmarks (see benchmarks folder, #921).
      • The serialization (JSON and binary formats) now properly work with the libraries string template parameter, allowing for optimized string implementations to be used in constraint environments such as embedded software (#941, #950).
      • The exceptional behavior can now be overridden by defining macros JSON_THROW_USER, JSON_TRY_USER, and JSON_CATCH_USER, defining the behavior of throw, try and catch, respectively. This allows to switch off C++'s exception mechanism yet still execute user-defined code in case an error condition occurs (#938).
      • To facilitate the interplay with flex and Bison, the library does not use the variable name yytext any more as it could clash with macro definitions (#933).
      • The library now defines NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, and NLOHMANN_JSON_VERSION_PATCH to allow for conditional compilation based on the included library version (#943, #948).
      • A compilation error with ICC has been fixed (#947).
      • Typos and links in the documentation have been fixed (#900, #930).
      • A compiler error related to incomplete types has been fixed (#919).
      • The tests form the UTF-8 decoder stress test have been added to the test suite.
      "},{"location":"home/releases/#deprecated-functions_12","title":"Deprecated functions","text":"
      • Function iterator_wrapper has been deprecated (#874). Since its introduction, the name was up for discussion, as it was too technical. We now introduced the member function items() with the same semantics. iterator_wrapper will be removed in the next major version (i.e., 4.0.0).

      Furthermore, the following functions are deprecated since version 3.0.0 and will be removed in the next major version (i.e., 4.0.0):

      • friend std::istream& operator<<(basic_json&, std::istream&)
      • friend std::ostream& operator>>(const basic_json&, std::ostream&)

      Please use friend std::istream& operator>>(std::istream&, basic_json&) and friend operator<<(std::ostream&, const basic_json&) instead.

      "},{"location":"home/releases/#v301","title":"v3.0.1","text":"

      Files

      • json.hpp (502 KB)
      • json.hpp.asc (1 KB)

      Release date: 2017-12-29 SHA-256: c9b3591f1bb94e723a0cd7be861733a3a555b234ef132be1e9027a0364118c4c

      "},{"location":"home/releases/#summary_13","title":"Summary","text":"

      This release fixes small issues in the implementation of JSON Pointer and JSON Patch. All changes are backward-compatible.

      "},{"location":"home/releases/#changes","title":"Changes","text":"
      • The \"copy\" operation of JSON Patch (RFC 6902) requests that it is an error if the target path points into a non-existing array or object (see #894 for a detailed description). This release fixes the implementation to detect such invalid target paths and throw an exception.
      • An array index in a JSON Pointer (RFC 6901) must be an integer. This release fixes the implementation to throw an exception in case invalid array indices such as 10e2 are used.
      • Added the JSON Patch tests from Byron Ruth and Mike McCabe.
      • Fixed the documentation of the at(ptr) function with JSON Pointers to list all possible exceptions (see #888).
      • Updated the container overview documentation (see #883).
      • The CMake files now respect the BUILD_TESTING option (see #846, #885)
      • Fixed some compiler warnings (see #858, #882).
      "},{"location":"home/releases/#deprecated-functions_13","title":"Deprecated functions","text":"

      To unify the interfaces and to improve similarity with the STL, the following functions are deprecated since version 3.0.0 and will be removed in the next major version (i.e., 4.0.0):

      • friend std::istream& operator<<(basic_json&, std::istream&)
      • friend std::ostream& operator>>(const basic_json&, std::ostream&)

      Please use friend std::istream& operator>>(std::istream&, basic_json&) and friend operator<<(std::ostream&, const basic_json&) instead.

      "},{"location":"home/releases/#v300","title":"v3.0.0","text":"

      Files

      • json.hpp (501 KB)
      • json.hpp.asc (1 KB)

      Release date: 2017-12-17 SHA-256: 076d4a0cb890a3c3d389c68421a11c3d77c64bd788e85d50f1b77ed252f2a462

      "},{"location":"home/releases/#summary_14","title":"Summary","text":"

      After almost a year, here is finally a new release of JSON for Modern C++, and it is a major one! As we adhere to semantic versioning, this means the release includes some breaking changes, so please read the next section carefully before you update. But don't worry, we also added a few new features and put a lot of effort into fixing a lot of bugs and straighten out a few inconsistencies.

      "},{"location":"home/releases/#breaking-changes","title":"Breaking changes","text":"

      This section describes changes that change the public API of the library and may require changes in code using a previous version of the library. In section \"Moving from 2.x.x to 3.0.0\" at the end of the release notes, we describe in detail how existing code needs to be changed.

      • The library now uses user-defined exceptions instead of re-using those defined in <stdexcept> (#244). This not only allows to add more information to the exceptions (every exception now has an identifier, and parse errors contain the position of the error), but also to easily catch all library exceptions with a single catch(json::exception).
      • When strings with a different encoding as UTF-8 were stored in JSON values, their serialization could not be parsed by the library itself, as only UTF-8 is supported. To enforce this library limitation and improve consistency, non-UTF-8 encoded strings now yield a json::type_error exception during serialization (#838). The check for valid UTF-8 is realized with code from Bj\u00f6rn Hoehrmann.
      • NaN and infinity values can now be stored inside the JSON value without throwing an exception. They are, however, still serialized as null (#388).
      • The library's iterator tag was changed from RandomAccessIterator to BidirectionalIterator (#593). Supporting RandomAccessIterator was incorrect as it assumed an ordering of values in a JSON objects which are unordered by definition.
      • The library does not include the standard headers <iostream>, <ctype>, and <stdexcept> any more. You may need to add these headers to code relying on them.
      • Removed constructor explicit basic_json(std::istream& i, const parser_callback_t cb = nullptr) which was deprecated in version 2.0.0 (#480).
      "},{"location":"home/releases/#deprecated-functions_14","title":"Deprecated functions","text":"

      To unify the interfaces and to improve similarity with the STL, the following functions are now deprecated and will be removed in the next major version (i.e., 4.0.0):

      • friend std::istream& operator<<(basic_json&, std::istream&)
      • friend std::ostream& operator>>(const basic_json&, std::ostream&)

      Please use friend std::istream& operator>>(std::istream&, basic_json&) and friend operator<<(std::ostream&, const basic_json&) instead.

      "},{"location":"home/releases/#new-features_7","title":"New features","text":"

      With all this breaking and deprecation out of the way, let's talk about features!

      • We improved the diagnostic information for syntax errors (#301). Now, an exception json::parse_error is thrown which contains a detailed message on the error, but also a member byte to indicate the byte offset in the input where the error occurred.
      • We added a non-throwing syntax check (#458): The new accept function returns a Boolean indicating whether the input is proper JSON. We also added a Boolean parameter allow_exceptions to the existing parse functions to return a discarded value in case a syntax error occurs instead of throwing an exception.
      • An update function was added to merge two JSON objects (#428). In case you are wondering: the name was inspired by Python.
      • The insert function now also supports an iterator range to add elements to an object.
      • The binary exchange formats CBOR and MessagePack can now be parsed from input streams and written to output streams (#477).
      • Input streams are now only read until the end of a JSON value instead of the end of the input (#367).
      • The serialization function dump now has two optional parameters ensure_ascii to escape all non-ASCII characters with \\uxxxx and an indent_char parameter to choose whether to indent with spaces or tabs (#654).
      • Added built-in type support for C arrays (#502), std::pair and std::tuple (#563, #614), enum and enum class (#545), std::vector<bool> (#494). Fixed support for std::valarray (#702), std::array (#553), and std::map<std::string, std::string> (#600, #607).
      "},{"location":"home/releases/#further-changes_12","title":"Further changes","text":"

      Furthermore, there have been a lot of changes under the hood:

      • Replaced the re2c generated scanner by a self-coded version which allows for a better modularization of the parser and better diagnostics. To test the new scanner, we added millions (8,860,608 to be exact) of unit tests to check all valid and invalid byte sequences of the Unicode standard.
      • Google's OSS-Fuzz is still constantly fuzz-testing the library and found several issues that were fixed in this release (#497, #504, #514, #516, #518, #519, #575).
      • We now also ignore UTF-8 byte order marks when parsing from an iterator range (#602).
      • Values can be now moved from initializer lists (#663).
      • Updated to Catch 1.9.7. Unfortunately, Catch2 currently has some performance issues.
      • The non-exceptional paths of the library are now annotated with __builtin_expect to optimize branch prediction as long as no error occurs.
      • MSVC now produces a stack trace in MSVC if a from_json or to_json function was not found for a user-defined type. We also added a debug visualizer nlohmann_json.natvis for better debugging in MSVC (#844).
      • Overworked the documentation and added even more examples.
      • The build workflow now relies on CMake and CTest. Special flags can be chosen with CMake, including coverage (JSON_Coverage), compilation without exceptions (JSON_NoExceptions), LLVM sanitizers (JSON_Sanitizer), or execution with Valgrind (JSON_Valgrind).
      • Added support for package managers Meson (#576), Conan (#566), Hunter (#671, #829), and vcpkg (#753).
      • Added CI builders: Xcode 8.3, 9.0, 9.1, and 9.2; GCC 7.2; Clang 3.8, 3.9, 4.0, and 5.0; Visual Studio 2017. The library is further built with C++17 settings on the latest Clang, GCC, and MSVC version to quickly detect new issues.
      "},{"location":"home/releases/#moving-from-2xx-to-300","title":"Moving from 2.x.x to 3.0.0","text":""},{"location":"home/releases/#user-defined-exceptions","title":"User-defined Exceptions","text":"

      There are five different exceptions inheriting from json::exception:

      • json::parse_error for syntax errors (including the binary formats),
      • json::invalid_iterator for errors related to iterators,
      • json::type_error for errors where functions were called with the wrong JSON type,
      • json::out_of_range for range errors, and
      • json::other_error for miscellaneous errors.

      To support these exception, the try/catch blocks of your code need to be adjusted:

      new exception previous exception parse_error.101 invalid_argument parse_error.102 invalid_argument parse_error.103 invalid_argument parse_error.104 invalid_argument parse_error.105 invalid_argument parse_error.106 domain_error parse_error.107 domain_error parse_error.108 domain_error parse_error.109 invalid_argument parse_error.110 out_of_range parse_error.111 invalid_argument parse_error.112 invalid_argument invalid_iterator.201 domain_error invalid_iterator.202 domain_error invalid_iterator.203 domain_error invalid_iterator.204 out_of_range invalid_iterator.205 out_of_range invalid_iterator.206 domain_error invalid_iterator.207 domain_error invalid_iterator.208 domain_error invalid_iterator.209 domain_error invalid_iterator.210 domain_error invalid_iterator.211 domain_error invalid_iterator.212 domain_error invalid_iterator.213 domain_error invalid_iterator.214 out_of_range type_error.301 domain_error type_error.302 domain_error type_error.303 domain_error type_error.304 domain_error type_error.305 domain_error type_error.306 domain_error type_error.307 domain_error type_error.308 domain_error type_error.309 domain_error type_error.310 domain_error type_error.311 domain_error type_error.313 domain_error type_error.314 domain_error type_error.315 domain_error out_of_range.401 out_of_range out_of_range.402 out_of_range out_of_range.403 out_of_range out_of_range.404 out_of_range out_of_range.405 domain_error other_error.501 domain_error"},{"location":"home/releases/#handling-of-nan-and-inf","title":"Handling of NaN and INF","text":"
      • If an overflow occurs during parsing a number from a JSON text, an exception json::out_of_range is thrown so that the overflow is detected early and roundtripping is guaranteed.

      • NaN and INF floating-point values can be stored in a JSON value and are not replaced by null. That is, the basic_json class behaves like double in this regard (no exception occurs). However, NaN and INF are serialized to null.

      "},{"location":"home/releases/#removal-of-deprecated-functions","title":"Removal of deprecated functions","text":"

      Function explicit basic_json(std::istream& i, const parser_callback_t cb = nullptr) should be replaced by the parse function: Let ss be a stream and cb be a parse callback function.

      Old code:

      json j(ss, cb);\n

      New code:

      json j = json::parse(ss, cb);\n

      If no callback function is used, also the following code works:

      json j;\nj << ss;\n

      or

      json j;\nss >> j;\n
      "},{"location":"home/releases/#v211","title":"v2.1.1","text":"

      Files

      • json.hpp (437 KB)
      • json.hpp.asc (1 KB)

      Release date: 2017-02-25 SHA-256: faa2321beb1aa7416d035e7417fcfa59692ac3d8c202728f9bcc302e2d558f57

      "},{"location":"home/releases/#summary_15","title":"Summary","text":"

      This release fixes a locale-related bug in the parser. To do so, the whole number handling (lexer, parser, and also the serialization) have been overworked. Furthermore, a lot of small changes added up that were added to this release. All changes are backward-compatible.

      "},{"location":"home/releases/#changes_1","title":"Changes","text":"
      • Locales that have a different character than . as decimal separator (e.g., the Norwegian locale nb_NO.UTF-8) led to truncated number parsing or parse errors. The library now has been fixed to work with any locale. Note that . is still the only valid decimal separator for JSON input.
      • Numbers like 1.0 were correctly parsed as floating-point number, but serialized as integer (1). Now, floating-point numbers correctly round trip.
      • Parsing incorrect JSON numbers with leading 0 (0123) could yield a buffer overflow. This is fixed now by detecting such errors directly by the lexer.
      • Constructing a JSON value from a pointer was incorrectly interpreted as a Boolean; such code will now yield a compiler error.
      • Comparing a JSON number with 0 led to a comparison with null. This is fixed now.
      • All throw calls are now wrapped in macros.
      • Starting during the preparation of this release (since 8 February 2017), commits and released files are cryptographically signed with this GPG key. Previous releases have also been signed.
      • The parser for MessagePack and CBOR now supports an optional start index parameter to define a byte offset for the parser.
      • Some more warnings have been fixed. With Clang, the code compiles without warnings with -Weverything (well, it needs -Wno-documentation-unknown-command and -Wno-deprecated-declarations, but you get the point).
      • The code can be compiled easier with many Android NDKs by avoiding macros like UINT8_MAX which previously required defining a preprocessor macro for compilation.
      • The unit tests now compile two times faster.
      • Cotire is used to speed up the build.
      • Fixed a lot of typos in the documentation.
      • Added a section to the README file that lists all used third-party code/tools.
      • Added a note on constructing a string value vs. parsing.
      • The test suite now contains 11202597 unit tests.
      • Improved the Doxygen documentation by shortening the template parameters of class basic_json.
      • Removed Doozer.
      • Added Codacity.
      • Upgraded Catch to version 1.7.2.
      "},{"location":"home/releases/#v210","title":"v2.1.0","text":"

      Files

      • json.hpp (426 KB)
      • json.hpp.asc (1 KB)
      • Release date: 2017-01-28
      • SHA-256: a571dee92515b685784fd527e38405cf3f5e13e96edbfe3f03d6df2e363a767b
      "},{"location":"home/releases/#summary_16","title":"Summary","text":"

      This release introduces a means to convert from/to user-defined types. The release is backwards compatible.

      "},{"location":"home/releases/#changes_2","title":"Changes","text":"
      • The library now offers an elegant way to convert from and to arbitrary value types. All you need to do is to implement two functions: to_json and from_json. Then, a conversion is as simple as putting a = between variables. See the README for more information and examples.
      • Exceptions can now be switched off. This can be done by defining the preprocessor symbol JSON_NOEXCEPTION or by passing -fno-exceptions to your compiler. In case the code would usually thrown an exception, abort() is now called.
      • Information on the library can be queried with the new (static) function meta() which returns a JSON object with information on the version, compiler, and platform. See the documentation for an example.
      • A bug in the CBOR parser was fixed which led to a buffer overflow.
      • The function type_name() is now public. It allows to query the type of a JSON value as string.
      • Added the Big List of Naughty Strings as test case.
      • Updated to Catch v1.6.0.
      • Some typos in the documentation have been fixed.
      "},{"location":"home/releases/#v2010","title":"v2.0.10","text":"

      Files

      • json.hpp (409 KB)
      • json.hpp.asc (1 KB)
      • Release date: 2017-01-02
      • SHA-256: ec27d4e74e9ce0f78066389a70724afd07f10761009322dc020656704ad5296d
      "},{"location":"home/releases/#summary_17","title":"Summary","text":"

      This release fixes several security-relevant bugs in the MessagePack and CBOR parsers. The fixes are backwards compatible.

      "},{"location":"home/releases/#changes_3","title":"Changes","text":"
      • Fixed a lot of bugs in the CBOR and MesssagePack parsers. These bugs occurred if invalid input was parsed and then could lead in buffer overflows. These bugs were found with Google's OSS-Fuzz, see #405, #407, #408, #409, #411, and #412 for more information.
      • We now also use the Doozer continuous integration platform.
      • The complete test suite is now also run with Clang's address sanitizer and undefined-behavior sanitizer.
      • Overworked fuzz testing; CBOR and MessagePack implementations are now fuzz-tested. Furthermore, all fuzz tests now include a round trip which ensures created output can again be properly parsed and yields the same JSON value.
      • Clarified documentation of find() function to always return end() when called on non-object value types.
      • Moved thirdparty test code to test/thirdparty directory.
      "},{"location":"home/releases/#v209","title":"v2.0.9","text":"

      Files

      • json.hpp (406 KB)
      • json.hpp.asc (1 KB)
      • Release date: 2016-12-16
      • SHA-256: fbf3396f13e187d6c214c297bddc742d918ea9b55e10bfb3d9f458b9bfdc22e5
      "},{"location":"home/releases/#summary_18","title":"Summary","text":"

      This release implements with CBOR and MessagePack two binary serialization/deserialization formats. It further contains some small fixes and improvements. The fixes are backwards compatible.

      "},{"location":"home/releases/#changes_4","title":"Changes","text":"
      • The library can now read and write the binary formats CBOR (Concise Binary Object Representation) and MessagePack. Both formats are aimed to produce a very compact representation of JSON which can be parsed very efficiently. See the README file for more information and examples.
      • simplified the iteration implementation allowing to remove dozens of lines of code
      • fixed an integer overflow error detected by Google's OSS-Fuzz
      • suppressed documentation warnings inside the library to facilitate compilation with -Wdocumentation
      • fixed an overflow detection error in the number parser
      • updated contribution guidelines to a list of frequentely asked features that will most likely be never added to the library
      • added a table of contents to the README file to add some structure
      • mentioned the many examples and the documentation in the README file
      • split unit tests into individual independent binaries to speed up compilation and testing
      • the test suite now contains 11201886 tests
      "},{"location":"home/releases/#v208","title":"v2.0.8","text":"

      Files

      • json.hpp (360 KB)
      • json.hpp.asc (1 KB)
      • Release date: 2016-12-02
      • SHA-256: b70db0ad34f8e0e61dc3f0cbab88099336c9674c193d8a3439d93d6aca2d7120
      "},{"location":"home/releases/#summary_19","title":"Summary","text":"

      This release combines a lot of small fixes and improvements. The fixes are backwards compatible.

      "},{"location":"home/releases/#changes_5","title":"Changes","text":"
      • fixed a bug that froze the parser if a passed file was not found (now, std::invalid_argument is thrown)
      • fixed a bug that lead to an error of a file at EOF was parsed again (now, std::invalid_argument is thrown)
      • the well known functions emplace and emplace_back have been added to JSON values and work as expected
      • improved the performance of the serialization (dump function)
      • improved the performance of the deserialization (parser)
      • some continuous integration images at Travis were added and retired; see here for the current continuous integration setup
      • the Coverity scan works again
      • the benchmarking code has been improved to produce more stable results
      • the README file has been extended and includes more frequently asked examples
      • the test suite now contains 8905518 tests
      • updated Catch to version 1.5.8
      "},{"location":"home/releases/#v207","title":"v2.0.7","text":"

      Files

      • json.hpp (355 KB)
      • json.hpp.asc (1 KB)
      • Release date: 2016-11-02
      • SHA-256: 5545c323670f8165bae90b9dc6078825e86ec310d96cc4e5b47233ea43715bbf
      "},{"location":"home/releases/#summary_20","title":"Summary","text":"

      This release fixes a few bugs in the JSON parser found in the Parsing JSON is a Minefield \ud83d\udca3 article. The fixes are backwards compatible.

      "},{"location":"home/releases/#changes_6","title":"Changes","text":"
      • The article Parsing JSON is a Minefield \ud83d\udca3 discusses a lot of pitfalls of the JSON specification. When investigating the published test cases, a few bugs in the library were found and fixed:
      • Files with less than 5 bytes can now be parsed without error.
      • The library now properly rejects any file encoding other than UTF-8. Furthermore, incorrect surrogate pairs are properly detected and rejected.
      • The library now accepts all but one \"yes\" test (y_string_utf16.json): UTF-16 is not supported.
      • The library rejects all but one \"no\" test (n_number_then_00.json): Null bytes are treated as end of file instead of an error. This allows to parse input from null-terminated strings.
      • The string length passed to a user-defined string literal is now exploited to choose a more efficient constructor.
      • A few grammar mistakes in the README file have been fixed.
      "},{"location":"home/releases/#v206","title":"v2.0.6","text":"

      Files

      • json.hpp (349 KB)
      • json.hpp.asc (1 KB)
      • Release date: 2016-10-15
      • SHA256: 459cc93d5e2f503e50c6d5876eb86bfea7daf405f5a567c5a2c9abc2383756ae
      "},{"location":"home/releases/#summary_21","title":"Summary","text":"

      This release fixes the semantics of operator[] for JSON Pointers (see below). This fix is backwards compatible.

      "},{"location":"home/releases/#changes_7","title":"Changes","text":"
      • operator[] for JSON Pointers now behaves like the other versions of operator[] and transforms null values into objects or arrays if required. This allows to created nested structures like j[\"/foo/bar/2\"] = 17 (yielding {\"foo\": \"bar\": [null, null, 17]}) without problems.
      • overworked a helper SFINAE function
      • fixed some documentation issues
      • fixed the CMake files to allow to run the test suite outside the main project directory
      • restored test coverage to 100%.
      "},{"location":"home/releases/#v205","title":"v2.0.5","text":"

      Files

      • json.hpp (347 KB)
      • json.hpp.asc (1 KB)
      • Release date: 2016-09-14
      • SHA-256: 8b7565263a44e2b7d3b89808bc73d2d639037ff0c1f379e3d56dbd77e00b98d9
      "},{"location":"home/releases/#summary_22","title":"Summary","text":"

      This release fixes a regression bug in the stream parser (function parse() and the <</>> operators). This fix is backwards compatible.

      "},{"location":"home/releases/#changes_8","title":"Changes","text":"
      • Bug fix: The end of a file stream was not detected properly which led to parse errors. This bug should have been fixed with 2.0.4, but there was still a flaw in the code.
      "},{"location":"home/releases/#v204","title":"v2.0.4","text":"

      Files

      • json.hpp (347 KB)
      • json.hpp.asc (1 KB)
      • Release date: 2016-09-11
      • SHA-256: 632ceec4c25c4e2153f71470d3a2b992c8355f6d8b4d627d05dd16095cd3aeda
      "},{"location":"home/releases/#summary_23","title":"Summary","text":"

      This release fixes a bug in the stream parser (function parse() and the <</>> operators). This fix is backwards compatible.

      "},{"location":"home/releases/#changes_9","title":"Changes","text":"
      • Bug fix: The end of a file stream was not detected properly which led to parse errors.
      • Fixed a compiler warning about an unused variable.
      "},{"location":"home/releases/#v203","title":"v2.0.3","text":"

      Files

      • json.hpp (347 KB)
      • json.hpp.asc (1 KB)
      • Release date: 2016-08-31
      • SHA-256: 535b73efe5546fde9e763c14aeadfc7b58183c0b3cd43c29741025aba6cf6bd3
      "},{"location":"home/releases/#summary_24","title":"Summary","text":"

      This release combines a lot of small fixes and improvements. The release is backwards compatible.

      "},{"location":"home/releases/#changes_10","title":"Changes","text":"
      • The parser/deserialization functions have been generalized to process any contiguous sequence of 1-byte elements (e.g., char, unsigned char, uint8_t). This includes all kind of string representations (string literals, char arrays, std::string, const char*), contiguous containers (C-style arrays, std::vector, std::array, std::valarray, std::initializer_list). User-defined containers providing random-access iterator access via std::begin and std::end can be used as well. See the documentation (1, 2, 3, 4) for more information. Note that contiguous storage cannot be checked at compile time; if any of the parse functions are called with a noncompliant container, the behavior is undefined and will most likely yield segmentation violation. The preconditions are enforced by an assertion unless the library is compiled with preprocessor symbol NDEBUG.
      • As a general remark on assertions: The library uses assertions to preclude undefined behavior. A prominent example for this is the operator[] for const JSON objects. The behavior of this const version of the operator is undefined if the given key does not exist in the JSON object, because unlike the non-const version, it cannot add a null value at the given key. Assertions can be switched of by defining the preprocessor symbol NDEBUG. See the documentation of assert for more information.
      • In the course of cleaning up the parser/deserialization functions, the constructor basic_json(std::istream&, const parser_callback_t) has been deprecated and will be deleted with the next major release 3.0.0 to unify the interface of the library. Deserialization will be done by stream operators or by calling one of the parse functions. That is, calls like json j(i); for an input stream i need to be replaced by json j = json::parse(i);. Compilers will produce a deprecation warning if client code uses this function.
      • Minor improvements:
      • Improved the performance of the serialization by avoiding the re-creation of a locale object.
      • Fixed two MSVC warnings. Compiling the test suite with /Wall now only warns about non-inlined functions (C4710) and the deprecation of the constructor from input-stream (C4996).
      • Some project internals:
      • The project has qualified for the Core Infrastructure Initiative Best Practices Badge. While most requirements where already satisfied, some led to a more explicit documentation of quality-ensuring procedures. For instance, static analysis is now executed with every commit on the build server. Furthermore, the contribution guidelines document how to communicate security issues privately.
      • The test suite has been overworked and split into several files to allow for faster compilation and analysis. The execute the test suite, simply execute make check.
      • The continuous integration with Travis was extended with Clang versions 3.6.0 to 3.8.1 and now includes 18 different compiler/OS combinations.
      • An 11-day run of American fuzzy lop checked 962 million inputs on the parser and found no issue.
      "},{"location":"home/releases/#v202","title":"v2.0.2","text":"

      Files

      • json.hpp (338 KB)
      • json.hpp.asc (1 KB)
      • Release date: 2016-07-31
      • SHA-256: 8e97b7965b4594b00998d6704465412360e1a0ed927badb51ded8b82291a8f3d
      "},{"location":"home/releases/#summary_25","title":"Summary","text":"

      This release combines a lot of small fixes and improvements. The release is backwards compatible.

      "},{"location":"home/releases/#changes_11","title":"Changes","text":"
      • The parser has been overworked, and a lot of small issues have been fixed:
      • Improved parser performance by avoiding recursion and using move semantics for the return value.
      • Unescaped control characters \\x10-\\x1f are not accepted any more.
      • Fixed a bug in the parser when reading from an input stream.
      • Improved test case coverage for UTF-8 parsing: now, all valid Unicode code points are tested both escaped and unescaped.
      • The precision of output streams is now preserved by the parser.
      • Started to check the code correctness by proving termination of important loops. Furthermore, individual assertions have been replaced by a more systematic function which checks the class invariants. Note that assertions should be switched off in production by defining the preprocessor macro NDEBUG, see the documentation of assert.
      • A lot of code cleanup: removed unused headers, fixed some compiler warnings, and fixed a build error for Windows-based Clang builds.
      • Added some compile-time checks:
      • Unsupported compilers are rejected during compilation with an #error command.
      • Static assertion prohibits code with incompatible pointer types used in get_ptr().
      • Improved the documentation, and adjusted the documentation script to choose the correct version of sed.
      • Replaced a lot of \"raw loops\" by STL functions like std::all_of, std::for_each, or std::accumulate. This facilitates reasoning about termination of loops and sometimes allowed to simplify functions to a single return statement.
      • Implemented a value() function for JSON pointers (similar to at function).
      • The Homebrew formula (see Integration) is now tested for all Xcode builds (6.1 - 8.x) with Travis.
      • Avoided output to std::cout in the test cases.
      "},{"location":"home/releases/#v201","title":"v2.0.1","text":"

      Files

      • json.hpp (321 KB)
      • json.hpp.asc (1 KB)
      • Release date: 2016-06-28
      • SHA-256: ef550fcd7df572555bf068e9ec4e9d3b9e4cdd441cecb0dcea9ea7fd313f72dd
      "},{"location":"home/releases/#summary_26","title":"Summary","text":"

      This release fixes a performance regression in the JSON serialization (function dump()). This fix is backwards compatible.

      "},{"location":"home/releases/#changes_12","title":"Changes","text":"
      • The locale of the output stream (or the internal string stream if a JSON value is serialized to a string) is now adjusted once for the whole serialization instead of for each floating-point number.
      • The locale of an output stream is now correctly reset to the previous value by the JSON library.
      "},{"location":"home/releases/#v200","title":"v2.0.0","text":"

      Files

      • json.hpp (321 KB)
      • json.hpp.asc (1 KB)
      • Release date: 2016-06-24
      • SHA-256: ac9e1fb25c2ac9ca5fc501fcd2fe3281fe04f07018a1b48820e7b1b11491bb6c
      "},{"location":"home/releases/#summary_27","title":"Summary","text":"

      This release adds several features such as JSON Pointers, JSON Patch, or support for 64 bit unsigned integers. Furthermore, several (subtle) bugs have been fixed.

      As noexcept and constexpr specifier have been added to several functions, the public API has effectively been changed in a (potential) non-backwards compatible manner. As we adhere to Semantic Versioning, this calls for a new major version, so say hello to 2\ufe0f\u20e3.0\ufe0f\u20e3.0\ufe0f\u20e3.

      "},{"location":"home/releases/#changes_13","title":"Changes","text":"
      • \ud83d\udd1f A JSON value now uses uint64_t (default value for template parameter NumberUnsignedType) as data type for unsigned integer values. This type is used automatically when an unsigned number is parsed. Furthermore, constructors, conversion operators and an is_number_unsigned() test have been added.
      • \ud83d\udc49 JSON Pointer (RFC 6901) support: A JSON Pointer is a string (similar to an XPath expression) to address a value inside a structured JSON value. JSON Pointers can be used in at() and operator[] functions. Furthermore, JSON values can be \u201cflattened\u201d to key/value pairs using flatten() where each key is a JSON Pointer. The original value can be restored by \u201cunflattening\u201d the flattened value using unflatten().
      • \ud83c\udfe5 JSON Patch (RFC 6902) support. A JSON Patch is a JSON value that describes the required edit operations (add, change, remove, \u2026) to transform a JSON value into another one. A JSON Patch can be created with function diff(const basic_json&) and applied with patch(const basic_json&). Note the created patches use a rather primitive algorithm so far and leave room for improvement.
      • \ud83c\uddea\ud83c\uddfa The code is now locale-independent: Floating-point numbers are always serialized with a period (.) as decimal separator and ignores different settings from the locale.
      • \ud83c\udf7a Homebrew support: Install the library with brew tap nlohmann/json && brew install nlohmann_json.
      • Added constructor to create a JSON value by parsing a std::istream (e.g., std::stringstream or std::ifstream).
      • Added noexcept specifier to basic_json(boolean_t), basic_json(const number_integer_t), basic_json(const int), basic_json(const number_float_t), iterator functions (begin(), end(), etc.)
      • When parsing numbers, the sign of 0.0 (vs. -0.0) is preserved.
      • Improved MSVC 2015, Android, and MinGW support. See README for more information.
      • Improved test coverage (added 2,225,386 tests).
      • Removed some misuses of std::move.
      • Fixed several compiler warnings.
      • Improved error messages from JSON parser.
      • Updated to re2c to version 0.16 to use a minimal DFAs for the lexer.
      • Updated test suite to use Catch version 1.5.6.
      • Made type getters (is_number, etc.) and const value access constexpr.
      • Functions push_back and operator+= now work with key/value pairs passed as initializer list, e.g. j_object += {\"key\", 1}.
      • Overworked CMakeLists.txt to make it easier to integrate the library into other projects.
      "},{"location":"home/releases/#notes","title":"Notes","text":"
      • Parser error messages are still very vague and contain no information on the error location.
      • The implemented diff function is rather primitive and does not create minimal diffs.
      • The name of function iteration_wrapper may change in the future and the function will be deprecated in the next release.
      • Roundtripping (i.e., parsing a JSON value from a string, serializing it, and comparing the strings) of floating-point numbers is not 100% accurate. Note that RFC 8259 defines no format to internally represent numbers and states not requirement for roundtripping. Nevertheless, benchmarks like Native JSON Benchmark treat roundtripping deviations as conformance errors.
      "},{"location":"home/releases/#v110","title":"v1.1.0","text":"

      Files

      • json.hpp (257 KB)
      • json.hpp.asc (1 KB)
      • Release date: 2016-01-24
      • SHA-256: c0cf0e3017798ca6bb18e757ebc570d21a3bdac877845e2b9e9573d183ed2f05
      "},{"location":"home/releases/#summary_28","title":"Summary","text":"

      This release fixes several small bugs and adds functionality in a backwards-compatible manner. Compared to the last version (1.0.0), the following changes have been made:

      "},{"location":"home/releases/#changes_14","title":"Changes","text":"
      • Fixed: Floating-point numbers are now serialized and deserialized properly such that rountripping works in more cases. [#185, #186, #190, #191, #194]
      • Added: The code now contains assertions to detect undefined behavior during development. As the standard function assert is used, the assertions can be switched off by defining the preprocessor symbol NDEBUG during compilation. [#168]
      • Added: It is now possible to get a reference to the stored values via the newly added function get_ref(). [#128, #184]
      • Fixed: Access to object values via keys (operator[]) now works with all kind of string representations. [#171, #189]
      • Fixed: The code now compiles again with Microsoft Visual Studio 2015. [#144, #167, #188]
      • Fixed: All required headers are now included.
      • Fixed: Typos and other small issues. [#162, #166, #175, #177, #179, #180]
      "},{"location":"home/releases/#notes_1","title":"Notes","text":"

      There are still known open issues (#178, #187) which will be fixed in version 2.0.0. However, these fixes will require a small API change and will not be entirely backwards-compatible.

      "},{"location":"home/releases/#v100","title":"v1.0.0","text":"

      Files

      • json.hpp (243 KB)
      • json.hpp.asc (1 KB)
      • Release date: 2015-12-28
      • SHA-256: 767dc2fab1819d7b9e19b6e456d61e38d21ef7182606ecf01516e3f5230446de
      "},{"location":"home/releases/#summary_29","title":"Summary","text":"

      This is the first official release. Compared to the prerelease version 1.0.0-rc1, only a few minor improvements have been made:

      "},{"location":"home/releases/#changes_15","title":"Changes","text":"
      • Changed: A UTF-8 byte order mark is silently ignored.
      • Changed: sprintf is no longer used.
      • Changed: iterator_wrapper also works for const objects; note: the name may change!
      • Changed: Error messages during deserialization have been improved.
      • Added: The parse function now also works with type std::istream&&.
      • Added: Function value(key, default_value) returns either a copy of an object's element at the specified key or a given default value if no element with the key exists.
      • Added: Public functions are tagged with the version they were introduced. This shall allow for better versioning in the future.
      • Added: All public functions and types are documented (see http://nlohmann.github.io/json/doxygen/) including executable examples.
      • Added: Allocation of all types (in particular arrays, strings, and objects) is now exception-safe.
      • Added: They descriptions of thrown exceptions have been overworked and are part of the tests suite and documentation.
      "},{"location":"home/sponsors/","title":"Sponsors","text":"

      You can sponsor this library at GitHub Sponsors.

      "},{"location":"home/sponsors/#priority-sponsor","title":"Priority Sponsor","text":"
      • Martti Laine
      • Paul Harrington
      "},{"location":"home/sponsors/#named-sponsors","title":"Named Sponsors","text":"
      • Michael Hartmann
      • Stefan Hagen
      • Steve Sperandeo
      • Robert Jefe Lindst\u00e4dt
      • Steve Wagner
      • Lion Yang

      Thanks everyone!

      "},{"location":"integration/","title":"Header only","text":"

      json.hpp is the single required file in single_include/nlohmann or released here. You need to add

      #include <nlohmann/json.hpp>\n\n// for convenience\nusing json = nlohmann::json;\n

      to the files you want to process JSON and set the necessary switches to enable C++11 (e.g., -std=c++11 for GCC and Clang).

      You can further use file single_include/nlohmann/json_fwd.hpp for forward declarations.

      "},{"location":"integration/cmake/","title":"CMake","text":""},{"location":"integration/cmake/#integration","title":"Integration","text":"

      You can use the nlohmann_json::nlohmann_json interface target in CMake. This target populates the appropriate usage requirements for INTERFACE_INCLUDE_DIRECTORIES to point to the appropriate include directories and INTERFACE_COMPILE_FEATURES for the necessary C++11 flags.

      "},{"location":"integration/cmake/#external","title":"External","text":"

      To use this library from a CMake project, you can locate it directly with find_package() and use the namespaced imported target from the generated package configuration:

      Example

      CMakeLists.txt
      cmake_minimum_required(VERSION 3.1)\nproject(ExampleProject LANGUAGES CXX)\n\nfind_package(nlohmann_json 3.11.3 REQUIRED)\n\nadd_executable(example example.cpp)\ntarget_link_libraries(example PRIVATE nlohmann_json::nlohmann_json)\n

      The package configuration file, nlohmann_jsonConfig.cmake, can be used either from an install tree or directly out of the build tree.

      "},{"location":"integration/cmake/#embedded","title":"Embedded","text":"

      To embed the library directly into an existing CMake project, place the entire source tree in a subdirectory and call add_subdirectory() in your CMakeLists.txt file.

      Example

      CMakeLists.txt
      cmake_minimum_required(VERSION 3.1)\nproject(ExampleProject LANGUAGES CXX)\n\n# If you only include this third party in PRIVATE source files, you do not need to install it\n# when your main project gets installed.\nset(JSON_Install OFF CACHE INTERNAL \"\")\n\nadd_subdirectory(nlohmann_json)\n\nadd_executable(example example.cpp)\ntarget_link_libraries(example PRIVATE nlohmann_json::nlohmann_json)\n

      Note

      Do not use include(nlohmann_json/CMakeLists.txt), since that carries with it unintended consequences that will break the build. It is generally discouraged (although not necessarily well documented as such) to use include(...) for pulling in other CMake projects anyways.

      "},{"location":"integration/cmake/#supporting-both","title":"Supporting Both","text":"

      To allow your project to support either an externally supplied or an embedded JSON library, you can use a pattern akin to the following.

      Example

      CMakeLists.txt
      project(ExampleProject LANGUAGES CXX)\n\noption(EXAMPLE_USE_EXTERNAL_JSON \"Use an external JSON library\" OFF)\n\nadd_subdirectory(thirdparty)\n\nadd_executable(example example.cpp)\n\n# Note that the namespaced target will always be available regardless of the import method\ntarget_link_libraries(example PRIVATE nlohmann_json::nlohmann_json)\n
      thirdparty/CMakeLists.txt
      if(EXAMPLE_USE_EXTERNAL_JSON)\n    find_package(nlohmann_json 3.11.3 REQUIRED)\nelse()\n    set(JSON_BuildTests OFF CACHE INTERNAL \"\")\n    add_subdirectory(nlohmann_json)\nendif()\n

      thirdparty/nlohmann_json is then a complete copy of this source tree.

      "},{"location":"integration/cmake/#fetchcontent","title":"FetchContent","text":"

      Since CMake v3.11, FetchContent can be used to automatically download a release as a dependency at configure type.

      Example

      CMakeLists.txt
      cmake_minimum_required(VERSION 3.11)\nproject(ExampleProject LANGUAGES CXX)\n\ninclude(FetchContent)\n\nFetchContent_Declare(json URL https://github.com/nlohmann/json/releases/download/v3.11.3/json.tar.xz)\nFetchContent_MakeAvailable(json)\n\nadd_executable(example example.cpp)\ntarget_link_libraries(example PRIVATE nlohmann_json::nlohmann_json)\n

      Note

      It is recommended to use the URL approach described above which is supported as of version 3.10.0. It is also possible to pass the Git repository like

      FetchContent_Declare(json\n    GIT_REPOSITORY https://github.com/nlohmann/json\n    GIT_TAG v3.11.3\n)\n

      However, the repository https://github.com/nlohmann/json download size is quite large.

      "},{"location":"integration/cmake/#cmake-options","title":"CMake Options","text":""},{"location":"integration/cmake/#json_buildtests","title":"JSON_BuildTests","text":"

      Build the unit tests when BUILD_TESTING is enabled. This option is ON by default if the library's CMake project is the top project. That is, when integrating the library as described above, the test suite is not built unless explicitly switched on with this option.

      "},{"location":"integration/cmake/#json_ci","title":"JSON_CI","text":"

      Enable CI build targets. The exact targets are used during the several CI steps and are subject to change without notice. This option is OFF by default.

      "},{"location":"integration/cmake/#json_diagnostics","title":"JSON_Diagnostics","text":"

      Enable extended diagnostic messages by defining macro JSON_DIAGNOSTICS. This option is OFF by default.

      "},{"location":"integration/cmake/#json_disableenumserialization","title":"JSON_DisableEnumSerialization","text":"

      Disable default enum serialization by defining the macro JSON_DISABLE_ENUM_SERIALIZATION. This option is OFF by default.

      "},{"location":"integration/cmake/#json_fasttests","title":"JSON_FastTests","text":"

      Skip expensive/slow test suites. This option is OFF by default. Depends on JSON_BuildTests.

      "},{"location":"integration/cmake/#json_globaludls","title":"JSON_GlobalUDLs","text":"

      Place user-defined string literals in the global namespace by defining the macro JSON_USE_GLOBAL_UDLS. This option is OFF by default.

      "},{"location":"integration/cmake/#json_implicitconversions","title":"JSON_ImplicitConversions","text":"

      Enable implicit conversions by defining macro JSON_USE_IMPLICIT_CONVERSIONS. This option is ON by default.

      "},{"location":"integration/cmake/#json_install","title":"JSON_Install","text":"

      Install CMake targets during install step. This option is ON by default if the library's CMake project is the top project.

      "},{"location":"integration/cmake/#json_multipleheaders","title":"JSON_MultipleHeaders","text":"

      Use non-amalgamated version of the library. This option is OFF by default.

      "},{"location":"integration/cmake/#json_systeminclude","title":"JSON_SystemInclude","text":"

      Treat the library headers like system headers (i.e., adding SYSTEM to the target_include_directories call) to checks for this library by tools like Clang-Tidy. This option is OFF by default.

      "},{"location":"integration/cmake/#json_valgrind","title":"JSON_Valgrind","text":"

      Execute test suite with Valgrind. This option is OFF by default. Depends on JSON_BuildTests.

      "},{"location":"integration/migration_guide/","title":"Migration Guide","text":"

      This page collects some guidelines on how to future-proof your code for future versions of this library.

      "},{"location":"integration/migration_guide/#replace-deprecated-functions","title":"Replace deprecated functions","text":"

      The following functions have been deprecated and will be removed in the next major version (i.e., 4.0.0). All deprecations are annotated with HEDLEY_DEPRECATED_FOR to report which function to use instead.

      "},{"location":"integration/migration_guide/#parsing","title":"Parsing","text":"
      • Function friend std::istream& operator<<(basic_json&, std::istream&) is deprecated since 3.0.0. Please use friend std::istream& operator>>(std::istream&, basic_json&) instead.

        DeprecatedFuture-proof
        nlohmann::json j;\nstd::stringstream ss(\"[1,2,3]\");\nj << ss;\n
        nlohmann::json j;\nstd::stringstream ss(\"[1,2,3]\");\nss >> j;\n
      • Passing iterator pairs or pointer/length pairs to parsing functions (parse, accept, sax_parse, from_cbor, from_msgpack, from_ubjson, and from_bson via initializer lists is deprecated since 3.8.0. Instead, pass two iterators; for instance, call from_cbor(ptr, ptr+len) instead of from_cbor({ptr, len}).

        DeprecatedFuture-proof
        const char* s = \"[1,2,3]\";\nbool ok = nlohmann::json::accept({s, s + std::strlen(s)});\n
        const char* s = \"[1,2,3]\";\nbool ok = nlohmann::json::accept(s, s + std::strlen(s));\n
      "},{"location":"integration/migration_guide/#json-pointers","title":"JSON Pointers","text":"
      • Comparing JSON Pointers with strings via operator== and operator!= is deprecated since 3.11.2. To compare a json_pointer p with a string s, convert s to a json_pointer first and use json_pointer::operator== or json_pointer::operator!=.

        DeprecatedFuture-proof
        nlohmann::json::json_pointer lhs(\"/foo/bar/1\");\nassert(lhs == \"/foo/bar/1\");\n
        nlohmann::json::json_pointer lhs(\"/foo/bar/1\");\nassert(lhs == nlohmann::json::json_pointer(\"/foo/bar/1\"));\n
      • The implicit conversion from JSON Pointers to string (json_pointer::operator string_t) is deprecated since 3.11.0. Use json_pointer::to_string instead.

        DeprecatedFuture-proof
        nlohmann::json::json_pointer ptr(\"/foo/bar/1\");\nstd::string s = ptr;\n
        nlohmann::json::json_pointer ptr(\"/foo/bar/1\");\nstd::string s = ptr.to_string();\n
      • Passing a basic_json specialization as template parameter RefStringType to json_pointer is deprecated since 3.11.0. The string type can now be directly provided.

        DeprecatedFuture-proof
        using my_json = nlohmann::basic_json<std::map, std::vector, my_string_type>;\nnlohmann::json_pointer<my_json> ptr(\"/foo/bar/1\");\n
        nlohmann::json_pointer<my_string_type> ptr(\"/foo/bar/1\");\n

        Thereby, nlohmann::my_json::json_pointer is an alias for nlohmann::json_pointer<my_string_type> and is always an alias to the json_pointer with the appropriate string type for all specializations of basic_json.

      "},{"location":"integration/migration_guide/#miscellaneous-functions","title":"Miscellaneous functions","text":"
      • The function iterator_wrapper is deprecated since 3.1.0. Please use the member function items instead.

        DeprecatedFuture-proof
        for (auto &x : nlohmann::json::iterator_wrapper(j))\n{\n    std::cout << x.key() << \":\" << x.value() << std::endl;\n}\n
        for (auto &x : j.items())\n{\n    std::cout << x.key() << \":\" << x.value() << std::endl;\n}\n
      • Function friend std::ostream& operator>>(const basic_json&, std::ostream&) is deprecated since 3.0.0. Please use friend operator<<(std::ostream&, const basic_json&) instead.

        DeprecatedFuture-proof
        j >> std::cout;\n
        std::cout << j;\n
      • The legacy comparison behavior for discarded values is deprecated since 3.11.0. It is already disabled by default and can still be enabled by defining JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON to 1.

        DeprecatedFuture-proof
        #define JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON 1\n#include <nlohmann/json.hpp>\n
        #include <nlohmann/json.hpp>\n
      "},{"location":"integration/migration_guide/#replace-implicit-conversions","title":"Replace implicit conversions","text":"

      Implicit conversions via operator ValueType will be switched off by default in the next major release of the library.

      You can prepare existing code by already defining JSON_USE_IMPLICIT_CONVERSIONS to 0 and replace any implicit conversions with calls to get, get_to, get_ref, or get_ptr.

      DeprecatedFuture-proofFuture-proof (alternative)
      nlohmann::json j = \"Hello, world!\";\nstd::string s = j;\n
      nlohmann::json j = \"Hello, world!\";\nauto s = j.template get<std::string>();\n
      nlohmann::json j = \"Hello, world!\";\nstd::string s;\nj.get_to(s);\n

      You can prepare existing code by already defining JSON_USE_IMPLICIT_CONVERSIONS to 0 and replace any implicit conversions with calls to get.

      "},{"location":"integration/migration_guide/#import-namespace-literals-for-udls","title":"Import namespace literals for UDLs","text":"

      The user-defined string literals operator\"\"_json and operator\"\"_json_pointer will be removed from the global namespace in the next major release of the library.

      DeprecatedFuture-proof
      nlohmann::json j = \"[1,2,3]\"_json;\n
      using namespace nlohmann::literals;\nnlohmann::json j = \"[1,2,3]\"_json;\n

      To prepare existing code, define JSON_USE_GLOBAL_UDLS to 0 and bring the string literals into scope where needed.

      "},{"location":"integration/migration_guide/#do-not-hard-code-the-complete-library-namespace","title":"Do not hard-code the complete library namespace","text":"

      The nlohmann namespace contains a sub-namespace to avoid problems when different versions or configurations of the library are used in the same project. Always use nlohmann as namespace or, when the exact version and configuration is relevant, use macro NLOHMANN_JSON_NAMESPACE to denote the namespace.

      DangerousFuture-proofFuture-proof (alternative)
      void to_json(nlohmann::json_abi_v3_11_2::json& j, const person& p)\n{\n    j[\"age\"] = p.age;\n}\n
      void to_json(nlohmann::json& j, const person& p)\n{\n    j[\"age\"] = p.age;\n}\n
      void to_json(NLOHMANN_JSON_NAMESPACE::json& j, const person& p)\n{\n    j[\"age\"] = p.age;\n}\n
      "},{"location":"integration/migration_guide/#do-not-use-the-details-namespace","title":"Do not use the details namespace","text":"

      The details namespace is not part of the public API of the library and can change in any version without announcement. Do not rely on any function or type in the details namespace.

      "},{"location":"integration/package_managers/","title":"Package Managers","text":"

      Throughout this page, we will describe how to compile the example file example.cpp below.

      #include <nlohmann/json.hpp>\n#include <iostream>\n#include <iomanip>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout << std::setw(4) << json::meta() << std::endl;\n}\n

      When executed, this program should create output similar to

      {\n    \"compiler\": {\n        \"c++\": \"201103\",\n        \"family\": \"gcc\",\n        \"version\": \"12.3.0\"\n    },\n    \"copyright\": \"(C) 2013-2022 Niels Lohmann\",\n    \"name\": \"JSON for Modern C++\",\n    \"platform\": \"apple\",\n    \"url\": \"https://github.com/nlohmann/json\",\n    \"version\": {\n        \"major\": 3,\n        \"minor\": 11,\n        \"patch\": 3,\n        \"string\": \"3.11.3\"\n    }\n}\n
      "},{"location":"integration/package_managers/#homebrew","title":"Homebrew","text":"

      Summary

      formula: nlohmann-json

      • Availalbe versions: current version and development version (with --HEAD parameter)
      • The formula is updated with every release.
      • Maintainer: Niels Lohmann
      • File issues at the Homebrew issue tracker
      • Homebrew website

      If you are using Homebrew, you can install the library with

      brew install nlohmann-json\n

      The header can be used directly in your code or via CMake.

      Example: Raw compilation
      1. Create the following file:

        example.cpp
        #include <nlohmann/json.hpp>\n#include <iostream>\n#include <iomanip>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout << std::setw(4) << json::meta() << std::endl;\n}\n
      2. Install the package:

        brew install nlohmann-json\n
      3. Compile the code and pass the Homebrew prefix to the include path such that the library can be found:

        c++ example.cpp -I$(brew --prefix nlohmann-json)/include -std=c++11 -o example\n
      Example: CMake
      1. Create the following files:

        example.cpp
        #include <nlohmann/json.hpp>\n#include <iostream>\n#include <iomanip>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout << std::setw(4) << json::meta() << std::endl;\n}\n
        CMakeLists.txt
        cmake_minimum_required(VERSION 3.15)\nproject(json_example)\n\nfind_package(nlohmann_json CONFIG REQUIRED)\n\nadd_executable(json_example example.cpp)\ntarget_link_libraries(json_example PRIVATE nlohmann_json::nlohmann_json)\n
      2. Install the package:

        brew install nlohmann-json\n
      3. Compile the code and pass the Homebrew prefix to CMake to find installed packages via find_package:

        CMAKE_PREFIX_PATH=$(brew --prefix) cmake -S . -B build\ncmake --build build\n
      "},{"location":"integration/package_managers/#meson","title":"Meson","text":"

      Summary

      wrap: nlohmann_json

      • Availalbe versions: current version and select older versions (see WrapDB)
      • The package is update automatically from file meson.build.
      • File issues at the library issue tracker
      • Meson website

      If you are using the Meson Build System, add this source tree as a meson subproject. You may also use the include.zip published in this project's Releases to reduce the size of the vendored source tree. Alternatively, you can get a wrap file by downloading it from Meson WrapDB, or simply use

      meson wrap install nlohmann_json\n

      Please see the Meson project for any issues regarding the packaging.

      The provided meson.build can also be used as an alternative to CMake for installing nlohmann_json system-wide in which case a pkg-config file is installed. To use it, simply have your build system require the nlohmann_json pkg-config dependency. In Meson, it is preferred to use the dependency() object with a subproject fallback, rather than using the subproject directly.

      Example: Wrap
      1. Create the following files:

        meson.build
        project('json_example', 'cpp',\n  version: '1.0',\n  default_options: ['cpp_std=c++11']\n)\n\ndependency_json = dependency('nlohmann_json', required: true)\n\nexecutable('json_example',\n  sources: ['example.cpp'],\n  dependencies: [dependency_json],\n  install: true\n)\n
        example.cpp
        #include <nlohmann/json.hpp>\n#include <iostream>\n#include <iomanip>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout << std::setw(4) << json::meta() << std::endl;\n}\n
      2. Use the Meson WrapDB to fetch the nlohmann/json wrap:

        mkdir subprojects\nmeson wrap install nlohmann_json\n
      3. Build:

        meson setup build\nmeson compile -C build\n
      "},{"location":"integration/package_managers/#bazel","title":"Bazel","text":"

      Summary

      use http_archive, git_repository, or local_repository

      • Any version, as version is specified in WORKSPACE file
      • File issues at the library issue tracker
      • Bazel website

      This repository provides a Bazel WORKSPACE.bazel and a corresponding BUILD.bazel file. Therefore, this repository can be referenced by workspace rules such as http_archive, git_repository, or local_repository from other Bazel workspaces. To use the library you only need to depend on the target @nlohmann_json//:json (e.g., via deps attribute).

      Example
      1. Create the following files:

        BUILD
        cc_binary(\n    name = \"main\",\n    srcs = [\"example.cpp\"],\n    deps = [\"@nlohmann_json//:json\"],\n)\n
        WORKSPACE
        load(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\n\nhttp_archive(\n    name = \"nlohmann_json\",\n    urls = [\"https://github.com/nlohmann/json/archive/refs/tags/v3.11.3.tar.gz\"],\n    strip_prefix = \"json-3.11.3\",\n)\n
        example.cpp
        #include <nlohmann/json.hpp>\n#include <iostream>\n#include <iomanip>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout << std::setw(4) << json::meta() << std::endl;\n}\n
      2. Build and run:

        bazel build //:main\nbazel run //:main\n
      "},{"location":"integration/package_managers/#conan","title":"Conan","text":"

      Summary

      recipe: nlohmann_json

      • Availalbe versions: current version and older versions (see Conan Center)
      • The package is update automatically via this recipe.
      • File issues at the Conan Center issue tracker
      • Conan website

      If you are using Conan to manage your dependencies, merely add nlohmann_json/x.y.z to your conanfile's requires, where x.y.z is the release version you want to use.

      Example
      1. Create the following files:

        Conanfile.txt
        [requires]\nnlohmann_json/3.11.3\n\n[generators]\nCMakeToolchain\nCMakeDeps\n
        CMakeLists.txt
        cmake_minimum_required(VERSION 3.15)\nproject(json_example)\n\nfind_package(nlohmann_json REQUIRED)\n\nadd_executable(json_example example.cpp)\ntarget_link_libraries(json_example PRIVATE nlohmann_json::nlohmann_json)\n
        example.cpp
        #include <nlohmann/json.hpp>\n#include <iostream>\n#include <iomanip>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout << std::setw(4) << json::meta() << std::endl;\n}\n
      2. Call Conan:

        conan install . --output-folder=build --build=missing\n
      3. Build:

        cmake -S . -B build -DCMAKE_TOOLCHAIN_FILE=\"conan_toolchain.cmake\" -DCMAKE_BUILD_TYPE=Release\ncmake --build build\n
      "},{"location":"integration/package_managers/#spack","title":"Spack","text":"

      Summary

      package: nlohmann-json

      • Availalbe versions: current version and older versions (see Spack package)
      • The formula is updated with every release.
      • Maintainer: Axel Huebl
      • File issues at the Spack issue tracker
      • Spack website

      If you are using Spack to manage your dependencies, you can use the nlohmann-json package via

      spack install nlohmann-json\n

      Please see the Spack project for any issues regarding the packaging.

      Example
      1. Create the following files:

        CMakeLists.txt
        cmake_minimum_required(VERSION 3.15)\nproject(json_example)\n\nfind_package(nlohmann_json REQUIRED)\n\nadd_executable(json_example example.cpp)\ntarget_link_libraries(json_example PRIVATE nlohmann_json::nlohmann_json)\n
        example.cpp
        #include <nlohmann/json.hpp>\n#include <iostream>\n#include <iomanip>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout << std::setw(4) << json::meta() << std::endl;\n}\n
      2. Install the library:

        spack install nlohmann-json\n
      3. Load the environment for your Spack-installed packages:

        spack load nlohmann-json\n
      4. Build the project with CMake:

        cmake -S . -B build -DCMAKE_PREFIX_PATH=$(spack location -i nlohmann-json)\ncmake --build build\n
      "},{"location":"integration/package_managers/#hunter","title":"Hunter","text":"

      Summary

      package: nlohmann_json

      • Availalbe versions: current version and older versions (see Hunter package)
      • The formula is updated with every release.
      • File issues at the Hunter issue tracker
      • Hunter website

      If you are using Hunter on your project for external dependencies, then you can use the nlohmann_json package via

      hunter_add_package(nlohmann_json)\n

      Please see the Hunter project for any issues regarding the packaging.

      Example
      1. Create the following files:

        CMakeLists.txt
        cmake_minimum_required(VERSION 3.15)\n\ninclude(\"cmake/HunterGate.cmake\")\nHunterGate(\n    URL \"https://github.com/cpp-pm/hunter/archive/v0.23.297.tar.gz\"\n    SHA1 \"3319fe6a3b08090df7df98dee75134d68e2ef5a3\"\n)\n\nproject(json_example)\n\nhunter_add_package(nlohmann_json)\nfind_package(nlohmann_json CONFIG REQUIRED)\n\nadd_executable(json_example example.cpp)\ntarget_link_libraries(json_example PRIVATE nlohmann_json::nlohmann_json)\n
        example.cpp
        #include <nlohmann/json.hpp>\n#include <iostream>\n#include <iomanip>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout << std::setw(4) << json::meta() << std::endl;\n}\n
      2. Download required files

        mkdir cmake\nwget https://raw.githubusercontent.com/cpp-pm/gate/master/cmake/HunterGate.cmake -O cmake/HunterGate.cmake\n
      3. Build the project with CMake:

        cmake -S . -B build\ncmake --build build\n
      "},{"location":"integration/package_managers/#buckaroo","title":"Buckaroo","text":"

      If you are using Buckaroo, you can install this library's module with buckaroo add github.com/buckaroo-pm/nlohmann-json. There is a demo repo here.

      Warning

      The module is outdated as the respective repository has not been updated in years.

      "},{"location":"integration/package_managers/#vcpkg","title":"vcpkg","text":"

      Summary

      package: nlohmann-json

      • Availalbe versions: current version
      • The formula is updated with every release.
      • File issues at the vcpkg issue tracker
      • vcpkg website

      If you are using vcpkg on your project for external dependencies, then you can install the nlohmann-json package with

      vcpkg install nlohmann-json\n

      and follow the then displayed descriptions. Please see the vcpkg project for any issues regarding the packaging.

      Example
      1. Create the following files:

        CMakeLists.txt
        cmake_minimum_required(VERSION 3.15)\nproject(json_example)\n\nfind_package(nlohmann_json CONFIG REQUIRED)\n\nadd_executable(json_example example.cpp)\ntarget_link_libraries(json_example PRIVATE nlohmann_json::nlohmann_json)\n
        example.cpp
        #include <nlohmann/json.hpp>\n#include <iostream>\n#include <iomanip>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout << std::setw(4) << json::meta() << std::endl;\n}\n
      2. Install package:

        vcpkg install nlohmann-json\n
      3. Build:

        cmake -S . -B build -DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake\ncmake --build build\n
      "},{"location":"integration/package_managers/#cget","title":"cget","text":"

      Summary

      package: nlohmann/json

      • Availalbe versions: current version and older versions
      • The formula is updated with every release.
      • File issues at the cget issue tracker
      • cget website

      If you are using cget, you can install the latest master version with

      cget install nlohmann/json\n

      A specific version can be installed with cget install nlohmann/json@v3.11.3. Also, the multiple header version can be installed by adding the -DJSON_MultipleHeaders=ON flag (i.e., cget install nlohmann/json -DJSON_MultipleHeaders=ON).

      Example
      1. Create the following files:

        CMakeLists.txt
        cmake_minimum_required(VERSION 3.15)\nproject(json_example)\n\nfind_package(nlohmann_json CONFIG REQUIRED)\n\nadd_executable(json_example example.cpp)\ntarget_link_libraries(json_example PRIVATE nlohmann_json::nlohmann_json)\n
        example.cpp
        #include <nlohmann/json.hpp>\n#include <iostream>\n#include <iomanip>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout << std::setw(4) << json::meta() << std::endl;\n}\n
      2. Initialize cget

        cget init\n
      3. Install the library

        cget install nlohmann/json\n
      4. Build

        cmake -S . -B build -DCMAKE_TOOLCHAIN_FILE=cget/cget/cget.cmake\ncmake --build build\n
      "},{"location":"integration/package_managers/#cocoapods","title":"CocoaPods","text":"

      If you are using CocoaPods, you can use the library by adding pod \"nlohmann_json\", '~>3.1.2' to your podfile (see an example). Please file issues here.

      "},{"location":"integration/package_managers/#nuget","title":"NuGet","text":"

      If you are using NuGet, you can use the package nlohmann.json. Please check this extensive description on how to use the package. Please file issues here.

      "},{"location":"integration/package_managers/#conda","title":"Conda","text":"

      If you are using conda, you can use the package nlohmann_json from conda-forge executing conda install -c conda-forge nlohmann_json. Please file issues here.

      "},{"location":"integration/package_managers/#msys2","title":"MSYS2","text":"

      If you are using MSYS2, you can use the mingw-w64-nlohmann-json package, just type pacman -S mingw-w64-i686-nlohmann-json or pacman -S mingw-w64-x86_64-nlohmann-json for installation. Please file issues here if you experience problems with the packages.

      The package is updated automatically.

      "},{"location":"integration/package_managers/#macports","title":"MacPorts","text":"

      If you are using MacPorts, execute sudo port install nlohmann-json to install the nlohmann-json package.

      The package is updated automatically.

      "},{"location":"integration/package_managers/#build2","title":"build2","text":"

      If you are using build2, you can use the nlohmann-json package from the public repository http://cppget.org or directly from the package's sources repository. In your project's manifest file, just add depends: nlohmann-json (probably with some version constraints). If you are not familiar with using dependencies in build2, please read this introduction. Please file issues here if you experience problems with the packages.

      The package is updated automatically.

      "},{"location":"integration/package_managers/#wsjcpp","title":"wsjcpp","text":"

      If you are using wsjcpp, you can use the command wsjcpp install \"https://github.com/nlohmann/json:develop\" to get the latest version. Note you can change the branch \":develop\" to an existing tag or another branch.

      wsjcpp reads directly from the GitHub repository and is always up-to-date.

      "},{"location":"integration/package_managers/#cpmcmake","title":"CPM.cmake","text":"

      If you are using CPM.cmake, you can check this example. After adding CPM script to your project, implement the following snippet to your CMake:

      CPMAddPackage(\"gh:nlohmann/json@3.11.3\")\n
      Example
      1. Download CPM.cmake
      mkdir -p cmake\nwget -O cmake/CPM.cmake https://github.com/cpm-cmake/CPM.cmake/releases/latest/download/get_cpm.cmake\n
      1. Build
      cmake -S . -B build\ncmake --build build\n
      "},{"location":"integration/pkg-config/","title":"Pkg-config","text":"

      If you are using bare Makefiles, you can use pkg-config to generate the include flags that point to where the library is installed:

      pkg-config nlohmann_json --cflags\n

      Users of the Meson build system will also be able to use a system-wide library, which will be found by pkg-config:

      json = dependency('nlohmann_json', required: true)\n
      "}]} \ No newline at end of file +{"config":{"lang":["en"],"separator":"[\\s\\-\\.]","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"JSON for Modern C++","text":""},{"location":"api/json/","title":"nlohmann::json","text":"
      using json = basic_json<>;\n

      This type is the default specialization of the basic_json class which uses the standard template types.

      "},{"location":"api/json/#examples","title":"Examples","text":"Example

      The example below demonstrates how to use the type nlohmann::json.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    json j =\n    {\n        {\"pi\", 3.141},\n        {\"happy\", true},\n        {\"name\", \"Niels\"},\n        {\"nothing\", nullptr},\n        {\n            \"answer\", {\n                {\"everything\", 42}\n            }\n        },\n        {\"list\", {1, 0, 2}},\n        {\n            \"object\", {\n                {\"currency\", \"USD\"},\n                {\"value\", 42.99}\n            }\n        }\n    };\n\n    // add new values\n    j[\"new\"][\"key\"][\"value\"] = {\"another\", \"list\"};\n\n    // count elements\n    auto s = j.size();\n    j[\"size\"] = s;\n\n    // pretty print with indent of 4 spaces\n    std::cout << std::setw(4) << j << '\\n';\n}\n

      Output:

      {\n    \"answer\": {\n        \"everything\": 42\n    },\n    \"happy\": true,\n    \"list\": [\n        1,\n        0,\n        2\n    ],\n    \"name\": \"Niels\",\n    \"new\": {\n        \"key\": {\n            \"value\": [\n                \"another\",\n                \"list\"\n            ]\n        }\n    },\n    \"nothing\": null,\n    \"object\": {\n        \"currency\": \"USD\",\n        \"value\": 42.99\n    },\n    \"pi\": 3.141,\n    \"size\": 8\n}\n
      "},{"location":"api/json/#version-history","title":"Version history","text":"

      Since version 1.0.0.

      "},{"location":"api/operator_gtgt/","title":"nlohmann::operator>>(basic_json)","text":"
      std::istream& operator>>(std::istream& i, basic_json& j);\n

      Deserializes an input stream to a JSON value.

      "},{"location":"api/operator_gtgt/#parameters","title":"Parameters","text":"i (in, out) input stream to read a serialized JSON value from j (in, out) JSON value to write the deserialized input to"},{"location":"api/operator_gtgt/#return-value","title":"Return value","text":"

      the stream i

      "},{"location":"api/operator_gtgt/#exceptions","title":"Exceptions","text":"
      • Throws parse_error.101 in case of an unexpected token.
      • Throws parse_error.102 if to_unicode fails or surrogate error.
      • Throws parse_error.103 if to_unicode fails.
      "},{"location":"api/operator_gtgt/#complexity","title":"Complexity","text":"

      Linear in the length of the input. The parser is a predictive LL(1) parser.

      "},{"location":"api/operator_gtgt/#notes","title":"Notes","text":"

      A UTF-8 byte order mark is silently ignored.

      Deprecation

      This function replaces function std::istream& operator<<(basic_json& j, std::istream& i) which has been deprecated in version 3.0.0. It will be removed in version 4.0.0. Please replace calls like j << i; with i >> j;.

      "},{"location":"api/operator_gtgt/#examples","title":"Examples","text":"Example

      The example below shows how a JSON value is constructed by reading a serialization from a stream.

      #include <iostream>\n#include <iomanip>\n#include <sstream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create stream with serialized JSON\n    std::stringstream ss;\n    ss << R\"({\n        \"number\": 23,\n        \"string\": \"Hello, world!\",\n        \"array\": [1, 2, 3, 4, 5],\n        \"boolean\": false,\n        \"null\": null\n    })\";\n\n    // create JSON value and read the serialization from the stream\n    json j;\n    ss >> j;\n\n    // serialize JSON\n    std::cout << std::setw(2) << j << '\\n';\n}\n

      Output:

      {\n  \"array\": [\n    1,\n    2,\n    3,\n    4,\n    5\n  ],\n  \"boolean\": false,\n  \"null\": null,\n  \"number\": 23,\n  \"string\": \"Hello, world!\"\n}\n
      "},{"location":"api/operator_gtgt/#see-also","title":"See also","text":"
      • accept - check if the input is valid JSON
      • parse - deserialize from a compatible input
      "},{"location":"api/operator_gtgt/#version-history","title":"Version history","text":"
      • Added in version 1.0.0. Deprecated in version 3.0.0.
      "},{"location":"api/operator_literal_json/","title":"nlohmann::operator\"\"_json","text":"
      json operator \"\"_json(const char* s, std::size_t n);\n

      This operator implements a user-defined string literal for JSON objects. It can be used by adding _json to a string literal and returns a json object if no parse error occurred.

      It is recommended to bring the operator into scope using any of the following lines:

      using nlohmann::literals::operator \"\"_json;\nusing namespace nlohmann::literals;\nusing namespace nlohmann::json_literals;\nusing namespace nlohmann::literals::json_literals;\nusing namespace nlohmann;\n

      This is suggested to ease migration to the next major version release of the library. See JSON_USE_GLOBAL_UDLS for details.

      "},{"location":"api/operator_literal_json/#parameters","title":"Parameters","text":"s (in) a string representation of a JSON object n (in) length of string s"},{"location":"api/operator_literal_json/#return-value","title":"Return value","text":"

      json value parsed from s

      "},{"location":"api/operator_literal_json/#exceptions","title":"Exceptions","text":"

      The function can throw anything that parse(s, s+n) would throw.

      "},{"location":"api/operator_literal_json/#complexity","title":"Complexity","text":"

      Linear.

      "},{"location":"api/operator_literal_json/#examples","title":"Examples","text":"Example

      The following code shows how to create JSON values from string literals.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    json j = R\"( {\"hello\": \"world\", \"answer\": 42} )\"_json;\n\n    std::cout << std::setw(2) << j << '\\n';\n}\n

      Output:

      {\n  \"answer\": 42,\n  \"hello\": \"world\"\n}\n
      "},{"location":"api/operator_literal_json/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      • Moved to namespace nlohmann::literals::json_literals in 3.11.0.
      "},{"location":"api/operator_literal_json_pointer/","title":"nlohmann::operator\"\"_json_pointer","text":"
      json_pointer operator \"\"_json_pointer(const char* s, std::size_t n);\n

      This operator implements a user-defined string literal for JSON Pointers. It can be used by adding _json_pointer to a string literal and returns a json_pointer object if no parse error occurred.

      It is recommended to bring the operator into scope using any of the following lines:

      using nlohmann::literals::operator \"\"_json_pointer;\nusing namespace nlohmann::literals;\nusing namespace nlohmann::json_literals;\nusing namespace nlohmann::literals::json_literals;\nusing namespace nlohmann;\n
      This is suggested to ease migration to the next major version release of the library. See JSON_USE_GLOBAL_UDLS for details.

      "},{"location":"api/operator_literal_json_pointer/#parameters","title":"Parameters","text":"s (in) a string representation of a JSON Pointer n (in) length of string s"},{"location":"api/operator_literal_json_pointer/#return-value","title":"Return value","text":"

      json_pointer value parsed from s

      "},{"location":"api/operator_literal_json_pointer/#exceptions","title":"Exceptions","text":"

      The function can throw anything that json_pointer::json_pointer would throw.

      "},{"location":"api/operator_literal_json_pointer/#complexity","title":"Complexity","text":"

      Linear.

      "},{"location":"api/operator_literal_json_pointer/#examples","title":"Examples","text":"Example

      The following code shows how to create JSON Pointers from string literals.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    json j = R\"( {\"hello\": \"world\", \"answer\": 42} )\"_json;\n    auto val = j[\"/hello\"_json_pointer];\n\n    std::cout << std::setw(2) << val << '\\n';\n}\n

      Output:

      \"world\"\n
      "},{"location":"api/operator_literal_json_pointer/#see-also","title":"See also","text":"
      • json_pointer - type to represent JSON Pointers
      "},{"location":"api/operator_literal_json_pointer/#version-history","title":"Version history","text":"
      • Added in version 2.0.0.
      • Moved to namespace nlohmann::literals::json_literals in 3.11.0.
      "},{"location":"api/operator_ltlt/","title":"nlohmann::operator<<(basic_json), nlohmann::operator<<(json_pointer)","text":"
      std::ostream& operator<<(std::ostream& o, const basic_json& j);      // (1)\n\nstd::ostream& operator<<(std::ostream& o, const json_pointer& ptr);  // (2)\n
      1. Serialize the given JSON value j to the output stream o. The JSON value will be serialized using the dump member function.
        • The indentation of the output can be controlled with the member variable width of the output stream o. For instance, using the manipulator std::setw(4) on o sets the indentation level to 4 and the serialization result is the same as calling dump(4).
        • The indentation character can be controlled with the member variable fill of the output stream o. For instance, the manipulator std::setfill('\\\\t') sets indentation to use a tab character rather than the default space character.
      2. Write a string representation of the given JSON pointer ptr to the output stream o. The string representation is obtained using the to_string member function.
      "},{"location":"api/operator_ltlt/#parameters","title":"Parameters","text":"o (in, out) stream to write to j (in) JSON value to serialize ptr (in) JSON pointer to write"},{"location":"api/operator_ltlt/#return-value","title":"Return value","text":"

      the stream o

      "},{"location":"api/operator_ltlt/#exceptions","title":"Exceptions","text":"
      1. Throws type_error.316 if a string stored inside the JSON value is not UTF-8 encoded. Note that unlike the dump member functions, no error_handler can be set.
      2. None.
      "},{"location":"api/operator_ltlt/#complexity","title":"Complexity","text":"

      Linear.

      "},{"location":"api/operator_ltlt/#notes","title":"Notes","text":"

      Deprecation

      Function std::ostream& operator<<(std::ostream& o, const basic_json& j) replaces function std::ostream& operator>>(const basic_json& j, std::ostream& o) which has been deprecated in version 3.0.0. It will be removed in version 4.0.0. Please replace calls like j >> o; with o << j;.

      "},{"location":"api/operator_ltlt/#examples","title":"Examples","text":"Example: (1) serialize JSON value to stream

      The example below shows the serialization with different parameters to width to adjust the indentation level.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n\n    // serialize without indentation\n    std::cout << j_object << \"\\n\\n\";\n    std::cout << j_array << \"\\n\\n\";\n\n    // serialize with indentation\n    std::cout << std::setw(4) << j_object << \"\\n\\n\";\n    std::cout << std::setw(2) << j_array << \"\\n\\n\";\n    std::cout << std::setw(1) << std::setfill('\\t') << j_object << \"\\n\\n\";\n}\n

      Output:

      {\"one\":1,\"two\":2}\n\n[1,2,4,8,16]\n\n{\n    \"one\": 1,\n    \"two\": 2\n}\n\n[\n  1,\n  2,\n  4,\n  8,\n  16\n]\n\n{\n    \"one\": 1,\n    \"two\": 2\n}\n
      Example: (2) write JSON pointer to stream

      The example below shows how to write a JSON pointer to a stream.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON poiner\n    json::json_pointer ptr(\"/foo/bar/baz\");\n\n    // write string representation to stream\n    std::cout << ptr << std::endl;\n}\n

      Output:

      /foo/bar/baz\n
      "},{"location":"api/operator_ltlt/#version-history","title":"Version history","text":"
      1. Added in version 1.0.0. Added support for indentation character and deprecated std::ostream& operator>>(const basic_json& j, std::ostream& o) in version 3.0.0.
      2. Added in version 3.11.0.
      "},{"location":"api/ordered_json/","title":"nlohmann::ordered_json","text":"
      using ordered_json = basic_json<ordered_map>;\n

      This type preserves the insertion order of object keys.

      "},{"location":"api/ordered_json/#iterator-invalidation","title":"Iterator invalidation","text":"

      The type is based on ordered_map which in turn uses a std::vector to store object elements. Therefore, adding object elements can yield a reallocation in which case all iterators (including the end() iterator) and all references to the elements are invalidated. Also, any iterator or reference after the insertion point will point to the same index which is now a different value.

      "},{"location":"api/ordered_json/#examples","title":"Examples","text":"Example

      The example below demonstrates how ordered_json preserves the insertion order of object keys.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing ordered_json = nlohmann::ordered_json;\n\nint main()\n{\n    ordered_json j;\n    j[\"one\"] = 1;\n    j[\"two\"] = 2;\n    j[\"three\"] = 3;\n\n    std::cout << j.dump(2) << '\\n';\n}\n

      Output:

      {\n  \"one\": 1,\n  \"two\": 2,\n  \"three\": 3\n}\n
      "},{"location":"api/ordered_json/#see-also","title":"See also","text":"
      • ordered_map
      • Object Order
      "},{"location":"api/ordered_json/#version-history","title":"Version history","text":"

      Since version 3.9.0.

      "},{"location":"api/ordered_map/","title":"nlohmann::ordered_map","text":"
      template<class Key, class T, class IgnoredLess = std::less<Key>,\n         class Allocator = std::allocator<std::pair<const Key, T>>>\nstruct ordered_map : std::vector<std::pair<const Key, T>, Allocator>;\n

      A minimal map-like container that preserves insertion order for use within nlohmann::ordered_json (nlohmann::basic_json<ordered_map>).

      "},{"location":"api/ordered_map/#template-parameters","title":"Template parameters","text":"Key key type T mapped type IgnoredLess comparison function (ignored and only added to ensure compatibility with std::map) Allocator allocator type"},{"location":"api/ordered_map/#iterator-invalidation","title":"Iterator invalidation","text":"

      The type uses a std::vector to store object elements. Therefore, adding elements can yield a reallocation in which case all iterators (including the end() iterator) and all references to the elements are invalidated.

      "},{"location":"api/ordered_map/#member-types","title":"Member types","text":"
      • key_type - key type (Key)
      • mapped_type - mapped type (T)
      • Container - base container type (std::vector<std::pair<const Key, T>, Allocator>)
      • iterator
      • const_iterator
      • size_type
      • value_type
      • key_compare - key comparison function
        std::equal_to<Key>  // until C++14\n\nstd::equal_to<>     // since C++14\n
      "},{"location":"api/ordered_map/#member-functions","title":"Member functions","text":"
      • (constructor)
      • (destructor)
      • emplace
      • operator[]
      • at
      • erase
      • count
      • find
      • insert
      "},{"location":"api/ordered_map/#examples","title":"Examples","text":"Example

      The example shows the different behavior of std::map and nlohmann::ordered_map.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\n// simple output function\ntemplate<typename Map>\nvoid output(const char* prefix, const Map& m)\n{\n    std::cout << prefix << \" = { \";\n    for (auto& element : m)\n    {\n        std::cout << element.first << \":\" << element.second << ' ';\n    }\n    std::cout << \"}\" << std::endl;\n}\n\nint main()\n{\n    // create and fill two maps\n    nlohmann::ordered_map<std::string, std::string> m_ordered;\n    m_ordered[\"one\"] = \"eins\";\n    m_ordered[\"two\"] = \"zwei\";\n    m_ordered[\"three\"] = \"drei\";\n\n    std::map<std::string, std::string> m_std;\n    m_std[\"one\"] = \"eins\";\n    m_std[\"two\"] = \"zwei\";\n    m_std[\"three\"] = \"drei\";\n\n    // output: m_ordered is ordered by insertion order, m_std is ordered by key\n    output(\"m_ordered\", m_ordered);\n    output(\"m_std\", m_std);\n\n    // erase and re-add \"one\" key\n    m_ordered.erase(\"one\");\n    m_ordered[\"one\"] = \"eins\";\n\n    m_std.erase(\"one\");\n    m_std[\"one\"] = \"eins\";\n\n    // output: m_ordered shows newly added key at the end; m_std is again ordered by key\n    output(\"m_ordered\", m_ordered);\n    output(\"m_std\", m_std);\n}\n

      Output:

      m_ordered = { one:eins two:zwei three:drei }\nm_std = { one:eins three:drei two:zwei }\nm_ordered = { two:zwei three:drei one:eins }\nm_std = { one:eins three:drei two:zwei }\n
      "},{"location":"api/ordered_map/#see-also","title":"See also","text":"
      • ordered_json
      "},{"location":"api/ordered_map/#version-history","title":"Version history","text":"
      • Added in version 3.9.0 to implement nlohmann::ordered_json.
      • Added key_compare member in version 3.11.0.
      "},{"location":"api/adl_serializer/","title":"nlohmann::adl_serializer","text":"
      template<typename, typename>\nstruct adl_serializer;\n

      Serializer that uses ADL (Argument-Dependent Lookup) to choose to_json/from_json functions from the types' namespaces.

      It is implemented similar to

      template<typename ValueType>\nstruct adl_serializer {\n    template<typename BasicJsonType>\n    static void to_json(BasicJsonType& j, const T& value) {\n        // calls the \"to_json\" method in T's namespace\n    }\n\n    template<typename BasicJsonType>\n    static void from_json(const BasicJsonType& j, T& value) {\n        // same thing, but with the \"from_json\" method\n    }\n};\n
      "},{"location":"api/adl_serializer/#member-functions","title":"Member functions","text":"
      • from_json - convert a JSON value to any value type
      • to_json - convert any value type to a JSON value
      "},{"location":"api/adl_serializer/#version-history","title":"Version history","text":"
      • Added in version 2.1.0.
      "},{"location":"api/adl_serializer/from_json/","title":"nlohmann::adl_serializer::from_json","text":"
      // (1)\ntemplate<typename BasicJsonType, typename TargetType = ValueType>\nstatic auto from_json(BasicJsonType && j, TargetType& val) noexcept(\n    noexcept(::nlohmann::from_json(std::forward<BasicJsonType>(j), val)))\n-> decltype(::nlohmann::from_json(std::forward<BasicJsonType>(j), val), void())\n\n// (2)\ntemplate<typename BasicJsonType, typename TargetType = ValueType>\nstatic auto from_json(BasicJsonType && j) noexcept(\nnoexcept(::nlohmann::from_json(std::forward<BasicJsonType>(j), detail::identity_tag<TargetType> {})))\n-> decltype(::nlohmann::from_json(std::forward<BasicJsonType>(j), detail::identity_tag<TargetType> {}))\n

      This function is usually called by the get() function of the basic_json class (either explicitly or via the conversion operators).

      1. This function is chosen for default-constructible value types.
      2. This function is chosen for value types which are not default-constructible.
      "},{"location":"api/adl_serializer/from_json/#parameters","title":"Parameters","text":"j (in) JSON value to read from val (out) value to write to"},{"location":"api/adl_serializer/from_json/#return-value","title":"Return value","text":"

      Copy of the JSON value, converted to ValueType

      "},{"location":"api/adl_serializer/from_json/#examples","title":"Examples","text":"Example: (1) Default-constructible type

      The example below shows how a from_json function can be implemented for a user-defined type. This function is called by the adl_serializer when template get<ns::person>() is called.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nnamespace ns\n{\n// a simple struct to model a person\nstruct person\n{\n    std::string name;\n    std::string address;\n    int age;\n};\n} // namespace ns\n\nnamespace ns\n{\nvoid from_json(const json& j, person& p)\n{\n    j.at(\"name\").get_to(p.name);\n    j.at(\"address\").get_to(p.address);\n    j.at(\"age\").get_to(p.age);\n}\n} // namespace ns\n\nint main()\n{\n    json j;\n    j[\"name\"] = \"Ned Flanders\";\n    j[\"address\"] = \"744 Evergreen Terrace\";\n    j[\"age\"] = 60;\n\n    auto p = j.template get<ns::person>();\n\n    std::cout << p.name << \" (\" << p.age << \") lives in \" << p.address << std::endl;\n}\n

      Output:

      Ned Flanders (60) lives in 744 Evergreen Terrace\n
      Example: (2) Non-default-constructible type

      The example below shows how a from_json is implemented as part of a specialization of the adl_serializer to realize the conversion of a non-default-constructible type.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nnamespace ns\n{\n// a simple struct to model a person (not default constructible)\nstruct person\n{\n    person(std::string n, std::string a, int aa)\n        : name(std::move(n)), address(std::move(a)), age(aa)\n    {}\n\n    std::string name;\n    std::string address;\n    int age;\n};\n} // namespace ns\n\nnamespace nlohmann\n{\ntemplate <>\nstruct adl_serializer<ns::person>\n{\n    static ns::person from_json(const json& j)\n    {\n        return {j.at(\"name\"), j.at(\"address\"), j.at(\"age\")};\n    }\n\n    // Here's the catch! You must provide a to_json method! Otherwise, you\n    // will not be able to convert person to json, since you fully\n    // specialized adl_serializer on that type\n    static void to_json(json& j, ns::person p)\n    {\n        j[\"name\"] = p.name;\n        j[\"address\"] = p.address;\n        j[\"age\"] = p.age;\n    }\n};\n} // namespace nlohmann\n\nint main()\n{\n    json j;\n    j[\"name\"] = \"Ned Flanders\";\n    j[\"address\"] = \"744 Evergreen Terrace\";\n    j[\"age\"] = 60;\n\n    auto p = j.template get<ns::person>();\n\n    std::cout << p.name << \" (\" << p.age << \") lives in \" << p.address << std::endl;\n}\n

      Output:

      Ned Flanders (60) lives in 744 Evergreen Terrace\n
      "},{"location":"api/adl_serializer/from_json/#see-also","title":"See also","text":"
      • to_json
      "},{"location":"api/adl_serializer/from_json/#version-history","title":"Version history","text":"
      • Added in version 2.1.0.
      "},{"location":"api/adl_serializer/to_json/","title":"nlohmann::adl_serializer::to_json","text":"
      template<typename BasicJsonType, typename TargetType = ValueType>\nstatic auto to_json(BasicJsonType& j, TargetType && val) noexcept(\n    noexcept(::nlohmann::to_json(j, std::forward<TargetType>(val))))\n-> decltype(::nlohmann::to_json(j, std::forward<TargetType>(val)), void())\n

      This function is usually called by the constructors of the basic_json class.

      "},{"location":"api/adl_serializer/to_json/#parameters","title":"Parameters","text":"j (out) JSON value to write to val (in) value to read from"},{"location":"api/adl_serializer/to_json/#examples","title":"Examples","text":"Example

      The example below shows how a to_json function can be implemented for a user-defined type. This function is called by the adl_serializer when the constructor basic_json(ns::person) is called.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nnamespace ns\n{\n// a simple struct to model a person\nstruct person\n{\n    std::string name;\n    std::string address;\n    int age;\n};\n} // namespace ns\n\nnamespace ns\n{\nvoid to_json(json& j, const person& p)\n{\n    j = json{ {\"name\", p.name}, {\"address\", p.address}, {\"age\", p.age} };\n}\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    json j = p;\n\n    std::cout << j << std::endl;\n}\n

      Output:

      {\"address\":\"744 Evergreen Terrace\",\"age\":60,\"name\":\"Ned Flanders\"}\n
      "},{"location":"api/adl_serializer/to_json/#see-also","title":"See also","text":"
      • from_json
      "},{"location":"api/adl_serializer/to_json/#version-history","title":"Version history","text":"
      • Added in version 2.1.0.
      "},{"location":"api/basic_json/","title":"nlohmann::basic_json","text":"

      Defined in header <nlohmann/json.hpp>

      template<\n    template<typename U, typename V, typename... Args> class ObjectType = std::map,\n    template<typename U, typename... Args> class ArrayType = std::vector,\n    class StringType = std::string,\n    class BooleanType = bool,\n    class NumberIntegerType = std::int64_t,\n    class NumberUnsignedType = std::uint64_t,\n    class NumberFloatType = double,\n    template<typename U> class AllocatorType = std::allocator,\n    template<typename T, typename SFINAE = void> class JSONSerializer = adl_serializer,\n    class BinaryType = std::vector<std::uint8_t>,\n    class CustomBaseClass = void\n>\nclass basic_json;\n
      "},{"location":"api/basic_json/#template-parameters","title":"Template parameters","text":"Template parameter Description Derived type ObjectType type for JSON objects object_t ArrayType type for JSON arrays array_t StringType type for JSON strings and object keys string_t BooleanType type for JSON booleans boolean_t NumberIntegerType type for JSON integer numbers number_integer_t NumberUnsignedType type for JSON unsigned integer numbers number_unsigned_t NumberFloatType type for JSON floating-point numbers number_float_t AllocatorType type of the allocator to use JSONSerializer the serializer to resolve internal calls to to_json() and from_json() json_serializer BinaryType type for binary arrays binary_t CustomBaseClass extension point for user code json_base_class_t"},{"location":"api/basic_json/#specializations","title":"Specializations","text":"
      • json - default specialization
      • ordered_json - specialization that maintains the insertion order of object keys
      "},{"location":"api/basic_json/#iterator-invalidation","title":"Iterator invalidation","text":"

      All operations that add values to an array (push_back , operator+=, emplace_back, insert, and operator[] for a non-existing index) can yield a reallocation, in which case all iterators (including the end() iterator) and all references to the elements are invalidated.

      For ordered_json, also all operations that add a value to an object (push_back, operator+=, emplace, insert, update, and operator[] for a non-existing key) can yield a reallocation, in which case all iterators (including the end() iterator) and all references to the elements are invalidated.

      "},{"location":"api/basic_json/#requirements","title":"Requirements","text":"

      The class satisfies the following concept requirements:

      "},{"location":"api/basic_json/#basic","title":"Basic","text":"
      • DefaultConstructible: JSON values can be default constructed. The result will be a JSON null value.
      • MoveConstructible: A JSON value can be constructed from an rvalue argument.
      • CopyConstructible: A JSON value can be copy-constructed from an lvalue expression.
      • MoveAssignable: A JSON value can be assigned from an rvalue argument.
      • CopyAssignable: A JSON value can be copy-assigned from an lvalue expression.
      • Destructible: JSON values can be destructed.
      "},{"location":"api/basic_json/#layout","title":"Layout","text":"
      • StandardLayoutType: JSON values have standard layout: All non-static data members are private and standard layout types, the class has no virtual functions or (virtual) base classes.
      "},{"location":"api/basic_json/#library-wide","title":"Library-wide","text":"
      • EqualityComparable: JSON values can be compared with ==, see operator==.
      • LessThanComparable: JSON values can be compared with <, see operator<.
      • Swappable: Any JSON lvalue or rvalue of can be swapped with any lvalue or rvalue of other compatible types, using unqualified function swap.
      • NullablePointer: JSON values can be compared against std::nullptr_t objects which are used to model the null value.
      "},{"location":"api/basic_json/#container","title":"Container","text":"
      • Container: JSON values can be used like STL containers and provide iterator access.
      • ReversibleContainer: JSON values can be used like STL containers and provide reverse iterator access.
      "},{"location":"api/basic_json/#member-types","title":"Member types","text":"
      • adl_serializer - the default serializer
      • value_t - the JSON type enumeration
      • json_pointer - JSON Pointer implementation
      • json_serializer - type of the serializer to for conversions from/to JSON
      • error_handler_t - type to choose behavior on decoding errors
      • cbor_tag_handler_t - type to choose how to handle CBOR tags
      • initializer_list_t - type for initializer lists of basic_json values
      • input_format_t - type to choose the format to parse
      • json_sax_t - type for SAX events
      "},{"location":"api/basic_json/#exceptions","title":"Exceptions","text":"
      • exception - general exception of the basic_json class
        • parse_error - exception indicating a parse error
        • invalid_iterator - exception indicating errors with iterators
        • type_error - exception indicating executing a member function with a wrong type
        • out_of_range - exception indicating access out of the defined range
        • other_error - exception indicating other library errors
      "},{"location":"api/basic_json/#container-types","title":"Container types","text":"Type Definition value_type basic_json reference value_type& const_reference const value_type& difference_type std::ptrdiff_t size_type std::size_t allocator_type AllocatorType<basic_json> pointer std::allocator_traits<allocator_type>::pointer const_pointer std::allocator_traits<allocator_type>::const_pointer iterator LegacyBidirectionalIterator const_iterator constant LegacyBidirectionalIterator reverse_iterator reverse iterator, derived from iterator const_reverse_iterator reverse iterator, derived from const_iterator iteration_proxy helper type for items function"},{"location":"api/basic_json/#json-value-data-types","title":"JSON value data types","text":"
      • array_t - type for arrays
      • binary_t - type for binary arrays
      • boolean_t - type for booleans
      • default_object_comparator_t - default comparator for objects
      • number_float_t - type for numbers (floating-point)
      • number_integer_t - type for numbers (integer)
      • number_unsigned_t - type for numbers (unsigned)
      • object_comparator_t - comparator for objects
      • object_t - type for objects
      • string_t - type for strings
      "},{"location":"api/basic_json/#parser-callback","title":"Parser callback","text":"
      • parse_event_t - parser event types
      • parser_callback_t - per-element parser callback type
      "},{"location":"api/basic_json/#member-functions","title":"Member functions","text":"
      • (constructor)
      • (destructor)
      • operator= - copy assignment
      • array (static) - explicitly create an array
      • binary (static) - explicitly create a binary array
      • object (static) - explicitly create an object
      "},{"location":"api/basic_json/#object-inspection","title":"Object inspection","text":"

      Functions to inspect the type of a JSON value.

      • type - return the type of the JSON value
      • operator value_t - return the type of the JSON value
      • type_name - return the type as string
      • is_primitive - return whether type is primitive
      • is_structured - return whether type is structured
      • is_null - return whether value is null
      • is_boolean - return whether value is a boolean
      • is_number - return whether value is a number
      • is_number_integer - return whether value is an integer number
      • is_number_unsigned - return whether value is an unsigned integer number
      • is_number_float - return whether value is a floating-point number
      • is_object - return whether value is an object
      • is_array - return whether value is an array
      • is_string - return whether value is a string
      • is_binary - return whether value is a binary array
      • is_discarded - return whether value is discarded
      "},{"location":"api/basic_json/#value-access","title":"Value access","text":"

      Direct access to the stored value of a JSON value.

      • get - get a value
      • get_to - get a value and write it to a destination
      • get_ptr - get a pointer value
      • get_ref - get a reference value
      • operator ValueType - get a value
      • get_binary - get a binary value
      "},{"location":"api/basic_json/#element-access","title":"Element access","text":"

      Access to the JSON value

      • at - access specified element with bounds checking
      • operator[] - access specified element
      • value - access specified object element with default value
      • front - access the first element
      • back - access the last element
      "},{"location":"api/basic_json/#lookup","title":"Lookup","text":"
      • find - find an element in a JSON object
      • count - returns the number of occurrences of a key in a JSON object
      • contains - check the existence of an element in a JSON object
      "},{"location":"api/basic_json/#iterators","title":"Iterators","text":"
      • begin - returns an iterator to the first element
      • cbegin - returns a const iterator to the first element
      • end - returns an iterator to one past the last element
      • cend - returns a const iterator to one past the last element
      • rbegin - returns an iterator to the reverse-beginning
      • rend - returns an iterator to the reverse-end
      • crbegin - returns a const iterator to the reverse-beginning
      • crend - returns a const iterator to the reverse-end
      • items - wrapper to access iterator member functions in range-based for
      "},{"location":"api/basic_json/#capacity","title":"Capacity","text":"
      • empty - checks whether the container is empty
      • size - returns the number of elements
      • max_size - returns the maximum possible number of elements
      "},{"location":"api/basic_json/#modifiers","title":"Modifiers","text":"
      • clear - clears the contents
      • push_back - add a value to an array/object
      • operator+= - add a value to an array/object
      • emplace_back - add a value to an array
      • emplace - add a value to an object if key does not exist
      • erase - remove elements
      • insert - inserts elements
      • update - updates a JSON object from another object, overwriting existing keys
      • swap - exchanges the values
      "},{"location":"api/basic_json/#lexicographical-comparison-operators","title":"Lexicographical comparison operators","text":"
      • operator== - comparison: equal
      • operator!= - comparison: not equal
      • operator< - comparison: less than
      • operator> - comparison: greater than
      • operator<= - comparison: less than or equal
      • operator>= - comparison: greater than or equal
      • operator<=> - comparison: 3-way
      "},{"location":"api/basic_json/#serialization-dumping","title":"Serialization / Dumping","text":"
      • dump - serialization
      "},{"location":"api/basic_json/#deserialization-parsing","title":"Deserialization / Parsing","text":"
      • parse (static) - deserialize from a compatible input
      • accept (static) - check if the input is valid JSON
      • sax_parse (static) - generate SAX events
      "},{"location":"api/basic_json/#json-pointer-functions","title":"JSON Pointer functions","text":"
      • flatten - return flattened JSON value
      • unflatten - unflatten a previously flattened JSON value
      "},{"location":"api/basic_json/#json-patch-functions","title":"JSON Patch functions","text":"
      • patch - applies a JSON patch
      • patch_inplace - applies a JSON patch in place
      • diff (static) - creates a diff as a JSON patch
      "},{"location":"api/basic_json/#json-merge-patch-functions","title":"JSON Merge Patch functions","text":"
      • merge_patch - applies a JSON Merge Patch
      "},{"location":"api/basic_json/#static-functions","title":"Static functions","text":"
      • meta - returns version information on the library
      • get_allocator - returns the allocator associated with the container
      "},{"location":"api/basic_json/#binary-formats","title":"Binary formats","text":"
      • from_bjdata (static) - create a JSON value from an input in BJData format
      • from_bson (static) - create a JSON value from an input in BSON format
      • from_cbor (static) - create a JSON value from an input in CBOR format
      • from_msgpack (static) - create a JSON value from an input in MessagePack format
      • from_ubjson (static) - create a JSON value from an input in UBJSON format
      • to_bjdata (static) - create a BJData serialization of a given JSON value
      • to_bson (static) - create a BSON serialization of a given JSON value
      • to_cbor (static) - create a CBOR serialization of a given JSON value
      • to_msgpack (static) - create a MessagePack serialization of a given JSON value
      • to_ubjson (static) - create a UBJSON serialization of a given JSON value
      "},{"location":"api/basic_json/#non-member-functions","title":"Non-member functions","text":"
      • operator<<(std::ostream&) - serialize to stream
      • operator>>(std::istream&) - deserialize from stream
      • to_string - user-defined to_string function for JSON values
      "},{"location":"api/basic_json/#literals","title":"Literals","text":"
      • operator\"\"_json - user-defined string literal for JSON values
      "},{"location":"api/basic_json/#helper-classes","title":"Helper classes","text":"
      • std::hash<basic_json> - return a hash value for a JSON object
      • std::swap<basic_json> - exchanges the values of two JSON objects
      "},{"location":"api/basic_json/#examples","title":"Examples","text":"Example

      The example shows how the library is used.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    json j =\n    {\n        {\"pi\", 3.141},\n        {\"happy\", true},\n        {\"name\", \"Niels\"},\n        {\"nothing\", nullptr},\n        {\n            \"answer\", {\n                {\"everything\", 42}\n            }\n        },\n        {\"list\", {1, 0, 2}},\n        {\n            \"object\", {\n                {\"currency\", \"USD\"},\n                {\"value\", 42.99}\n            }\n        }\n    };\n\n    // add new values\n    j[\"new\"][\"key\"][\"value\"] = {\"another\", \"list\"};\n\n    // count elements\n    auto s = j.size();\n    j[\"size\"] = s;\n\n    // pretty print with indent of 4 spaces\n    std::cout << std::setw(4) << j << '\\n';\n}\n

      Output:

      {\n    \"answer\": {\n        \"everything\": 42\n    },\n    \"happy\": true,\n    \"list\": [\n        1,\n        0,\n        2\n    ],\n    \"name\": \"Niels\",\n    \"new\": {\n        \"key\": {\n            \"value\": [\n                \"another\",\n                \"list\"\n            ]\n        }\n    },\n    \"nothing\": null,\n    \"object\": {\n        \"currency\": \"USD\",\n        \"value\": 42.99\n    },\n    \"pi\": 3.141,\n    \"size\": 8\n}\n
      "},{"location":"api/basic_json/#see-also","title":"See also","text":"
      • RFC 8259: The JavaScript Object Notation (JSON) Data Interchange Format
      "},{"location":"api/basic_json/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/accept/","title":"nlohmann::basic_json::accept","text":"
      // (1)\ntemplate<typename InputType>\nstatic bool accept(InputType&& i,\n                   const bool ignore_comments = false);\n\n// (2)\ntemplate<typename IteratorType>\nstatic bool accept(IteratorType first, IteratorType last,\n                   const bool ignore_comments = false);\n

      Checks whether the input is valid JSON.

      1. Reads from a compatible input.
      2. Reads from a pair of character iterators

        The value_type of the iterator must be an integral type with size of 1, 2 or 4 bytes, which will be interpreted respectively as UTF-8, UTF-16 and UTF-32.

      Unlike the parse function, this function neither throws an exception in case of invalid JSON input (i.e., a parse error) nor creates diagnostic information.

      "},{"location":"api/basic_json/accept/#template-parameters","title":"Template parameters","text":"InputType

      A compatible input, for instance:

      • an std::istream object
      • a FILE pointer (throws if null)
      • a C-style array of characters
      • a pointer to a null-terminated string of single byte characters (throws if null)
      • a std::string
      • an object obj for which begin(obj) and end(obj) produces a valid pair of iterators.
      IteratorType

      a compatible iterator type, for instance.

      • a pair of std::string::iterator or std::vector<std::uint8_t>::iterator
      • a pair of pointers such as ptr and ptr + len
      "},{"location":"api/basic_json/accept/#parameters","title":"Parameters","text":"i (in) Input to parse from. ignore_comments (in) whether comments should be ignored and treated like whitespace (true) or yield a parse error (false); (optional, false by default) first (in) iterator to start of character range last (in) iterator to end of character range"},{"location":"api/basic_json/accept/#return-value","title":"Return value","text":"

      Whether the input is valid JSON.

      "},{"location":"api/basic_json/accept/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

      "},{"location":"api/basic_json/accept/#exceptions","title":"Exceptions","text":"

      Throws parse_error.101 in case of an empty input like a null FILE* or char* pointer.

      "},{"location":"api/basic_json/accept/#complexity","title":"Complexity","text":"

      Linear in the length of the input. The parser is a predictive LL(1) parser.

      "},{"location":"api/basic_json/accept/#notes","title":"Notes","text":"

      A UTF-8 byte order mark is silently ignored.

      "},{"location":"api/basic_json/accept/#examples","title":"Examples","text":"Example

      The example below demonstrates the accept() function reading from a string.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // a valid JSON text\n    auto valid_text = R\"(\n    {\n        \"numbers\": [1, 2, 3]\n    }\n    )\";\n\n    // an invalid JSON text\n    auto invalid_text = R\"(\n    {\n        \"strings\": [\"extra\", \"comma\", ]\n    }\n    )\";\n\n    std::cout << std::boolalpha\n              << json::accept(valid_text) << ' '\n              << json::accept(invalid_text) << '\\n';\n}\n

      Output:

      true false\n
      "},{"location":"api/basic_json/accept/#see-also","title":"See also","text":"
      • parse - deserialize from a compatible input
      • operator>> - deserialize from stream
      "},{"location":"api/basic_json/accept/#version-history","title":"Version history","text":"
      • Added in version 3.0.0.
      • Ignoring comments via ignore_comments added in version 3.9.0.
      • Changed runtime assertion in case of FILE* null pointers to exception in version 3.11.4.

      Deprecation

      Overload (2) replaces calls to accept with a pair of iterators as their first parameter which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like accept({ptr, ptr+len}, ...); with accept(ptr, ptr+len, ...);.

      You should be warned by your compiler with a -Wdeprecated-declarations warning if you are using a deprecated function.

      "},{"location":"api/basic_json/array/","title":"nlohmann::basic_json::array","text":"
      static basic_json array(initializer_list_t init = {});\n

      Creates a JSON array value from a given initializer list. That is, given a list of values a, b, c, creates the JSON value [a, b, c]. If the initializer list is empty, the empty array [] is created.

      "},{"location":"api/basic_json/array/#parameters","title":"Parameters","text":"init (in) initializer list with JSON values to create an array from (optional)"},{"location":"api/basic_json/array/#return-value","title":"Return value","text":"

      JSON array value

      "},{"location":"api/basic_json/array/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

      "},{"location":"api/basic_json/array/#complexity","title":"Complexity","text":"

      Linear in the size of init.

      "},{"location":"api/basic_json/array/#notes","title":"Notes","text":"

      This function is only needed to express two edge cases that cannot be realized with the initializer list constructor (basic_json(initializer_list_t, bool, value_t)). These cases are:

      1. creating an array whose elements are all pairs whose first element is a string -- in this case, the initializer list constructor would create an object, taking the first elements as keys
      2. creating an empty array -- passing the empty initializer list to the initializer list constructor yields an empty object
      "},{"location":"api/basic_json/array/#examples","title":"Examples","text":"Example

      The following code shows an example for the array function.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON arrays\n    json j_no_init_list = json::array();\n    json j_empty_init_list = json::array({});\n    json j_nonempty_init_list = json::array({1, 2, 3, 4});\n    json j_list_of_pairs = json::array({ {\"one\", 1}, {\"two\", 2} });\n\n    // serialize the JSON arrays\n    std::cout << j_no_init_list << '\\n';\n    std::cout << j_empty_init_list << '\\n';\n    std::cout << j_nonempty_init_list << '\\n';\n    std::cout << j_list_of_pairs << '\\n';\n}\n

      Output:

      []\n[]\n[1,2,3,4]\n[[\"one\",1],[\"two\",2]]\n
      "},{"location":"api/basic_json/array/#see-also","title":"See also","text":"
      • basic_json(initializer_list_t) - create a JSON value from an initializer list
      • object - create a JSON object value from an initializer list
      "},{"location":"api/basic_json/array/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/array_t/","title":"nlohmann::basic_json::array_t","text":"
      using array_t = ArrayType<basic_json, AllocatorType<basic_json>>;\n

      The type used to store JSON arrays.

      RFC 8259 describes JSON arrays as follows:

      An array is an ordered sequence of zero or more values.

      To store objects in C++, a type is defined by the template parameters explained below.

      "},{"location":"api/basic_json/array_t/#template-parameters","title":"Template parameters","text":"ArrayType container type to store arrays (e.g., std::vector or std::list) AllocatorType the allocator to use for objects (e.g., std::allocator)"},{"location":"api/basic_json/array_t/#notes","title":"Notes","text":""},{"location":"api/basic_json/array_t/#default-type","title":"Default type","text":"

      With the default values for ArrayType (std::vector) and AllocatorType (std::allocator), the default value for array_t is:

      std::vector<\n  basic_json, // value_type\n  std::allocator<basic_json> // allocator_type\n>\n
      "},{"location":"api/basic_json/array_t/#limits","title":"Limits","text":"

      RFC 8259 specifies:

      An implementation may set limits on the maximum depth of nesting.

      In this class, the array's limit of nesting is not explicitly constrained. However, a maximum depth of nesting may be introduced by the compiler or runtime environment. A theoretical limit can be queried by calling the max_size function of a JSON array.

      "},{"location":"api/basic_json/array_t/#storage","title":"Storage","text":"

      Arrays are stored as pointers in a basic_json type. That is, for any access to array values, a pointer of type array_t* must be dereferenced.

      "},{"location":"api/basic_json/array_t/#examples","title":"Examples","text":"Example

      The following code shows that array_t is by default, a typedef to std::vector<nlohmann::json>.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout << std::boolalpha << std::is_same<std::vector<json>, json::array_t>::value << std::endl;\n}\n

      Output:

      true\n
      "},{"location":"api/basic_json/array_t/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/at/","title":"nlohmann::basic_json::at","text":"
      // (1)\nreference at(size_type idx);\nconst_reference at(size_type idx) const;\n\n// (2)\nreference at(const typename object_t::key_type& key);\nconst_reference at(const typename object_t::key_type& key) const;\n\n// (3)\ntemplate<typename KeyType>\nreference at(KeyType&& key);\ntemplate<typename KeyType>\nconst_reference at(KeyType&& key) const;\n\n// (4)\nreference at(const json_pointer& ptr);\nconst_reference at(const json_pointer& ptr) const;\n
      1. Returns a reference to the array element at specified location idx, with bounds checking.
      2. Returns a reference to the object element with specified key key, with bounds checking.
      3. See 2. This overload is only available if KeyType is comparable with typename object_t::key_type and typename object_comparator_t::is_transparent denotes a type.
      4. Returns a reference to the element at specified JSON pointer ptr, with bounds checking.
      "},{"location":"api/basic_json/at/#template-parameters","title":"Template parameters","text":"KeyType A type for an object key other than json_pointer that is comparable with string_t using object_comparator_t. This can also be a string view (C++17)."},{"location":"api/basic_json/at/#parameters","title":"Parameters","text":"idx (in) index of the element to access key (in) object key of the elements to access ptr (in) JSON pointer to the desired element"},{"location":"api/basic_json/at/#return-value","title":"Return value","text":"
      1. reference to the element at index idx
      2. reference to the element at key key
      3. reference to the element at key key
      4. reference to the element pointed to by ptr
      "},{"location":"api/basic_json/at/#exception-safety","title":"Exception safety","text":"

      Strong exception safety: if an exception occurs, the original value stays intact.

      "},{"location":"api/basic_json/at/#exceptions","title":"Exceptions","text":"
      1. The function can throw the following exceptions:
        • Throws type_error.304 if the JSON value is not an array; in this case, calling at with an index makes no sense. See example below.
        • Throws out_of_range.401 if the index idx is out of range of the array; that is, idx >= size(). See example below.
      2. The function can throw the following exceptions:
        • Throws type_error.304 if the JSON value is not an object; in this case, calling at with a key makes no sense. See example below.
        • Throws out_of_range.403 if the key key is not stored in the object; that is, find(key) == end(). See example below.
      3. See 2.
      4. The function can throw the following exceptions:
        • Throws parse_error.106 if an array index in the passed JSON pointer ptr begins with '0'. See example below.
        • Throws parse_error.109 if an array index in the passed JSON pointer ptr is not a number. See example below.
        • Throws out_of_range.401 if an array index in the passed JSON pointer ptr is out of range. See example below.
        • Throws out_of_range.402 if the array index '-' is used in the passed JSON pointer ptr. As at provides checked access (and no elements are implicitly inserted), the index '-' is always invalid. See example below.
        • Throws out_of_range.403 if the JSON pointer describes a key of an object which cannot be found. See example below.
        • Throws out_of_range.404 if the JSON pointer ptr can not be resolved. See example below.
      "},{"location":"api/basic_json/at/#complexity","title":"Complexity","text":"
      1. Constant.
      2. Logarithmic in the size of the container.
      3. Logarithmic in the size of the container.
      4. Logarithmic in the size of the container.
      "},{"location":"api/basic_json/at/#examples","title":"Examples","text":"Example: (1) access specified array element with bounds checking

      The example below shows how array elements can be read and written using at(). It also demonstrates the different exceptions that can be thrown.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON array\n    json array = {\"first\", \"2nd\", \"third\", \"fourth\"};\n\n    // output element at index 2 (third element)\n    std::cout << array.at(2) << '\\n';\n\n    // change element at index 1 (second element) to \"second\"\n    array.at(1) = \"second\";\n\n    // output changed array\n    std::cout << array << '\\n';\n\n    // exception type_error.304\n    try\n    {\n        // use at() on a non-array type\n        json str = \"I am a string\";\n        str.at(0) = \"Another string\";\n    }\n    catch (const json::type_error& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n\n    // exception out_of_range.401\n    try\n    {\n        // try to write beyond the array limit\n        array.at(5) = \"sixth\";\n    }\n    catch (const json::out_of_range& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n}\n

      Output:

      \"third\"\n[\"first\",\"second\",\"third\",\"fourth\"]\n[json.exception.type_error.304] cannot use at() with string\n[json.exception.out_of_range.401] array index 5 is out of range\n
      Example: (1) access specified array element with bounds checking

      The example below shows how array elements can be read using at(). It also demonstrates the different exceptions that can be thrown.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON array\n    const json array = {\"first\", \"2nd\", \"third\", \"fourth\"};\n\n    // output element at index 2 (third element)\n    std::cout << array.at(2) << '\\n';\n\n    // exception type_error.304\n    try\n    {\n        // use at() on a non-array type\n        const json str = \"I am a string\";\n        std::cout << str.at(0) << '\\n';\n    }\n    catch (const json::type_error& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n\n    // exception out_of_range.401\n    try\n    {\n        // try to read beyond the array limit\n        std::cout << array.at(5) << '\\n';\n    }\n    catch (const json::out_of_range& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n}\n

      Output:

      \"third\"\n[json.exception.type_error.304] cannot use at() with string\n[json.exception.out_of_range.401] array index 5 is out of range\n
      Example: (2) access specified object element with bounds checking

      The example below shows how object elements can be read and written using at(). It also demonstrates the different exceptions that can be thrown.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON object\n    json object =\n    {\n        {\"the good\", \"il buono\"},\n        {\"the bad\", \"il cattivo\"},\n        {\"the ugly\", \"il brutto\"}\n    };\n\n    // output element with key \"the ugly\"\n    std::cout << object.at(\"the ugly\") << '\\n';\n\n    // change element with key \"the bad\"\n    object.at(\"the bad\") = \"il cattivo\";\n\n    // output changed array\n    std::cout << object << '\\n';\n\n    // exception type_error.304\n    try\n    {\n        // use at() on a non-object type\n        json str = \"I am a string\";\n        str.at(\"the good\") = \"Another string\";\n    }\n    catch (const json::type_error& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n\n    // exception out_of_range.401\n    try\n    {\n        // try to write at a nonexisting key\n        object.at(\"the fast\") = \"il rapido\";\n    }\n    catch (const json::out_of_range& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n}\n

      Output:

      \"il brutto\"\n{\"the bad\":\"il cattivo\",\"the good\":\"il buono\",\"the ugly\":\"il brutto\"}\n[json.exception.type_error.304] cannot use at() with string\n[json.exception.out_of_range.403] key 'the fast' not found\n
      Example: (2) access specified object element with bounds checking

      The example below shows how object elements can be read using at(). It also demonstrates the different exceptions that can be thrown.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON object\n    const json object =\n    {\n        {\"the good\", \"il buono\"},\n        {\"the bad\", \"il cattivo\"},\n        {\"the ugly\", \"il brutto\"}\n    };\n\n    // output element with key \"the ugly\"\n    std::cout << object.at(\"the ugly\") << '\\n';\n\n    // exception type_error.304\n    try\n    {\n        // use at() on a non-object type\n        const json str = \"I am a string\";\n        std::cout << str.at(\"the good\") << '\\n';\n    }\n    catch (const json::type_error& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n\n    // exception out_of_range.401\n    try\n    {\n        // try to read from a nonexisting key\n        std::cout << object.at(\"the fast\") << '\\n';\n    }\n    catch (const json::out_of_range)\n    {\n        std::cout << \"out of range\" << '\\n';\n    }\n}\n

      Output:

      \"il brutto\"\n[json.exception.type_error.304] cannot use at() with string\nout of range\n
      Example: (3) access specified object element using string_view with bounds checking

      The example below shows how object elements can be read and written using at(). It also demonstrates the different exceptions that can be thrown.

      #include <iostream>\n#include <string_view>\n#include <nlohmann/json.hpp>\n\nusing namespace std::string_view_literals;\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON object\n    json object =\n    {\n        {\"the good\", \"il buono\"},\n        {\"the bad\", \"il cattivo\"},\n        {\"the ugly\", \"il brutto\"}\n    };\n\n    // output element with key \"the ugly\" using string_view\n    std::cout << object.at(\"the ugly\"sv) << '\\n';\n\n    // change element with key \"the bad\" using string_view\n    object.at(\"the bad\"sv) = \"il cattivo\";\n\n    // output changed array\n    std::cout << object << '\\n';\n\n    // exception type_error.304\n    try\n    {\n        // use at() with string_view on a non-object type\n        json str = \"I am a string\";\n        str.at(\"the good\"sv) = \"Another string\";\n    }\n    catch (const json::type_error& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n\n    // exception out_of_range.401\n    try\n    {\n        // try to write at a nonexisting key using string_view\n        object.at(\"the fast\"sv) = \"il rapido\";\n    }\n    catch (const json::out_of_range& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n}\n

      Output:

      \"il brutto\"\n{\"the bad\":\"il cattivo\",\"the good\":\"il buono\",\"the ugly\":\"il brutto\"}\n[json.exception.type_error.304] cannot use at() with string\n[json.exception.out_of_range.403] key 'the fast' not found\n
      Example: (3) access specified object element using string_view with bounds checking

      The example below shows how object elements can be read using at(). It also demonstrates the different exceptions that can be thrown.

      #include <iostream>\n#include <string_view>\n#include <nlohmann/json.hpp>\n\nusing namespace std::string_view_literals;\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON object\n    const json object =\n    {\n        {\"the good\", \"il buono\"},\n        {\"the bad\", \"il cattivo\"},\n        {\"the ugly\", \"il brutto\"}\n    };\n\n    // output element with key \"the ugly\" using string_view\n    std::cout << object.at(\"the ugly\"sv) << '\\n';\n\n    // exception type_error.304\n    try\n    {\n        // use at() with string_view on a non-object type\n        const json str = \"I am a string\";\n        std::cout << str.at(\"the good\"sv) << '\\n';\n    }\n    catch (const json::type_error& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n\n    // exception out_of_range.401\n    try\n    {\n        // try to read from a nonexisting key using string_view\n        std::cout << object.at(\"the fast\"sv) << '\\n';\n    }\n    catch (const json::out_of_range& e)\n    {\n        std::cout << \"out of range\" << '\\n';\n    }\n}\n

      Output:

      \"il brutto\"\n[json.exception.type_error.304] cannot use at() with string\nout of range\n
      Example: (4) access specified element via JSON Pointer

      The example below shows how object elements can be read and written using at(). It also demonstrates the different exceptions that can be thrown.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON value\n    json j =\n    {\n        {\"number\", 1}, {\"string\", \"foo\"}, {\"array\", {1, 2}}\n    };\n\n    // read-only access\n\n    // output element with JSON pointer \"/number\"\n    std::cout << j.at(\"/number\"_json_pointer) << '\\n';\n    // output element with JSON pointer \"/string\"\n    std::cout << j.at(\"/string\"_json_pointer) << '\\n';\n    // output element with JSON pointer \"/array\"\n    std::cout << j.at(\"/array\"_json_pointer) << '\\n';\n    // output element with JSON pointer \"/array/1\"\n    std::cout << j.at(\"/array/1\"_json_pointer) << '\\n';\n\n    // writing access\n\n    // change the string\n    j.at(\"/string\"_json_pointer) = \"bar\";\n    // output the changed string\n    std::cout << j[\"string\"] << '\\n';\n\n    // change an array element\n    j.at(\"/array/1\"_json_pointer) = 21;\n    // output the changed array\n    std::cout << j[\"array\"] << '\\n';\n\n    // out_of_range.106\n    try\n    {\n        // try to use an array index with leading '0'\n        json::reference ref = j.at(\"/array/01\"_json_pointer);\n    }\n    catch (const json::parse_error& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n\n    // out_of_range.109\n    try\n    {\n        // try to use an array index that is not a number\n        json::reference ref = j.at(\"/array/one\"_json_pointer);\n    }\n    catch (const json::parse_error& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n\n    // out_of_range.401\n    try\n    {\n        // try to use an invalid array index\n        json::reference ref = j.at(\"/array/4\"_json_pointer);\n    }\n    catch (const json::out_of_range& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n\n    // out_of_range.402\n    try\n    {\n        // try to use the array index '-'\n        json::reference ref = j.at(\"/array/-\"_json_pointer);\n    }\n    catch (const json::out_of_range& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n\n    // out_of_range.403\n    try\n    {\n        // try to use a JSON pointer to a nonexistent object key\n        json::const_reference ref = j.at(\"/foo\"_json_pointer);\n    }\n    catch (const json::out_of_range& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n\n    // out_of_range.404\n    try\n    {\n        // try to use a JSON pointer that cannot be resolved\n        json::reference ref = j.at(\"/number/foo\"_json_pointer);\n    }\n    catch (const json::out_of_range& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n}\n

      Output:

      1\n\"foo\"\n[1,2]\n2\n\"bar\"\n[1,21]\n[json.exception.parse_error.106] parse error: array index '01' must not begin with '0'\n[json.exception.parse_error.109] parse error: array index 'one' is not a number\n[json.exception.out_of_range.401] array index 4 is out of range\n[json.exception.out_of_range.402] array index '-' (2) is out of range\n[json.exception.out_of_range.403] key 'foo' not found\n[json.exception.out_of_range.404] unresolved reference token 'foo'\n
      Example: (4) access specified element via JSON Pointer

      The example below shows how object elements can be read using at(). It also demonstrates the different exceptions that can be thrown.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON value\n    const json j =\n    {\n        {\"number\", 1}, {\"string\", \"foo\"}, {\"array\", {1, 2}}\n    };\n\n    // read-only access\n\n    // output element with JSON pointer \"/number\"\n    std::cout << j.at(\"/number\"_json_pointer) << '\\n';\n    // output element with JSON pointer \"/string\"\n    std::cout << j.at(\"/string\"_json_pointer) << '\\n';\n    // output element with JSON pointer \"/array\"\n    std::cout << j.at(\"/array\"_json_pointer) << '\\n';\n    // output element with JSON pointer \"/array/1\"\n    std::cout << j.at(\"/array/1\"_json_pointer) << '\\n';\n\n    // out_of_range.109\n    try\n    {\n        // try to use an array index that is not a number\n        json::const_reference ref = j.at(\"/array/one\"_json_pointer);\n    }\n    catch (const json::parse_error& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n\n    // out_of_range.401\n    try\n    {\n        // try to use an invalid array index\n        json::const_reference ref = j.at(\"/array/4\"_json_pointer);\n    }\n    catch (const json::out_of_range& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n\n    // out_of_range.402\n    try\n    {\n        // try to use the array index '-'\n        json::const_reference ref = j.at(\"/array/-\"_json_pointer);\n    }\n    catch (const json::out_of_range& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n\n    // out_of_range.403\n    try\n    {\n        // try to use a JSON pointer to a nonexistent object key\n        json::const_reference ref = j.at(\"/foo\"_json_pointer);\n    }\n    catch (const json::out_of_range& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n\n    // out_of_range.404\n    try\n    {\n        // try to use a JSON pointer that cannot be resolved\n        json::const_reference ref = j.at(\"/number/foo\"_json_pointer);\n    }\n    catch (const json::out_of_range& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n}\n

      Output:

      1\n\"foo\"\n[1,2]\n2\n[json.exception.parse_error.109] parse error: array index 'one' is not a number\n[json.exception.out_of_range.401] array index 4 is out of range\n[json.exception.out_of_range.402] array index '-' (2) is out of range\n[json.exception.out_of_range.403] key 'foo' not found\n[json.exception.out_of_range.404] unresolved reference token 'foo'\n
      "},{"location":"api/basic_json/at/#see-also","title":"See also","text":"
      • documentation on checked access
      • see operator[] for unchecked access by reference
      • see value for access with default value
      "},{"location":"api/basic_json/at/#version-history","title":"Version history","text":"
      1. Added in version 1.0.0.
      2. Added in version 1.0.0.
      3. Added in version 3.11.0.
      4. Added in version 2.0.0.
      "},{"location":"api/basic_json/back/","title":"nlohmann::basic_json::back","text":"
      reference back();\n\nconst_reference back() const;\n

      Returns a reference to the last element in the container. For a JSON container c, the expression c.back() is equivalent to

      auto tmp = c.end();\n--tmp;\nreturn *tmp;\n
      "},{"location":"api/basic_json/back/#return-value","title":"Return value","text":"

      In case of a structured type (array or object), a reference to the last element is returned. In case of number, string, boolean, or binary values, a reference to the value is returned.

      "},{"location":"api/basic_json/back/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

      "},{"location":"api/basic_json/back/#exceptions","title":"Exceptions","text":"

      If the JSON value is null, exception invalid_iterator.214 is thrown.

      "},{"location":"api/basic_json/back/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/back/#notes","title":"Notes","text":"

      Precondition

      The array or object must not be empty. Calling back on an empty array or object yields undefined behavior.

      "},{"location":"api/basic_json/back/#examples","title":"Examples","text":"Example

      The following code shows an example for back().

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_object_empty(json::value_t::object);\n    json j_array = {1, 2, 4, 8, 16};\n    json j_array_empty(json::value_t::array);\n    json j_string = \"Hello, world\";\n\n    // call back()\n    std::cout << j_boolean.back() << '\\n';\n    std::cout << j_number_integer.back() << '\\n';\n    std::cout << j_number_float.back() << '\\n';\n    std::cout << j_object.back() << '\\n';\n    //std::cout << j_object_empty.back() << '\\n';  // undefined behavior\n    std::cout << j_array.back() << '\\n';\n    //std::cout << j_array_empty.back() << '\\n';   // undefined behavior\n    std::cout << j_string.back() << '\\n';\n\n    // back() called on a null value\n    try\n    {\n        json j_null;\n        j_null.back();\n    }\n    catch (const json::invalid_iterator& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n}\n

      Output:

      true\n17\n23.42\n2\n16\n\"Hello, world\"\n[json.exception.invalid_iterator.214] cannot get value\n
      "},{"location":"api/basic_json/back/#see-also","title":"See also","text":"
      • front to access the first element
      "},{"location":"api/basic_json/back/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      • Adjusted code to return reference to binary values in version 3.8.0.
      "},{"location":"api/basic_json/basic_json/","title":"nlohmann::basic_json::basic_json","text":"
      // (1)\nbasic_json(const value_t v);\n\n// (2)\nbasic_json(std::nullptr_t = nullptr) noexcept;\n\n// (3)\ntemplate<typename CompatibleType>\nbasic_json(CompatibleType&& val) noexcept(noexcept(\n           JSONSerializer<U>::to_json(std::declval<basic_json_t&>(),\n                                      std::forward<CompatibleType>(val))));\n\n// (4)\ntemplate<typename BasicJsonType>\nbasic_json(const BasicJsonType& val);\n\n// (5)\nbasic_json(initializer_list_t init,\n           bool type_deduction = true,\n           value_t manual_type = value_t::array);\n\n// (6)\nbasic_json(size_type cnt, const basic_json& val);\n\n// (7)\nbasic_json(iterator first, iterator last);\nbasic_json(const_iterator first, const_iterator last);\n\n// (8)\nbasic_json(const basic_json& other);\n\n// (9)\nbasic_json(basic_json&& other) noexcept;\n
      1. Create an empty JSON value with a given type. The value will be default initialized with an empty value which depends on the type:

        Value type initial value null null boolean false string \"\" number 0 object {} array [] binary empty array

        The postcondition of this constructor can be restored by calling clear().

      2. Create a null JSON value. It either takes a null pointer as parameter (explicitly creating null) or no parameter (implicitly creating null). The passed null pointer itself is not read -- it is only used to choose the right constructor.

      3. This is a \"catch all\" constructor for all compatible JSON types; that is, types for which a to_json() method exists. The constructor forwards the parameter val to that method (to json_serializer<U>::to_json method with U = uncvref_t<CompatibleType>, to be exact).

        Template type CompatibleType includes, but is not limited to, the following types:

        • arrays: array_t and all kinds of compatible containers such as std::vector, std::deque, std::list, std::forward_list, std::array, std::valarray, std::set, std::unordered_set, std::multiset, and std::unordered_multiset with a value_type from which a basic_json value can be constructed.
        • objects: object_t and all kinds of compatible associative containers such as std::map, std::unordered_map, std::multimap, and std::unordered_multimap with a key_type compatible to string_t and a value_type from which a basic_json value can be constructed.
        • strings: string_t, string literals, and all compatible string containers can be used.
        • numbers: number_integer_t, number_unsigned_t, number_float_t, and all convertible number types such as int, size_t, int64_t, float or double can be used.
        • boolean: boolean_t / bool can be used.
        • binary: binary_t / std::vector<uint8_t> may be used; unfortunately because string literals cannot be distinguished from binary character arrays by the C++ type system, all types compatible with const char* will be directed to the string constructor instead. This is both for backwards compatibility, and due to the fact that a binary type is not a standard JSON type.

        See the examples below.

      4. This is a constructor for existing basic_json types. It does not hijack copy/move constructors, since the parameter has different template arguments than the current ones.

        The constructor tries to convert the internal m_value of the parameter.

      5. Creates a JSON value of type array or object from the passed initializer list init. In case type_deduction is true (default), the type of the JSON value to be created is deducted from the initializer list init according to the following rules:

        1. If the list is empty, an empty JSON object value {} is created.
        2. If the list consists of pairs whose first element is a string, a JSON object value is created where the first elements of the pairs are treated as keys and the second elements are as values.
        3. In all other cases, an array is created.

        The rules aim to create the best fit between a C++ initializer list and JSON values. The rationale is as follows:

        1. The empty initializer list is written as {} which is exactly an empty JSON object.
        2. C++ has no way of describing mapped types other than to list a list of pairs. As JSON requires that keys must be of type string, rule 2 is the weakest constraint one can pose on initializer lists to interpret them as an object.
        3. In all other cases, the initializer list could not be interpreted as JSON object type, so interpreting it as JSON array type is safe.

        With the rules described above, the following JSON values cannot be expressed by an initializer list:

        • the empty array ([]): use array(initializer_list_t) with an empty initializer list in this case
        • arrays whose elements satisfy rule 2: use array(initializer_list_t) with the same initializer list in this case

        Function array() and object() force array and object creation from initializer lists, respectively.

      6. Constructs a JSON array value by creating cnt copies of a passed value. In case cnt is 0, an empty array is created.

      7. Constructs the JSON value with the contents of the range [first, last). The semantics depends on the different types a JSON value can have:

        • In case of a null type, invalid_iterator.206 is thrown.
        • In case of other primitive types (number, boolean, or string), first must be begin() and last must be end(). In this case, the value is copied. Otherwise, invalid_iterator.204 is thrown.
        • In case of structured types (array, object), the constructor behaves as similar versions for std::vector or std::map; that is, a JSON array or object is constructed from the values in the range.
      8. Creates a copy of a given JSON value.

      9. Move constructor. Constructs a JSON value with the contents of the given value other using move semantics. It \"steals\" the resources from other and leaves it as JSON null value.

      "},{"location":"api/basic_json/basic_json/#template-parameters","title":"Template parameters","text":"CompatibleType

      a type such that:

      • CompatibleType is not derived from std::istream,
      • CompatibleType is not basic_json (to avoid hijacking copy/move constructors),
      • CompatibleType is not a different basic_json type (i.e. with different template arguments)
      • CompatibleType is not a basic_json nested type (e.g., json_pointer, iterator, etc.)
      • json_serializer<U> (with U = uncvref_t<CompatibleType>) has a to_json(basic_json_t&, CompatibleType&&) method
      BasicJsonType:

      a type such that:

      • BasicJsonType is a basic_json type.
      • BasicJsonType has different template arguments than basic_json_t.
      U: uncvref_t<CompatibleType>"},{"location":"api/basic_json/basic_json/#parameters","title":"Parameters","text":"v (in) the type of the value to create val (in) the value to be forwarded to the respective constructor init (in) initializer list with JSON values type_deduction (in) internal parameter; when set to true, the type of the JSON value is deducted from the initializer list init; when set to false, the type provided via manual_type is forced. This mode is used by the functions array(initializer_list_t) and object(initializer_list_t). manual_type (in) internal parameter; when type_deduction is set to false, the created JSON value will use the provided type (only value_t::array and value_t::object are valid); when type_deduction is set to true, this parameter has no effect cnt (in) the number of JSON copies of val to create first (in) begin of the range to copy from (included) last (in) end of the range to copy from (excluded) other (in) the JSON value to copy/move"},{"location":"api/basic_json/basic_json/#exception-safety","title":"Exception safety","text":"
      1. Strong guarantee: if an exception is thrown, there are no changes to any JSON value.
      2. No-throw guarantee: this constructor never throws exceptions.
      3. Depends on the called constructor. For types directly supported by the library (i.e., all types for which no to_json() function was provided), strong guarantee holds: if an exception is thrown, there are no changes to any JSON value.
      4. Depends on the called constructor. For types directly supported by the library (i.e., all types for which no to_json() function was provided), strong guarantee holds: if an exception is thrown, there are no changes to any JSON value.
      5. Strong guarantee: if an exception is thrown, there are no changes to any JSON value.
      6. Strong guarantee: if an exception is thrown, there are no changes to any JSON value.
      7. Strong guarantee: if an exception is thrown, there are no changes to any JSON value.
      8. Strong guarantee: if an exception is thrown, there are no changes to any JSON value.
      9. No-throw guarantee: this constructor never throws exceptions.
      "},{"location":"api/basic_json/basic_json/#exceptions","title":"Exceptions","text":"
      1. (none)
      2. The function does not throw exceptions.
      3. (none)
      4. (none)
      5. The function can throw the following exceptions:
        • Throws type_error.301 if type_deduction is false, manual_type is value_t::object, but init contains an element which is not a pair whose first element is a string. In this case, the constructor could not create an object. If type_deduction would have been true, an array would have been created. See object(initializer_list_t) for an example.
      6. (none)
      7. The function can throw the following exceptions:
        • Throws invalid_iterator.201 if iterators first and last are not compatible (i.e., do not belong to the same JSON value). In this case, the range [first, last) is undefined.
        • Throws invalid_iterator.204 if iterators first and last belong to a primitive type (number, boolean, or string), but first does not point to the first element anymore. In this case, the range [first, last) is undefined. See example code below.
        • Throws invalid_iterator.206 if iterators first and last belong to a null value. In this case, the range [first, last) is undefined.
      8. (none)
      9. The function does not throw exceptions.
      "},{"location":"api/basic_json/basic_json/#complexity","title":"Complexity","text":"
      1. Constant.
      2. Constant.
      3. Usually linear in the size of the passed val, also depending on the implementation of the called to_json() method.
      4. Usually linear in the size of the passed val, also depending on the implementation of the called to_json() method.
      5. Linear in the size of the initializer list init.
      6. Linear in cnt.
      7. Linear in distance between first and last.
      8. Linear in the size of other.
      9. Constant.
      "},{"location":"api/basic_json/basic_json/#notes","title":"Notes","text":"
      • Overload 5:

        Empty initializer list

        When used without parentheses around an empty initializer list, basic_json() is called instead of this function, yielding the JSON null value.

      • Overload 7:

        Preconditions

        • Iterators first and last must be initialized. **This precondition is enforced with a runtime assertion.
        • Range [first, last) is valid. Usually, this precondition cannot be checked efficiently. Only certain edge cases are detected; see the description of the exceptions above. A violation of this precondition yields undefined behavior.

        Runtime assertion

        A precondition is enforced with a runtime assertion.

      • Overload 8:

        Postcondition

        *this == other

      • Overload 9:

        Postconditions

        • `*this has the same value as other before the call.
        • other is a JSON null value
      "},{"location":"api/basic_json/basic_json/#examples","title":"Examples","text":"Example: (1) create an empty value with a given type

      The following code shows the constructor for different value_t values.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create the different JSON values with default values\n    json j_null(json::value_t::null);\n    json j_boolean(json::value_t::boolean);\n    json j_number_integer(json::value_t::number_integer);\n    json j_number_float(json::value_t::number_float);\n    json j_object(json::value_t::object);\n    json j_array(json::value_t::array);\n    json j_string(json::value_t::string);\n\n    // serialize the JSON values\n    std::cout << j_null << '\\n';\n    std::cout << j_boolean << '\\n';\n    std::cout << j_number_integer << '\\n';\n    std::cout << j_number_float << '\\n';\n    std::cout << j_object << '\\n';\n    std::cout << j_array << '\\n';\n    std::cout << j_string << '\\n';\n}\n

      Output:

      null\nfalse\n0\n0.0\n{}\n[]\n\"\"\n
      Example: (2) create a null object

      The following code shows the constructor with and without a null pointer parameter.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // implicitly create a JSON null value\n    json j1;\n\n    // explicitly create a JSON null value\n    json j2(nullptr);\n\n    // serialize the JSON null value\n    std::cout << j1 << '\\n' << j2 << '\\n';\n}\n

      Output:

      null\nnull\n
      Example: (3) create a JSON value from compatible types

      The following code shows the constructor with several compatible types.

      #include <iostream>\n#include <deque>\n#include <list>\n#include <forward_list>\n#include <set>\n#include <unordered_map>\n#include <unordered_set>\n#include <valarray>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // ============\n    // object types\n    // ============\n\n    // create an object from an object_t value\n    json::object_t object_value = { {\"one\", 1}, {\"two\", 2} };\n    json j_object_t(object_value);\n\n    // create an object from std::map\n    std::map<std::string, int> c_map\n    {\n        {\"one\", 1}, {\"two\", 2}, {\"three\", 3}\n    };\n    json j_map(c_map);\n\n    // create an object from std::unordered_map\n    std::unordered_map<const char*, double> c_umap\n    {\n        {\"one\", 1.2}, {\"two\", 2.3}, {\"three\", 3.4}\n    };\n    json j_umap(c_umap);\n\n    // create an object from std::multimap\n    std::multimap<std::string, bool> c_mmap\n    {\n        {\"one\", true}, {\"two\", true}, {\"three\", false}, {\"three\", true}\n    };\n    json j_mmap(c_mmap); // only one entry for key \"three\" is used\n\n    // create an object from std::unordered_multimap\n    std::unordered_multimap<std::string, bool> c_ummap\n    {\n        {\"one\", true}, {\"two\", true}, {\"three\", false}, {\"three\", true}\n    };\n    json j_ummap(c_ummap); // only one entry for key \"three\" is used\n\n    // serialize the JSON objects\n    std::cout << j_object_t << '\\n';\n    std::cout << j_map << '\\n';\n    std::cout << j_umap << '\\n';\n    std::cout << j_mmap << '\\n';\n    std::cout << j_ummap << \"\\n\\n\";\n\n    // ===========\n    // array types\n    // ===========\n\n    // create an array from an array_t value\n    json::array_t array_value = {\"one\", \"two\", 3, 4.5, false};\n    json j_array_t(array_value);\n\n    // create an array from std::vector\n    std::vector<int> c_vector {1, 2, 3, 4};\n    json j_vec(c_vector);\n\n    // create an array from std::valarray\n    std::valarray<short> c_valarray {10, 9, 8, 7};\n    json j_valarray(c_valarray);\n\n    // create an array from std::deque\n    std::deque<double> c_deque {1.2, 2.3, 3.4, 5.6};\n    json j_deque(c_deque);\n\n    // create an array from std::list\n    std::list<bool> c_list {true, true, false, true};\n    json j_list(c_list);\n\n    // create an array from std::forward_list\n    std::forward_list<std::int64_t> c_flist {12345678909876, 23456789098765, 34567890987654, 45678909876543};\n    json j_flist(c_flist);\n\n    // create an array from std::array\n    std::array<unsigned long, 4> c_array {{1, 2, 3, 4}};\n    json j_array(c_array);\n\n    // create an array from std::set\n    std::set<std::string> c_set {\"one\", \"two\", \"three\", \"four\", \"one\"};\n    json j_set(c_set); // only one entry for \"one\" is used\n\n    // create an array from std::unordered_set\n    std::unordered_set<std::string> c_uset {\"one\", \"two\", \"three\", \"four\", \"one\"};\n    json j_uset(c_uset); // only one entry for \"one\" is used\n\n    // create an array from std::multiset\n    std::multiset<std::string> c_mset {\"one\", \"two\", \"one\", \"four\"};\n    json j_mset(c_mset); // both entries for \"one\" are used\n\n    // create an array from std::unordered_multiset\n    std::unordered_multiset<std::string> c_umset {\"one\", \"two\", \"one\", \"four\"};\n    json j_umset(c_umset); // both entries for \"one\" are used\n\n    // serialize the JSON arrays\n    std::cout << j_array_t << '\\n';\n    std::cout << j_vec << '\\n';\n    std::cout << j_valarray << '\\n';\n    std::cout << j_deque << '\\n';\n    std::cout << j_list << '\\n';\n    std::cout << j_flist << '\\n';\n    std::cout << j_array << '\\n';\n    std::cout << j_set << '\\n';\n    std::cout << j_uset << '\\n';\n    std::cout << j_mset << '\\n';\n    std::cout << j_umset << \"\\n\\n\";\n\n    // ============\n    // string types\n    // ============\n\n    // create string from a string_t value\n    json::string_t string_value = \"The quick brown fox jumps over the lazy dog.\";\n    json j_string_t(string_value);\n\n    // create a JSON string directly from a string literal\n    json j_string_literal(\"The quick brown fox jumps over the lazy dog.\");\n\n    // create string from std::string\n    std::string s_stdstring = \"The quick brown fox jumps over the lazy dog.\";\n    json j_stdstring(s_stdstring);\n\n    // serialize the JSON strings\n    std::cout << j_string_t << '\\n';\n    std::cout << j_string_literal << '\\n';\n    std::cout << j_stdstring << \"\\n\\n\";\n\n    // ============\n    // number types\n    // ============\n\n    // create a JSON number from number_integer_t\n    json::number_integer_t value_integer_t = -42;\n    json j_integer_t(value_integer_t);\n\n    // create a JSON number from number_unsigned_t\n    json::number_integer_t value_unsigned_t = 17;\n    json j_unsigned_t(value_unsigned_t);\n\n    // create a JSON number from an anonymous enum\n    enum { enum_value = 17 };\n    json j_enum(enum_value);\n\n    // create values of different integer types\n    short n_short = 42;\n    int n_int = -23;\n    long n_long = 1024;\n    int_least32_t n_int_least32_t = -17;\n    uint8_t n_uint8_t = 8;\n\n    // create (integer) JSON numbers\n    json j_short(n_short);\n    json j_int(n_int);\n    json j_long(n_long);\n    json j_int_least32_t(n_int_least32_t);\n    json j_uint8_t(n_uint8_t);\n\n    // create values of different floating-point types\n    json::number_float_t v_ok = 3.141592653589793;\n    json::number_float_t v_nan = NAN;\n    json::number_float_t v_infinity = INFINITY;\n\n    // create values of different floating-point types\n    float n_float = 42.23;\n    float n_float_nan = 1.0f / 0.0f;\n    double n_double = 23.42;\n\n    // create (floating point) JSON numbers\n    json j_ok(v_ok);\n    json j_nan(v_nan);\n    json j_infinity(v_infinity);\n    json j_float(n_float);\n    json j_float_nan(n_float_nan);\n    json j_double(n_double);\n\n    // serialize the JSON numbers\n    std::cout << j_integer_t << '\\n';\n    std::cout << j_unsigned_t << '\\n';\n    std::cout << j_enum << '\\n';\n    std::cout << j_short << '\\n';\n    std::cout << j_int << '\\n';\n    std::cout << j_long << '\\n';\n    std::cout << j_int_least32_t << '\\n';\n    std::cout << j_uint8_t << '\\n';\n    std::cout << j_ok << '\\n';\n    std::cout << j_nan << '\\n';\n    std::cout << j_infinity << '\\n';\n    std::cout << j_float << '\\n';\n    std::cout << j_float_nan << '\\n';\n    std::cout << j_double << \"\\n\\n\";\n\n    // =============\n    // boolean types\n    // =============\n\n    // create boolean values\n    json j_truth = true;\n    json j_falsity = false;\n\n    // serialize the JSON booleans\n    std::cout << j_truth << '\\n';\n    std::cout << j_falsity << '\\n';\n}\n

      Output:

      {\"one\":1,\"two\":2}\n{\"one\":1,\"three\":3,\"two\":2}\n{\"one\":1.2,\"three\":3.4,\"two\":2.3}\n{\"one\":true,\"three\":false,\"two\":true}\n{\"one\":true,\"three\":false,\"two\":true}\n\n[\"one\",\"two\",3,4.5,false]\n[1,2,3,4]\n[10,9,8,7]\n[1.2,2.3,3.4,5.6]\n[true,true,false,true]\n[12345678909876,23456789098765,34567890987654,45678909876543]\n[1,2,3,4]\n[\"four\",\"one\",\"three\",\"two\"]\n[\"four\",\"three\",\"two\",\"one\"]\n[\"four\",\"one\",\"one\",\"two\"]\n[\"four\",\"two\",\"one\",\"one\"]\n\n\"The quick brown fox jumps over the lazy dog.\"\n\"The quick brown fox jumps over the lazy dog.\"\n\"The quick brown fox jumps over the lazy dog.\"\n\n-42\n17\n17\n42\n-23\n1024\n-17\n8\n3.141592653589793\nnull\nnull\n42.22999954223633\nnull\n23.42\n\ntrue\nfalse\n

      Note the output is platform-dependent.

      Example: (5) create a container (array or object) from an initializer list

      The example below shows how JSON values are created from initializer lists.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_empty_init_list = json({});\n    json j_object = { {\"one\", 1}, {\"two\", 2} };\n    json j_array = {1, 2, 3, 4};\n    json j_nested_object = { {\"one\", {1}}, {\"two\", {1, 2}} };\n    json j_nested_array = { {{1}, \"one\"}, {{1, 2}, \"two\"} };\n\n    // serialize the JSON value\n    std::cout << j_empty_init_list << '\\n';\n    std::cout << j_object << '\\n';\n    std::cout << j_array << '\\n';\n    std::cout << j_nested_object << '\\n';\n    std::cout << j_nested_array << '\\n';\n}\n

      Output:

      {}\n{\"one\":1,\"two\":2}\n[1,2,3,4]\n{\"one\":[1],\"two\":[1,2]}\n[[[1],\"one\"],[[1,2],\"two\"]]\n
      Example: (6) construct an array with count copies of given value

      The following code shows examples for creating arrays with several copies of a given value.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create an array by creating copies of a JSON value\n    json value = \"Hello\";\n    json array_0 = json(0, value);\n    json array_1 = json(1, value);\n    json array_5 = json(5, value);\n\n    // serialize the JSON arrays\n    std::cout << array_0 << '\\n';\n    std::cout << array_1 << '\\n';\n    std::cout << array_5 << '\\n';\n}\n

      Output:

      []\n[\"Hello\"]\n[\"Hello\",\"Hello\",\"Hello\",\"Hello\",\"Hello\"]\n
      Example: (7) construct a JSON container given an iterator range

      The example below shows several ways to create JSON values by specifying a subrange with iterators.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_array = {\"alpha\", \"bravo\", \"charly\", \"delta\", \"easy\"};\n    json j_number = 42;\n    json j_object = {{\"one\", \"eins\"}, {\"two\", \"zwei\"}};\n\n    // create copies using iterators\n    json j_array_range(j_array.begin() + 1, j_array.end() - 2);\n    json j_number_range(j_number.begin(), j_number.end());\n    json j_object_range(j_object.begin(), j_object.find(\"two\"));\n\n    // serialize the values\n    std::cout << j_array_range << '\\n';\n    std::cout << j_number_range << '\\n';\n    std::cout << j_object_range << '\\n';\n\n    // example for an exception\n    try\n    {\n        json j_invalid(j_number.begin() + 1, j_number.end());\n    }\n    catch (const json::invalid_iterator& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n}\n

      Output:

      [\"bravo\",\"charly\"]\n42\n{\"one\":\"eins\"}\n[json.exception.invalid_iterator.204] iterators out of range\n
      Example: (8) copy constructor

      The following code shows an example for the copy constructor.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON array\n    json j1 = {\"one\", \"two\", 3, 4.5, false};\n\n    // create a copy\n    json j2(j1);\n\n    // serialize the JSON array\n    std::cout << j1 << \" = \" << j2 << '\\n';\n    std::cout << std::boolalpha << (j1 == j2) << '\\n';\n}\n

      Output:

      [\"one\",\"two\",3,4.5,false] = [\"one\",\"two\",3,4.5,false]\ntrue\n
      Example: (9) move constructor

      The code below shows the move constructor explicitly called via std::move.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON value\n    json a = 23;\n\n    // move contents of a to b\n    json b(std::move(a));\n\n    // serialize the JSON arrays\n    std::cout << a << '\\n';\n    std::cout << b << '\\n';\n}\n

      Output:

      null\n23\n
      "},{"location":"api/basic_json/basic_json/#version-history","title":"Version history","text":"
      1. Since version 1.0.0.
      2. Since version 1.0.0.
      3. Since version 2.1.0.
      4. Since version 3.2.0.
      5. Since version 1.0.0.
      6. Since version 1.0.0.
      7. Since version 1.0.0.
      8. Since version 1.0.0.
      9. Since version 1.0.0.
      "},{"location":"api/basic_json/begin/","title":"nlohmann::basic_json::begin","text":"
      iterator begin() noexcept;\nconst_iterator begin() const noexcept;\n

      Returns an iterator to the first element.

      "},{"location":"api/basic_json/begin/#return-value","title":"Return value","text":"

      iterator to the first element

      "},{"location":"api/basic_json/begin/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/begin/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/begin/#examples","title":"Examples","text":"Example

      The following code shows an example for begin().

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create an array value\n    json array = {1, 2, 3, 4, 5};\n\n    // get an iterator to the first element\n    json::iterator it = array.begin();\n\n    // serialize the element that the iterator points to\n    std::cout << *it << '\\n';\n}\n

      Output:

      1\n
      "},{"location":"api/basic_json/begin/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/binary/","title":"nlohmann::basic_json::binary","text":"
      // (1)\nstatic basic_json binary(const typename binary_t::container_type& init);\nstatic basic_json binary(typename binary_t::container_type&& init);\n\n// (2)\nstatic basic_json binary(const typename binary_t::container_type& init,\n                         std::uint8_t subtype);\nstatic basic_json binary(typename binary_t::container_type&& init,\n                         std::uint8_t subtype);\n
      1. Creates a JSON binary array value from a given binary container.
      2. Creates a JSON binary array value from a given binary container with subtype.

      Binary values are part of various binary formats, such as CBOR, MessagePack, and BSON. This constructor is used to create a value for serialization to those formats.

      "},{"location":"api/basic_json/binary/#parameters","title":"Parameters","text":"init (in) container containing bytes to use as binary type subtype (in) subtype to use in CBOR, MessagePack, and BSON"},{"location":"api/basic_json/binary/#return-value","title":"Return value","text":"

      JSON binary array value

      "},{"location":"api/basic_json/binary/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

      "},{"location":"api/basic_json/binary/#complexity","title":"Complexity","text":"

      Linear in the size of init; constant for typename binary_t::container_type&& init versions.

      "},{"location":"api/basic_json/binary/#notes","title":"Notes","text":"

      Note, this function exists because of the difficulty in correctly specifying the correct template overload in the standard value ctor, as both JSON arrays and JSON binary arrays are backed with some form of a std::vector. Because JSON binary arrays are a non-standard extension it was decided that it would be best to prevent automatic initialization of a binary array type, for backwards compatibility and so it does not happen on accident.

      "},{"location":"api/basic_json/binary/#examples","title":"Examples","text":"Example

      The following code shows how to create a binary value.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a binary vector\n    std::vector<std::uint8_t> vec = {0xCA, 0xFE, 0xBA, 0xBE};\n\n    // create a binary JSON value with subtype 42\n    json j = json::binary(vec, 42);\n\n    // output type and subtype\n    std::cout << \"type: \" << j.type_name() << \", subtype: \" << j.get_binary().subtype() << std::endl;\n}\n

      Output:

      type: binary, subtype: 42\n
      "},{"location":"api/basic_json/binary/#version-history","title":"Version history","text":"
      • Added in version 3.8.0.
      "},{"location":"api/basic_json/binary_t/","title":"nlohmann::basic_json::binary_t","text":"
      using binary_t = byte_container_with_subtype<BinaryType>;\n

      This type is a type designed to carry binary data that appears in various serialized formats, such as CBOR's Major Type 2, MessagePack's bin, and BSON's generic binary subtype. This type is NOT a part of standard JSON and exists solely for compatibility with these binary types. As such, it is simply defined as an ordered sequence of zero or more byte values.

      Additionally, as an implementation detail, the subtype of the binary data is carried around as a std::uint64_t, which is compatible with both of the binary data formats that use binary subtyping, (though the specific numbering is incompatible with each other, and it is up to the user to translate between them). The subtype is added to BinaryType via the helper type byte_container_with_subtype.

      CBOR's RFC 7049 describes this type as:

      Major type 2: a byte string. The string's length in bytes is represented following the rules for positive integers (major type 0).

      MessagePack's documentation on the bin type family describes this type as:

      Bin format family stores a byte array in 2, 3, or 5 bytes of extra bytes in addition to the size of the byte array.

      BSON's specifications describe several binary types; however, this type is intended to represent the generic binary type which has the description:

      Generic binary subtype - This is the most commonly used binary subtype and should be the 'default' for drivers and tools.

      None of these impose any limitations on the internal representation other than the basic unit of storage be some type of array whose parts are decomposable into bytes.

      The default representation of this binary format is a std::vector<std::uint8_t>, which is a very common way to represent a byte array in modern C++.

      "},{"location":"api/basic_json/binary_t/#template-parameters","title":"Template parameters","text":"BinaryType container type to store arrays"},{"location":"api/basic_json/binary_t/#notes","title":"Notes","text":""},{"location":"api/basic_json/binary_t/#default-type","title":"Default type","text":"

      The default values for BinaryType is std::vector<std::uint8_t>.

      "},{"location":"api/basic_json/binary_t/#storage","title":"Storage","text":"

      Binary Arrays are stored as pointers in a basic_json type. That is, for any access to array values, a pointer of the type binary_t* must be dereferenced.

      "},{"location":"api/basic_json/binary_t/#notes-on-subtypes","title":"Notes on subtypes","text":"
      • CBOR

        • Binary values are represented as byte strings. Subtypes are written as tags.
      • MessagePack

        • If a subtype is given and the binary array contains exactly 1, 2, 4, 8, or 16 elements, the fixext family (fixext1, fixext2, fixext4, fixext8) is used. For other sizes, the ext family (ext8, ext16, ext32) is used. The subtype is then added as signed 8-bit integer.
        • If no subtype is given, the bin family (bin8, bin16, bin32) is used.
      • BSON

        • If a subtype is given, it is used and added as unsigned 8-bit integer.
        • If no subtype is given, the generic binary subtype 0x00 is used.
      "},{"location":"api/basic_json/binary_t/#examples","title":"Examples","text":"Example

      The following code shows that binary_t is by default, a typedef to nlohmann::byte_container_with_subtype<std::vector<std::uint8_t>>.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout << std::boolalpha << std::is_same<nlohmann::byte_container_with_subtype<std::vector<std::uint8_t>>, json::binary_t>::value << std::endl;\n}\n

      Output:

      true\n
      "},{"location":"api/basic_json/binary_t/#see-also","title":"See also","text":"
      • byte_container_with_subtype
      "},{"location":"api/basic_json/binary_t/#version-history","title":"Version history","text":"
      • Added in version 3.8.0. Changed type of subtype to std::uint64_t in version 3.10.0.
      "},{"location":"api/basic_json/boolean_t/","title":"nlohmann::basic_json::boolean_t","text":"
      using boolean_t = BooleanType;\n

      The type used to store JSON booleans.

      RFC 8259 implicitly describes a boolean as a type which differentiates the two literals true and false.

      To store objects in C++, a type is defined by the template parameter BooleanType which chooses the type to use.

      "},{"location":"api/basic_json/boolean_t/#notes","title":"Notes","text":""},{"location":"api/basic_json/boolean_t/#default-type","title":"Default type","text":"

      With the default values for BooleanType (bool), the default value for boolean_t is bool.

      "},{"location":"api/basic_json/boolean_t/#storage","title":"Storage","text":"

      Boolean values are stored directly inside a basic_json type.

      "},{"location":"api/basic_json/boolean_t/#examples","title":"Examples","text":"Example

      The following code shows that boolean_t is by default, a typedef to bool.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout << std::boolalpha << std::is_same<bool, json::boolean_t>::value << std::endl;\n}\n

      Output:

      true\n
      "},{"location":"api/basic_json/boolean_t/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/cbegin/","title":"nlohmann::basic_json::cbegin","text":"
      const_iterator cbegin() const noexcept;\n

      Returns an iterator to the first element.

      "},{"location":"api/basic_json/cbegin/#return-value","title":"Return value","text":"

      iterator to the first element

      "},{"location":"api/basic_json/cbegin/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/cbegin/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/cbegin/#examples","title":"Examples","text":"Example

      The following code shows an example for cbegin().

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create an array value\n    const json array = {1, 2, 3, 4, 5};\n\n    // get an iterator to the first element\n    json::const_iterator it = array.cbegin();\n\n    // serialize the element that the iterator points to\n    std::cout << *it << '\\n';\n}\n

      Output:

      1\n
      "},{"location":"api/basic_json/cbegin/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/cbor_tag_handler_t/","title":"nlohmann::basic_json::cbor_tag_handler_t","text":"
      enum class cbor_tag_handler_t\n{\n    error,\n    ignore,\n    store\n};\n

      This enumeration is used in the from_cbor function to choose how to treat tags:

      error throw a parse_error exception in case of a tag ignore ignore tags store store tagged values as binary container with subtype (for bytes 0xd8..0xdb)"},{"location":"api/basic_json/cbor_tag_handler_t/#examples","title":"Examples","text":"Example

      The example below shows how the different values of the cbor_tag_handler_t influence the behavior of from_cbor when reading a tagged byte string.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // tagged byte string\n    std::vector<std::uint8_t> vec = {{0xd8, 0x42, 0x44, 0xcA, 0xfe, 0xba, 0xbe}};\n\n    // cbor_tag_handler_t::error throws\n    try\n    {\n        auto b_throw_on_tag = json::from_cbor(vec, true, true, json::cbor_tag_handler_t::error);\n    }\n    catch (const json::parse_error& e)\n    {\n        std::cout << e.what() << std::endl;\n    }\n\n    // cbor_tag_handler_t::ignore ignores the tag\n    auto b_ignore_tag = json::from_cbor(vec, true, true, json::cbor_tag_handler_t::ignore);\n    std::cout << b_ignore_tag << std::endl;\n\n    // cbor_tag_handler_t::store stores the tag as binary subtype\n    auto b_store_tag = json::from_cbor(vec, true, true, json::cbor_tag_handler_t::store);\n    std::cout << b_store_tag << std::endl;\n}\n

      Output:

      [json.exception.parse_error.112] parse error at byte 1: syntax error while parsing CBOR value: invalid byte: 0xD8\n{\"bytes\":[202,254,186,190],\"subtype\":null}\n{\"bytes\":[202,254,186,190],\"subtype\":66}\n
      "},{"location":"api/basic_json/cbor_tag_handler_t/#version-history","title":"Version history","text":"
      • Added in version 3.9.0. Added value store in 3.10.0.
      "},{"location":"api/basic_json/cend/","title":"nlohmann::basic_json::cend","text":"
      const_iterator cend() const noexcept;\n

      Returns an iterator to one past the last element.

      "},{"location":"api/basic_json/cend/#return-value","title":"Return value","text":"

      iterator one past the last element

      "},{"location":"api/basic_json/cend/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/cend/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/cend/#examples","title":"Examples","text":"Example

      The following code shows an example for cend().

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create an array value\n    json array = {1, 2, 3, 4, 5};\n\n    // get an iterator to one past the last element\n    json::const_iterator it = array.cend();\n\n    // decrement the iterator to point to the last element\n    --it;\n\n    // serialize the element that the iterator points to\n    std::cout << *it << '\\n';\n}\n

      Output:

      5\n
      "},{"location":"api/basic_json/cend/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/clear/","title":"nlohmann::basic_json::clear","text":"
      void clear() noexcept;\n

      Clears the content of a JSON value and resets it to the default value as if basic_json(value_t) would have been called with the current value type from type():

      Value type initial value null null boolean false string \"\" number 0 binary An empty byte vector object {} array []

      Has the same effect as calling

      *this = basic_json(type());\n
      "},{"location":"api/basic_json/clear/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this function never throws exceptions.

      "},{"location":"api/basic_json/clear/#complexity","title":"Complexity","text":"

      Linear in the size of the JSON value.

      "},{"location":"api/basic_json/clear/#notes","title":"Notes","text":"

      All iterators, pointers and references related to this container are invalidated.

      "},{"location":"api/basic_json/clear/#examples","title":"Examples","text":"Example

      The example below shows the effect of clear() to different JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n\n    // call clear()\n    j_null.clear();\n    j_boolean.clear();\n    j_number_integer.clear();\n    j_number_float.clear();\n    j_object.clear();\n    j_array.clear();\n    j_string.clear();\n\n    // serialize the cleared values()\n    std::cout << j_null << '\\n';\n    std::cout << j_boolean << '\\n';\n    std::cout << j_number_integer << '\\n';\n    std::cout << j_number_float << '\\n';\n    std::cout << j_object << '\\n';\n    std::cout << j_array << '\\n';\n    std::cout << j_string << '\\n';\n}\n

      Output:

      null\nfalse\n0\n0.0\n{}\n[]\n\"\"\n
      "},{"location":"api/basic_json/clear/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      • Added support for binary types in version 3.8.0.
      "},{"location":"api/basic_json/contains/","title":"nlohmann::basic_json::contains","text":"
      // (1)\nbool contains(const typename object_t::key_type& key) const;\n\n// (2)\ntemplate<typename KeyType>\nbool contains(KeyType&& key) const;\n\n// (3)\nbool contains(const json_pointer& ptr) const;\n
      1. Check whether an element exists in a JSON object with a key equivalent to key. If the element is not found or the JSON value is not an object, false is returned.
      2. See 1. This overload is only available if KeyType is comparable with typename object_t::key_type and typename object_comparator_t::is_transparent denotes a type.
      3. Check whether the given JSON pointer ptr can be resolved in the current JSON value.
      "},{"location":"api/basic_json/contains/#template-parameters","title":"Template parameters","text":"KeyType A type for an object key other than json_pointer that is comparable with string_t using object_comparator_t. This can also be a string view (C++17)."},{"location":"api/basic_json/contains/#parameters","title":"Parameters","text":"key (in) key value to check its existence. ptr (in) JSON pointer to check its existence."},{"location":"api/basic_json/contains/#return-value","title":"Return value","text":"
      1. true if an element with specified key exists. If no such element with such key is found or the JSON value is not an object, false is returned.
      2. See 1.
      3. true if the JSON pointer can be resolved to a stored value, false otherwise.
      "},{"location":"api/basic_json/contains/#exception-safety","title":"Exception safety","text":"

      Strong exception safety: if an exception occurs, the original value stays intact.

      "},{"location":"api/basic_json/contains/#exceptions","title":"Exceptions","text":"
      1. The function does not throw exceptions.
      2. The function does not throw exceptions.
      3. The function can throw the following exceptions:
        • Throws parse_error.106 if an array index begins with 0.
        • Throws parse_error.109 if an array index was not a number.
      "},{"location":"api/basic_json/contains/#complexity","title":"Complexity","text":"

      Logarithmic in the size of the JSON object.

      "},{"location":"api/basic_json/contains/#notes","title":"Notes","text":"
      • This method always returns false when executed on a JSON type that is not an object.
      • This method can be executed on any JSON value type.

      Postconditions

      If j.contains(x) returns true for a key or JSON pointer x, then it is safe to call j[x].

      "},{"location":"api/basic_json/contains/#examples","title":"Examples","text":"Example: (1) check with key

      The example shows how contains() is used.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create some JSON values\n    json j_object = R\"( {\"key\": \"value\"} )\"_json;\n    json j_array = R\"( [1, 2, 3] )\"_json;\n\n    // call contains\n    std::cout << std::boolalpha <<\n              \"j_object contains 'key': \" << j_object.contains(\"key\") << '\\n' <<\n              \"j_object contains 'another': \" << j_object.contains(\"another\") << '\\n' <<\n              \"j_array contains 'key': \" << j_array.contains(\"key\") << std::endl;\n}\n

      Output:

      j_object contains 'key': true\nj_object contains 'another': false\nj_array contains 'key': false\n
      Example: (2) check with key using string_view

      The example shows how contains() is used.

      #include <iostream>\n#include <string_view>\n#include <nlohmann/json.hpp>\n\nusing namespace std::string_view_literals;\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create some JSON values\n    json j_object = R\"( {\"key\": \"value\"} )\"_json;\n    json j_array = R\"( [1, 2, 3] )\"_json;\n\n    // call contains\n    std::cout << std::boolalpha <<\n              \"j_object contains 'key': \" << j_object.contains(\"key\"sv) << '\\n' <<\n              \"j_object contains 'another': \" << j_object.contains(\"another\"sv) << '\\n' <<\n              \"j_array contains 'key': \" << j_array.contains(\"key\"sv) << std::endl;\n}\n

      Output:

      j_object contains 'key': true\nj_object contains 'another': false\nj_array contains 'key': false\n
      Example: (3) check with JSON pointer

      The example shows how contains() is used.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON value\n    json j =\n    {\n        {\"number\", 1}, {\"string\", \"foo\"}, {\"array\", {1, 2}}\n    };\n\n    std::cout << std::boolalpha\n              << j.contains(\"/number\"_json_pointer) << '\\n'\n              << j.contains(\"/string\"_json_pointer) << '\\n'\n              << j.contains(\"/array\"_json_pointer) << '\\n'\n              << j.contains(\"/array/1\"_json_pointer) << '\\n'\n              << j.contains(\"/array/-\"_json_pointer) << '\\n'\n              << j.contains(\"/array/4\"_json_pointer) << '\\n'\n              << j.contains(\"/baz\"_json_pointer) << std::endl;\n\n    try\n    {\n        // try to use an array index with leading '0'\n        j.contains(\"/array/01\"_json_pointer);\n    }\n    catch (const json::parse_error& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n\n    try\n    {\n        // try to use an array index that is not a number\n        j.contains(\"/array/one\"_json_pointer);\n    }\n    catch (const json::parse_error& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n}\n

      Output:

      true\ntrue\ntrue\ntrue\nfalse\nfalse\nfalse\n
      "},{"location":"api/basic_json/contains/#version-history","title":"Version history","text":"
      1. Added in version 3.11.0.
      2. Added in version 3.6.0. Extended template KeyType to support comparable types in version 3.11.0.
      3. Added in version 3.7.0.
      "},{"location":"api/basic_json/count/","title":"nlohmann::basic_json::count","text":"
      // (1)\nsize_type count(const typename object_t::key_type& key) const;\n\n// (2)\ntemplate<typename KeyType>\nsize_type count(KeyType&& key) const;\n
      1. Returns the number of elements with key key. If ObjectType is the default std::map type, the return value will always be 0 (key was not found) or 1 (key was found).
      2. See 1. This overload is only available if KeyType is comparable with typename object_t::key_type and typename object_comparator_t::is_transparent denotes a type.
      "},{"location":"api/basic_json/count/#template-parameters","title":"Template parameters","text":"KeyType A type for an object key other than json_pointer that is comparable with string_t using object_comparator_t. This can also be a string view (C++17)."},{"location":"api/basic_json/count/#parameters","title":"Parameters","text":"key (in) key value of the element to count."},{"location":"api/basic_json/count/#return-value","title":"Return value","text":"

      Number of elements with key key. If the JSON value is not an object, the return value will be 0.

      "},{"location":"api/basic_json/count/#exception-safety","title":"Exception safety","text":"

      Strong exception safety: if an exception occurs, the original value stays intact.

      "},{"location":"api/basic_json/count/#complexity","title":"Complexity","text":"

      Logarithmic in the size of the JSON object.

      "},{"location":"api/basic_json/count/#notes","title":"Notes","text":"

      This method always returns 0 when executed on a JSON type that is not an object.

      "},{"location":"api/basic_json/count/#examples","title":"Examples","text":"Example: (1) count number of elements

      The example shows how count() is used.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n\n    // call count()\n    auto count_two = j_object.count(\"two\");\n    auto count_three = j_object.count(\"three\");\n\n    // print values\n    std::cout << \"number of elements with key \\\"two\\\": \" << count_two << '\\n';\n    std::cout << \"number of elements with key \\\"three\\\": \" << count_three << '\\n';\n}\n

      Output:

      number of elements with key \"two\": 1\nnumber of elements with key \"three\": 0\n
      Example: (2) count number of elements using string_view

      The example shows how count() is used.

      #include <iostream>\n#include <string_view>\n#include <nlohmann/json.hpp>\n\nusing namespace std::string_view_literals;\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n\n    // call count()\n    auto count_two = j_object.count(\"two\"sv);\n    auto count_three = j_object.count(\"three\"sv);\n\n    // print values\n    std::cout << \"number of elements with key \\\"two\\\": \" << count_two << '\\n';\n    std::cout << \"number of elements with key \\\"three\\\": \" << count_three << '\\n';\n}\n

      Output:

      number of elements with key \"two\": 1\nnumber of elements with key \"three\": 0\n
      "},{"location":"api/basic_json/count/#version-history","title":"Version history","text":"
      1. Added in version 3.11.0.
      2. Added in version 1.0.0. Changed parameter key type to KeyType&& in version 3.11.0.
      "},{"location":"api/basic_json/crbegin/","title":"nlohmann::basic_json::crbegin","text":"
      const_reverse_iterator crbegin() const noexcept;\n

      Returns an iterator to the reverse-beginning; that is, the last element.

      "},{"location":"api/basic_json/crbegin/#return-value","title":"Return value","text":"

      reverse iterator to the first element

      "},{"location":"api/basic_json/crbegin/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/crbegin/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/crbegin/#examples","title":"Examples","text":"Example

      The following code shows an example for crbegin().

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create an array value\n    json array = {1, 2, 3, 4, 5};\n\n    // get an iterator to the reverse-beginning\n    json::const_reverse_iterator it = array.crbegin();\n\n    // serialize the element that the iterator points to\n    std::cout << *it << '\\n';\n}\n

      Output:

      5\n
      "},{"location":"api/basic_json/crbegin/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/crend/","title":"nlohmann::basic_json::crend","text":"
      const_reverse_iterator crend() const noexcept;\n

      Returns an iterator to the reverse-end; that is, one before the first element. This element acts as a placeholder, attempting to access it results in undefined behavior.

      "},{"location":"api/basic_json/crend/#return-value","title":"Return value","text":"

      reverse iterator to the element following the last element

      "},{"location":"api/basic_json/crend/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/crend/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/crend/#examples","title":"Examples","text":"Example

      The following code shows an example for eend().

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create an array value\n    json array = {1, 2, 3, 4, 5};\n\n    // get an iterator to the reverse-end\n    json::const_reverse_iterator it = array.crend();\n\n    // increment the iterator to point to the first element\n    --it;\n\n    // serialize the element that the iterator points to\n    std::cout << *it << '\\n';\n}\n

      Output:

      1\n
      "},{"location":"api/basic_json/crend/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/default_object_comparator_t/","title":"nlohmann::basic_json::default_object_comparator_t","text":"
      using default_object_comparator_t = std::less<StringType>;  // until C++14\n\nusing default_object_comparator_t = std::less<>;            // since C++14\n

      The default comparator used by object_t.

      Since C++14 a transparent comparator is used which prevents unnecessary string construction when looking up a key in an object.

      The actual comparator used depends on object_t and can be obtained via object_comparator_t.

      "},{"location":"api/basic_json/default_object_comparator_t/#examples","title":"Examples","text":"Example

      The example below demonstrates the default comparator.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout << std::boolalpha\n              << \"one < two : \" << json::default_object_comparator_t{}(\"one\", \"two\") << \"\\n\"\n              << \"three < four : \" << json::default_object_comparator_t{}(\"three\", \"four\") << std::endl;\n}\n

      Output:

      one < two : true\nthree < four : false\n
      "},{"location":"api/basic_json/default_object_comparator_t/#version-history","title":"Version history","text":"
      • Added in version 3.11.0.
      "},{"location":"api/basic_json/diff/","title":"nlohmann::basic_json::diff","text":"
      static basic_json diff(const basic_json& source,\n                       const basic_json& target);\n

      Creates a JSON Patch so that value source can be changed into the value target by calling patch function.

      For two JSON values source and target, the following code yields always true:

      source.patch(diff(source, target)) == target;\n

      "},{"location":"api/basic_json/diff/#parameters","title":"Parameters","text":"source (in) JSON value to compare from target (in) JSON value to compare against"},{"location":"api/basic_json/diff/#return-value","title":"Return value","text":"

      a JSON patch to convert the source to target

      "},{"location":"api/basic_json/diff/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

      "},{"location":"api/basic_json/diff/#complexity","title":"Complexity","text":"

      Linear in the lengths of source and target.

      "},{"location":"api/basic_json/diff/#notes","title":"Notes","text":"

      Currently, only remove, add, and replace operations are generated.

      "},{"location":"api/basic_json/diff/#examples","title":"Examples","text":"Example

      The following code shows how a JSON patch is created as a diff for two JSON values.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // the source document\n    json source = R\"(\n        {\n            \"baz\": \"qux\",\n            \"foo\": \"bar\"\n        }\n    )\"_json;\n\n    // the target document\n    json target = R\"(\n        {\n            \"baz\": \"boo\",\n            \"hello\": [\n                \"world\"\n            ]\n        }\n    )\"_json;\n\n    // create the patch\n    json patch = json::diff(source, target);\n\n    // roundtrip\n    json patched_source = source.patch(patch);\n\n    // output patch and roundtrip result\n    std::cout << std::setw(4) << patch << \"\\n\\n\"\n              << std::setw(4) << patched_source << std::endl;\n}\n

      Output:

      [\n    {\n        \"op\": \"replace\",\n        \"path\": \"/baz\",\n        \"value\": \"boo\"\n    },\n    {\n        \"op\": \"remove\",\n        \"path\": \"/foo\"\n    },\n    {\n        \"op\": \"add\",\n        \"path\": \"/hello\",\n        \"value\": [\n            \"world\"\n        ]\n    }\n]\n\n{\n    \"baz\": \"boo\",\n    \"hello\": [\n        \"world\"\n    ]\n}\n
      "},{"location":"api/basic_json/diff/#see-also","title":"See also","text":"
      • RFC 6902 (JSON Patch)
      "},{"location":"api/basic_json/diff/#version-history","title":"Version history","text":"
      • Added in version 2.0.0.
      "},{"location":"api/basic_json/dump/","title":"nlohmann::basic_json::dump","text":"
      string_t dump(const int indent = -1,\n              const char indent_char = ' ',\n              const bool ensure_ascii = false,\n              const error_handler_t error_handler = error_handler_t::strict) const;\n

      Serialization function for JSON values. The function tries to mimic Python's json.dumps() function, and currently supports its indent and ensure_ascii parameters.

      "},{"location":"api/basic_json/dump/#parameters","title":"Parameters","text":"indent (in) If indent is nonnegative, then array elements and object members will be pretty-printed with that indent level. An indent level of 0 will only insert newlines. -1 (the default) selects the most compact representation. indent_char (in) The character to use for indentation if indent is greater than 0. The default is (space). ensure_ascii (in) If ensure_ascii is true, all non-ASCII characters in the output are escaped with \\uXXXX sequences, and the result consists of ASCII characters only. error_handler (in) how to react on decoding errors; there are three possible values (see error_handler_t: strict (throws and exception in case a decoding error occurs; default), replace (replace invalid UTF-8 sequences with U+FFFD), and ignore (ignore invalid UTF-8 sequences during serialization; all bytes are copied to the output unchanged))."},{"location":"api/basic_json/dump/#return-value","title":"Return value","text":"

      string containing the serialization of the JSON value

      "},{"location":"api/basic_json/dump/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes to any JSON value.

      "},{"location":"api/basic_json/dump/#exceptions","title":"Exceptions","text":"

      Throws type_error.316 if a string stored inside the JSON value is not UTF-8 encoded and error_handler is set to strict

      "},{"location":"api/basic_json/dump/#complexity","title":"Complexity","text":"

      Linear.

      "},{"location":"api/basic_json/dump/#notes","title":"Notes","text":"

      Binary values are serialized as object containing two keys:

      • \"bytes\": an array of bytes as integers
      • \"subtype\": the subtype as integer or null if the binary has no subtype
      "},{"location":"api/basic_json/dump/#examples","title":"Examples","text":"Example

      The following example shows the effect of different indent, indent_char, and ensure_ascii parameters to the result of the serialization.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hell\u00f6 \ud83d\ude00!\";\n\n    // call dump()\n    std::cout << \"objects:\" << '\\n'\n              << j_object.dump() << \"\\n\\n\"\n              << j_object.dump(-1) << \"\\n\\n\"\n              << j_object.dump(0) << \"\\n\\n\"\n              << j_object.dump(4) << \"\\n\\n\"\n              << j_object.dump(1, '\\t') << \"\\n\\n\";\n\n    std::cout << \"arrays:\" << '\\n'\n              << j_array.dump() << \"\\n\\n\"\n              << j_array.dump(-1) << \"\\n\\n\"\n              << j_array.dump(0) << \"\\n\\n\"\n              << j_array.dump(4) << \"\\n\\n\"\n              << j_array.dump(1, '\\t') << \"\\n\\n\";\n\n    std::cout << \"strings:\" << '\\n'\n              << j_string.dump() << '\\n'\n              << j_string.dump(-1, ' ', true) << '\\n';\n\n    // create JSON value with invalid UTF-8 byte sequence\n    json j_invalid = \"\u00e4\\xA9\u00fc\";\n    try\n    {\n        std::cout << j_invalid.dump() << std::endl;\n    }\n    catch (const json::type_error& e)\n    {\n        std::cout << e.what() << std::endl;\n    }\n\n    std::cout << \"string with replaced invalid characters: \"\n              << j_invalid.dump(-1, ' ', false, json::error_handler_t::replace)\n              << \"\\nstring with ignored invalid characters: \"\n              << j_invalid.dump(-1, ' ', false, json::error_handler_t::ignore)\n              << '\\n';\n}\n

      Output:

      objects:\n{\"one\":1,\"two\":2}\n\n{\"one\":1,\"two\":2}\n\n{\n\"one\": 1,\n\"two\": 2\n}\n\n{\n    \"one\": 1,\n    \"two\": 2\n}\n\n{\n    \"one\": 1,\n    \"two\": 2\n}\n\narrays:\n[1,2,4,8,16]\n\n[1,2,4,8,16]\n\n[\n1,\n2,\n4,\n8,\n16\n]\n\n[\n    1,\n    2,\n    4,\n    8,\n    16\n]\n\n[\n    1,\n    2,\n    4,\n    8,\n    16\n]\n\nstrings:\n\"Hell\u00f6 \ud83d\ude00!\"\n\"Hell\\u00f6 \\ud83d\\ude00!\"\n[json.exception.type_error.316] invalid UTF-8 byte at index 2: 0xA9\nstring with replaced invalid characters: \"\u00e4\ufffd\u00fc\"\nstring with ignored invalid characters: \"\u00e4\u00fc\"\n
      "},{"location":"api/basic_json/dump/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      • Indentation character indent_char, option ensure_ascii and exceptions added in version 3.0.0.
      • Error handlers added in version 3.4.0.
      • Serialization of binary values added in version 3.8.0.
      "},{"location":"api/basic_json/emplace/","title":"nlohmann::basic_json::emplace","text":"
      template<class... Args>\nstd::pair<iterator, bool> emplace(Args&& ... args);\n

      Inserts a new element into a JSON object constructed in-place with the given args if there is no element with the key in the container. If the function is called on a JSON null value, an empty object is created before appending the value created from args.

      "},{"location":"api/basic_json/emplace/#template-parameters","title":"Template parameters","text":"Args compatible types to create a basic_json object"},{"location":"api/basic_json/emplace/#iterator-invalidation","title":"Iterator invalidation","text":"

      For ordered_json, adding a value to an object can yield a reallocation, in which case all iterators (including the end() iterator) and all references to the elements are invalidated.

      "},{"location":"api/basic_json/emplace/#parameters","title":"Parameters","text":"args (in) arguments to forward to a constructor of basic_json"},{"location":"api/basic_json/emplace/#return-value","title":"Return value","text":"

      a pair consisting of an iterator to the inserted element, or the already-existing element if no insertion happened, and a bool denoting whether the insertion took place.

      "},{"location":"api/basic_json/emplace/#exceptions","title":"Exceptions","text":"

      Throws type_error.311 when called on a type other than JSON object or null; example: \"cannot use emplace() with number\"

      "},{"location":"api/basic_json/emplace/#complexity","title":"Complexity","text":"

      Logarithmic in the size of the container, O(log(size())).

      "},{"location":"api/basic_json/emplace/#examples","title":"Examples","text":"Example

      The example shows how emplace() can be used to add elements to a JSON object. Note how the null value was silently converted to a JSON object. Further note how no value is added if there was already one value stored with the same key.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json object = {{\"one\", 1}, {\"two\", 2}};\n    json null;\n\n    // print values\n    std::cout << object << '\\n';\n    std::cout << null << '\\n';\n\n    // add values\n    auto res1 = object.emplace(\"three\", 3);\n    null.emplace(\"A\", \"a\");\n    null.emplace(\"B\", \"b\");\n\n    // the following call will not add an object, because there is already\n    // a value stored at key \"B\"\n    auto res2 = null.emplace(\"B\", \"c\");\n\n    // print values\n    std::cout << object << '\\n';\n    std::cout << *res1.first << \" \" << std::boolalpha << res1.second << '\\n';\n\n    std::cout << null << '\\n';\n    std::cout << *res2.first << \" \" << std::boolalpha << res2.second << '\\n';\n}\n

      Output:

      {\"one\":1,\"two\":2}\nnull\n{\"one\":1,\"three\":3,\"two\":2}\n3 true\n{\"A\":\"a\",\"B\":\"b\"}\n\"b\" false\n
      "},{"location":"api/basic_json/emplace/#version-history","title":"Version history","text":"
      • Since version 2.0.8.
      "},{"location":"api/basic_json/emplace_back/","title":"nlohmann::basic_json::emplace_back","text":"
      template<class... Args>\nreference emplace_back(Args&& ... args);\n

      Creates a JSON value from the passed parameters args to the end of the JSON value. If the function is called on a JSON null value, an empty array is created before appending the value created from args.

      "},{"location":"api/basic_json/emplace_back/#template-parameters","title":"Template parameters","text":"Args compatible types to create a basic_json object"},{"location":"api/basic_json/emplace_back/#iterator-invalidation","title":"Iterator invalidation","text":"

      By adding an element to the end of the array, a reallocation can happen, in which case all iterators (including the end() iterator) and all references to the elements are invalidated. Otherwise, only the end() iterator is invalidated.

      "},{"location":"api/basic_json/emplace_back/#parameters","title":"Parameters","text":"args (in) arguments to forward to a constructor of basic_json"},{"location":"api/basic_json/emplace_back/#return-value","title":"Return value","text":"

      reference to the inserted element

      "},{"location":"api/basic_json/emplace_back/#exceptions","title":"Exceptions","text":"

      Throws type_error.311 when called on a type other than JSON array or null; example: \"cannot use emplace_back() with number\"

      "},{"location":"api/basic_json/emplace_back/#complexity","title":"Complexity","text":"

      Amortized constant.

      "},{"location":"api/basic_json/emplace_back/#examples","title":"Examples","text":"Example

      The example shows how emplace_back() can be used to add elements to a JSON array. Note how the null value was silently converted to a JSON array.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json array = {1, 2, 3, 4, 5};\n    json null;\n\n    // print values\n    std::cout << array << '\\n';\n    std::cout << null << '\\n';\n\n    // add values\n    array.emplace_back(6);\n    null.emplace_back(\"first\");\n    null.emplace_back(3, \"second\");\n\n    // print values\n    std::cout << array << '\\n';\n    std::cout << null << '\\n';\n}\n

      Output:

      [1,2,3,4,5]\nnull\n[1,2,3,4,5,6]\n[\"first\",[\"second\",\"second\",\"second\"]]\n
      "},{"location":"api/basic_json/emplace_back/#see-also","title":"See also","text":"
      • operator+= add a value to an array/object
      • push_back add a value to an array/object
      "},{"location":"api/basic_json/emplace_back/#version-history","title":"Version history","text":"
      • Since version 2.0.8.
      • Returns reference since 3.7.0.
      "},{"location":"api/basic_json/empty/","title":"nlohmann::basic_json::empty","text":"
      bool empty() const noexcept;\n

      Checks if a JSON value has no elements (i.e. whether its size() is 0).

      "},{"location":"api/basic_json/empty/#return-value","title":"Return value","text":"

      The return value depends on the different types and is defined as follows:

      Value type return value null true boolean false string false number false binary false object result of function object_t::empty() array result of function array_t::empty()"},{"location":"api/basic_json/empty/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this function never throws exceptions.

      "},{"location":"api/basic_json/empty/#complexity","title":"Complexity","text":"

      Constant, as long as array_t and object_t satisfy the Container concept; that is, their empty() functions have constant complexity.

      "},{"location":"api/basic_json/empty/#possible-implementation","title":"Possible implementation","text":"
      bool empty() const noexcept\n{\n    return size() == 0;\n}\n
      "},{"location":"api/basic_json/empty/#notes","title":"Notes","text":"

      This function does not return whether a string stored as JSON value is empty -- it returns whether the JSON container itself is empty which is false in the case of a string.

      "},{"location":"api/basic_json/empty/#examples","title":"Examples","text":"Example

      The following code uses empty() to check if a JSON object contains any elements.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_object_empty(json::value_t::object);\n    json j_array = {1, 2, 4, 8, 16};\n    json j_array_empty(json::value_t::array);\n    json j_string = \"Hello, world\";\n\n    // call empty()\n    std::cout << std::boolalpha;\n    std::cout << j_null.empty() << '\\n';\n    std::cout << j_boolean.empty() << '\\n';\n    std::cout << j_number_integer.empty() << '\\n';\n    std::cout << j_number_float.empty() << '\\n';\n    std::cout << j_object.empty() << '\\n';\n    std::cout << j_object_empty.empty() << '\\n';\n    std::cout << j_array.empty() << '\\n';\n    std::cout << j_array_empty.empty() << '\\n';\n    std::cout << j_string.empty() << '\\n';\n}\n

      Output:

      true\nfalse\nfalse\nfalse\nfalse\ntrue\nfalse\ntrue\nfalse\n
      "},{"location":"api/basic_json/empty/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      • Extended to return false for binary types in version 3.8.0.
      "},{"location":"api/basic_json/end/","title":"nlohmann::basic_json::end","text":"
      iterator end() noexcept;\nconst_iterator end() const noexcept;\n

      Returns an iterator to one past the last element.

      "},{"location":"api/basic_json/end/#return-value","title":"Return value","text":"

      iterator one past the last element

      "},{"location":"api/basic_json/end/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/end/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/end/#examples","title":"Examples","text":"Example

      The following code shows an example for end().

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create an array value\n    json array = {1, 2, 3, 4, 5};\n\n    // get an iterator to one past the last element\n    json::iterator it = array.end();\n\n    // decrement the iterator to point to the last element\n    --it;\n\n    // serialize the element that the iterator points to\n    std::cout << *it << '\\n';\n}\n

      Output:

      5\n
      "},{"location":"api/basic_json/end/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/erase/","title":"nlohmann::basic_json::erase","text":"
      // (1)\niterator erase(iterator pos);\nconst_iterator erase(const_iterator pos);\n\n// (2)\niterator erase(iterator first, iterator last);\nconst_iterator erase(const_iterator first, const_iterator last);\n\n// (3)\nsize_type erase(const typename object_t::key_type& key);\n\n// (4)\ntemplate<typename KeyType>\nsize_type erase(KeyType&& key);\n\n// (5)\nvoid erase(const size_type idx);\n
      1. Removes an element from a JSON value specified by iterator pos. The iterator pos must be valid and dereferenceable. Thus, the end() iterator (which is valid, but is not dereferenceable) cannot be used as a value for pos.

        If called on a primitive type other than null, the resulting JSON value will be null.

      2. Remove an element range specified by [first; last) from a JSON value. The iterator first does not need to be dereferenceable if first == last: erasing an empty range is a no-op.

        If called on a primitive type other than null, the resulting JSON value will be null.

      3. Removes an element from a JSON object by key.

      4. See 3. This overload is only available if KeyType is comparable with typename object_t::key_type and typename object_comparator_t::is_transparent denotes a type.

      5. Removes an element from a JSON array by index.

      "},{"location":"api/basic_json/erase/#template-parameters","title":"Template parameters","text":"KeyType A type for an object key other than json_pointer that is comparable with string_t using object_comparator_t. This can also be a string view (C++17)."},{"location":"api/basic_json/erase/#parameters","title":"Parameters","text":"pos (in) iterator to the element to remove first (in) iterator to the beginning of the range to remove last (in) iterator past the end of the range to remove key (in) object key of the elements to remove idx (in) array index of the element to remove"},{"location":"api/basic_json/erase/#return-value","title":"Return value","text":"
      1. Iterator following the last removed element. If the iterator pos refers to the last element, the end() iterator is returned.
      2. Iterator following the last removed element. If the iterator last refers to the last element, the end() iterator is returned.
      3. Number of elements removed. If ObjectType is the default std::map type, the return value will always be 0 (key was not found) or 1 (key was found).
      4. See 3.
      5. (none)
      "},{"location":"api/basic_json/erase/#exception-safety","title":"Exception safety","text":"

      Strong exception safety: if an exception occurs, the original value stays intact.

      "},{"location":"api/basic_json/erase/#exceptions","title":"Exceptions","text":"
      1. The function can throw the following exceptions:
        • Throws type_error.307 if called on a null value; example: \"cannot use erase() with null\"
        • Throws invalid_iterator.202 if called on an iterator which does not belong to the current JSON value; example: \"iterator does not fit current value\"
        • Throws invalid_iterator.205 if called on a primitive type with invalid iterator (i.e., any iterator which is not begin()); example: \"iterator out of range\"
      2. The function can throw the following exceptions:
        • Throws type_error.307 if called on a null value; example: \"cannot use erase() with null\"
        • Throws invalid_iterator.203 if called on iterators which does not belong to the current JSON value; example: \"iterators do not fit current value\"
        • Throws invalid_iterator.204 if called on a primitive type with invalid iterators (i.e., if first != begin() and last != end()); example: \"iterators out of range\"
      3. The function can throw the following exceptions:
        • Throws type_error.307 when called on a type other than JSON object; example: \"cannot use erase() with null\"
      4. See 3.
      5. The function can throw the following exceptions:
        • Throws type_error.307 when called on a type other than JSON object; example: \"cannot use erase() with null\"
        • Throws out_of_range.401 when idx >= size(); example: \"array index 17 is out of range\"
      "},{"location":"api/basic_json/erase/#complexity","title":"Complexity","text":"
      1. The complexity depends on the type:
        • objects: amortized constant
        • arrays: linear in distance between pos and the end of the container
        • strings and binary: linear in the length of the member
        • other types: constant
      2. The complexity depends on the type:
        • objects: log(size()) + std::distance(first, last)
        • arrays: linear in the distance between first and last, plus linear in the distance between last and end of the container
        • strings and binary: linear in the length of the member
        • other types: constant
      3. log(size()) + count(key)
      4. log(size()) + count(key)
      5. Linear in distance between idx and the end of the container.
      "},{"location":"api/basic_json/erase/#notes","title":"Notes","text":"
      1. Invalidates iterators and references at or after the point of the erase, including the end() iterator.
      2. (none)
      3. References and iterators to the erased elements are invalidated. Other references and iterators are not affected.
      4. See 3.
      5. (none)
      "},{"location":"api/basic_json/erase/#examples","title":"Examples","text":"Example: (1) remove element given an iterator

      The example shows the effect of erase() for different JSON types using an iterator.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n\n    // call erase()\n    j_boolean.erase(j_boolean.begin());\n    j_number_integer.erase(j_number_integer.begin());\n    j_number_float.erase(j_number_float.begin());\n    j_object.erase(j_object.find(\"two\"));\n    j_array.erase(j_array.begin() + 2);\n    j_string.erase(j_string.begin());\n\n    // print values\n    std::cout << j_boolean << '\\n';\n    std::cout << j_number_integer << '\\n';\n    std::cout << j_number_float << '\\n';\n    std::cout << j_object << '\\n';\n    std::cout << j_array << '\\n';\n    std::cout << j_string << '\\n';\n}\n

      Output:

      null\nnull\nnull\n{\"one\":1}\n[1,2,8,16]\nnull\n
      Example: (2) remove elements given an iterator range

      The example shows the effect of erase() for different JSON types using an iterator range.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n\n    // call erase()\n    j_boolean.erase(j_boolean.begin(), j_boolean.end());\n    j_number_integer.erase(j_number_integer.begin(), j_number_integer.end());\n    j_number_float.erase(j_number_float.begin(), j_number_float.end());\n    j_object.erase(j_object.find(\"two\"), j_object.end());\n    j_array.erase(j_array.begin() + 1, j_array.begin() + 3);\n    j_string.erase(j_string.begin(), j_string.end());\n\n    // print values\n    std::cout << j_boolean << '\\n';\n    std::cout << j_number_integer << '\\n';\n    std::cout << j_number_float << '\\n';\n    std::cout << j_object << '\\n';\n    std::cout << j_array << '\\n';\n    std::cout << j_string << '\\n';\n}\n

      Output:

      null\nnull\nnull\n{\"one\":1}\n[1,8,16]\nnull\n
      Example: (3) remove element from a JSON object given a key

      The example shows the effect of erase() for different JSON types using an object key.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n\n    // call erase()\n    auto count_one = j_object.erase(\"one\");\n    auto count_three = j_object.erase(\"three\");\n\n    // print values\n    std::cout << j_object << '\\n';\n    std::cout << count_one << \" \" << count_three << '\\n';\n}\n

      Output:

      {\"two\":2}\n1 0\n
      Example: (4) remove element from a JSON object given a key using string_view

      The example shows the effect of erase() for different JSON types using an object key.

      #include <iostream>\n#include <string_view>\n#include <nlohmann/json.hpp>\n\nusing namespace std::string_view_literals;\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n\n    // call erase()\n    auto count_one = j_object.erase(\"one\"sv);\n    auto count_three = j_object.erase(\"three\"sv);\n\n    // print values\n    std::cout << j_object << '\\n';\n    std::cout << count_one << \" \" << count_three << '\\n';\n}\n

      Output:

      {\"two\":2}\n1 0\n
      Example: (5) remove element from a JSON array given an index

      The example shows the effect of erase() using an array index.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON array\n    json j_array = {0, 1, 2, 3, 4, 5};\n\n    // call erase()\n    j_array.erase(2);\n\n    // print values\n    std::cout << j_array << '\\n';\n}\n

      Output:

      [0,1,3,4,5]\n
      "},{"location":"api/basic_json/erase/#version-history","title":"Version history","text":"
      1. Added in version 1.0.0. Added support for binary types in version 3.8.0.
      2. Added in version 1.0.0. Added support for binary types in version 3.8.0.
      3. Added in version 1.0.0.
      4. Added in version 3.11.0.
      5. Added in version 1.0.0.
      "},{"location":"api/basic_json/error_handler_t/","title":"nlohmann::basic_json::error_handler_t","text":"
      enum class error_handler_t {\n    strict,\n    replace,\n    ignore\n};\n

      This enumeration is used in the dump function to choose how to treat decoding errors while serializing a basic_json value. Three values are differentiated:

      strict throw a type_error exception in case of invalid UTF-8 replace replace invalid UTF-8 sequences with U+FFFD (\ufffd REPLACEMENT CHARACTER) ignore ignore invalid UTF-8 sequences; all bytes are copied to the output unchanged"},{"location":"api/basic_json/error_handler_t/#examples","title":"Examples","text":"Example

      The example below shows how the different values of the error_handler_t influence the behavior of dump when reading serializing an invalid UTF-8 sequence.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON value with invalid UTF-8 byte sequence\n    json j_invalid = \"\u00e4\\xA9\u00fc\";\n    try\n    {\n        std::cout << j_invalid.dump() << std::endl;\n    }\n    catch (const json::type_error& e)\n    {\n        std::cout << e.what() << std::endl;\n    }\n\n    std::cout << \"string with replaced invalid characters: \"\n              << j_invalid.dump(-1, ' ', false, json::error_handler_t::replace)\n              << \"\\nstring with ignored invalid characters: \"\n              << j_invalid.dump(-1, ' ', false, json::error_handler_t::ignore)\n              << '\\n';\n}\n

      Output:

      [json.exception.type_error.316] invalid UTF-8 byte at index 2: 0xA9\nstring with replaced invalid characters: \"\u00e4\ufffd\u00fc\"\nstring with ignored invalid characters: \"\u00e4\u00fc\"\n
      "},{"location":"api/basic_json/error_handler_t/#version-history","title":"Version history","text":"
      • Added in version 3.4.0.
      "},{"location":"api/basic_json/exception/","title":"nlohmann::basic_json::exception","text":"
      class exception : public std::exception;\n

      This class is an extension of std::exception objects with a member id for exception ids. It is used as the base class for all exceptions thrown by the basic_json class. This class can hence be used as \"wildcard\" to catch exceptions, see example below.

      classDiagram\n  direction LR\n\n    class std_exception [\"std::exception\"] {\n        <<interface>>\n    }\n\n    class json_exception [\"basic_json::exception\"] {\n        +const int id\n        +const char* what() const\n    }\n\n    class json_parse_error [\"basic_json::parse_error\"] {\n        +const std::size_t byte\n    }\n\n    class json_invalid_iterator [\"basic_json::invalid_iterator\"]\n    class json_type_error [\"basic_json::type_error\"]\n    class json_out_of_range [\"basic_json::out_of_range\"]\n    class json_other_error [\"basic_json::other_error\"]\n\n    std_exception <|-- json_exception\n    json_exception <|-- json_parse_error\n    json_exception <|-- json_invalid_iterator\n    json_exception <|-- json_type_error\n    json_exception <|-- json_out_of_range\n    json_exception <|-- json_other_error\n\n    style json_exception fill:#CCCCFF

      Subclasses:

      • parse_error for exceptions indicating a parse error
      • invalid_iterator for exceptions indicating errors with iterators
      • type_error for exceptions indicating executing a member function with a wrong type
      • out_of_range for exceptions indicating access out of the defined range
      • other_error for exceptions indicating other library errors
      "},{"location":"api/basic_json/exception/#member-functions","title":"Member functions","text":"
      • what - returns explanatory string
      "},{"location":"api/basic_json/exception/#member-variables","title":"Member variables","text":"
      • id - the id of the exception
      "},{"location":"api/basic_json/exception/#notes","title":"Notes","text":"

      To have nothrow-copy-constructible exceptions, we internally use std::runtime_error which can cope with arbitrary-length error messages. Intermediate strings are built with static functions and then passed to the actual constructor.

      "},{"location":"api/basic_json/exception/#examples","title":"Examples","text":"Example

      The following code shows how arbitrary library exceptions can be caught.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    try\n    {\n        // calling at() for a non-existing key\n        json j = {{\"foo\", \"bar\"}};\n        json k = j.at(\"non-existing\");\n    }\n    catch (const json::exception& e)\n    {\n        // output exception information\n        std::cout << \"message: \" << e.what() << '\\n'\n                  << \"exception id: \" << e.id << std::endl;\n    }\n}\n

      Output:

      message: [json.exception.out_of_range.403] key 'non-existing' not found\nexception id: 403\n
      "},{"location":"api/basic_json/exception/#see-also","title":"See also","text":"

      List of exceptions

      "},{"location":"api/basic_json/exception/#version-history","title":"Version history","text":"
      • Since version 3.0.0.
      "},{"location":"api/basic_json/find/","title":"nlohmann::basic_json::find","text":"
      // (1)\niterator find(const typename object_t::key_type& key);\nconst_iterator find(const typename object_t::key_type& key) const;\n\n// (2)\ntemplate<typename KeyType>\niterator find(KeyType&& key);\ntemplate<typename KeyType>\nconst_iterator find(KeyType&& key) const;\n
      1. Finds an element in a JSON object with a key equivalent to key. If the element is not found or the JSON value is not an object, end() is returned.
      2. See 1. This overload is only available if KeyType is comparable with typename object_t::key_type and typename object_comparator_t::is_transparent denotes a type.
      "},{"location":"api/basic_json/find/#template-parameters","title":"Template parameters","text":"KeyType A type for an object key other than json_pointer that is comparable with string_t using object_comparator_t. This can also be a string view (C++17)."},{"location":"api/basic_json/find/#parameters","title":"Parameters","text":"key (in) key value of the element to search for."},{"location":"api/basic_json/find/#return-value","title":"Return value","text":"

      Iterator to an element with a key equivalent to key. If no such element is found or the JSON value is not an object, a past-the-end iterator (see end()) is returned.

      "},{"location":"api/basic_json/find/#exception-safety","title":"Exception safety","text":"

      Strong exception safety: if an exception occurs, the original value stays intact.

      "},{"location":"api/basic_json/find/#complexity","title":"Complexity","text":"

      Logarithmic in the size of the JSON object.

      "},{"location":"api/basic_json/find/#notes","title":"Notes","text":"

      This method always returns end() when executed on a JSON type that is not an object.

      "},{"location":"api/basic_json/find/#examples","title":"Examples","text":"Example: (1) find object element by key

      The example shows how find() is used.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n\n    // call find\n    auto it_two = j_object.find(\"two\");\n    auto it_three = j_object.find(\"three\");\n\n    // print values\n    std::cout << std::boolalpha;\n    std::cout << \"\\\"two\\\" was found: \" << (it_two != j_object.end()) << '\\n';\n    std::cout << \"value at key \\\"two\\\": \" << *it_two << '\\n';\n    std::cout << \"\\\"three\\\" was found: \" << (it_three != j_object.end()) << '\\n';\n}\n

      Output:

      \"two\" was found: true\nvalue at key \"two\": 2\n\"three\" was found: false\n
      Example: (2) find object element by key using string_view

      The example shows how find() is used.

      #include <iostream>\n#include <string_view>\n#include <nlohmann/json.hpp>\n\nusing namespace std::string_view_literals;\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n\n    // call find\n    auto it_two = j_object.find(\"two\"sv);\n    auto it_three = j_object.find(\"three\"sv);\n\n    // print values\n    std::cout << std::boolalpha;\n    std::cout << \"\\\"two\\\" was found: \" << (it_two != j_object.end()) << '\\n';\n    std::cout << \"value at key \\\"two\\\": \" << *it_two << '\\n';\n    std::cout << \"\\\"three\\\" was found: \" << (it_three != j_object.end()) << '\\n';\n}\n

      Output:

      \"two\" was found: true\nvalue at key \"two\": 2\n\"three\" was found: false\n
      "},{"location":"api/basic_json/find/#see-also","title":"See also","text":"
      • contains checks whether a key exists
      "},{"location":"api/basic_json/find/#version-history","title":"Version history","text":"
      1. Added in version 3.11.0.
      2. Added in version 1.0.0. Changed to support comparable types in version 3.11.0.
      "},{"location":"api/basic_json/flatten/","title":"nlohmann::basic_json::flatten","text":"
      basic_json flatten() const;\n

      The function creates a JSON object whose keys are JSON pointers (see RFC 6901) and whose values are all primitive (see is_primitive() for more information). The original JSON value can be restored using the unflatten() function.

      "},{"location":"api/basic_json/flatten/#return-value","title":"Return value","text":"

      an object that maps JSON pointers to primitive values

      "},{"location":"api/basic_json/flatten/#exception-safety","title":"Exception safety","text":"

      Strong exception safety: if an exception occurs, the original value stays intact.

      "},{"location":"api/basic_json/flatten/#complexity","title":"Complexity","text":"

      Linear in the size the JSON value.

      "},{"location":"api/basic_json/flatten/#notes","title":"Notes","text":"

      Empty objects and arrays are flattened to null and will not be reconstructed correctly by the unflatten() function.

      "},{"location":"api/basic_json/flatten/#examples","title":"Examples","text":"Example

      The following code shows how a JSON object is flattened to an object whose keys consist of JSON pointers.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON value\n    json j =\n    {\n        {\"pi\", 3.141},\n        {\"happy\", true},\n        {\"name\", \"Niels\"},\n        {\"nothing\", nullptr},\n        {\n            \"answer\", {\n                {\"everything\", 42}\n            }\n        },\n        {\"list\", {1, 0, 2}},\n        {\n            \"object\", {\n                {\"currency\", \"USD\"},\n                {\"value\", 42.99}\n            }\n        }\n    };\n\n    // call flatten()\n    std::cout << std::setw(4) << j.flatten() << '\\n';\n}\n

      Output:

      {\n    \"/answer/everything\": 42,\n    \"/happy\": true,\n    \"/list/0\": 1,\n    \"/list/1\": 0,\n    \"/list/2\": 2,\n    \"/name\": \"Niels\",\n    \"/nothing\": null,\n    \"/object/currency\": \"USD\",\n    \"/object/value\": 42.99,\n    \"/pi\": 3.141\n}\n
      "},{"location":"api/basic_json/flatten/#see-also","title":"See also","text":"
      • unflatten the reverse function
      "},{"location":"api/basic_json/flatten/#version-history","title":"Version history","text":"
      • Added in version 2.0.0.
      "},{"location":"api/basic_json/from_bjdata/","title":"nlohmann::basic_json::from_bjdata","text":"
      // (1)\ntemplate<typename InputType>\nstatic basic_json from_bjdata(InputType&& i,\n                              const bool strict = true,\n                              const bool allow_exceptions = true);\n// (2)\ntemplate<typename IteratorType>\nstatic basic_json from_bjdata(IteratorType first, IteratorType last,\n                              const bool strict = true,\n                              const bool allow_exceptions = true);\n

      Deserializes a given input to a JSON value using the BJData (Binary JData) serialization format.

      1. Reads from a compatible input.
      2. Reads from an iterator range.

      The exact mapping and its limitations is described on a dedicated page.

      "},{"location":"api/basic_json/from_bjdata/#template-parameters","title":"Template parameters","text":"InputType

      A compatible input, for instance:

      • an std::istream object
      • a FILE pointer
      • a C-style array of characters
      • a pointer to a null-terminated string of single byte characters
      • an object obj for which begin(obj) and end(obj) produces a valid pair of iterators.
      IteratorType a compatible iterator type"},{"location":"api/basic_json/from_bjdata/#parameters","title":"Parameters","text":"i (in) an input in BJData format convertible to an input adapter first (in) iterator to start of the input last (in) iterator to end of the input strict (in) whether to expect the input to be consumed until EOF (true by default) allow_exceptions (in) whether to throw exceptions in case of a parse error (optional, true by default)"},{"location":"api/basic_json/from_bjdata/#return-value","title":"Return value","text":"

      deserialized JSON value; in case of a parse error and allow_exceptions set to false, the return value will be value_t::discarded. The latter can be checked with is_discarded.

      "},{"location":"api/basic_json/from_bjdata/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

      "},{"location":"api/basic_json/from_bjdata/#exceptions","title":"Exceptions","text":"
      • Throws parse_error.110 if the given input ends prematurely or the end of file was not reached when strict was set to true
      • Throws parse_error.112 if a parse error occurs
      • Throws parse_error.113 if a string could not be parsed successfully
      "},{"location":"api/basic_json/from_bjdata/#complexity","title":"Complexity","text":"

      Linear in the size of the input.

      "},{"location":"api/basic_json/from_bjdata/#examples","title":"Examples","text":"Example

      The example shows the deserialization of a byte vector in BJData format to a JSON value.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create byte vector\n    std::vector<std::uint8_t> v = {0x7B, 0x69, 0x07, 0x63, 0x6F, 0x6D, 0x70, 0x61,\n                                   0x63, 0x74, 0x54, 0x69, 0x06, 0x73, 0x63, 0x68,\n                                   0x65, 0x6D, 0x61, 0x69, 0x00, 0x7D\n                                  };\n\n    // deserialize it with BJData\n    json j = json::from_bjdata(v);\n\n    // print the deserialized JSON value\n    std::cout << std::setw(2) << j << std::endl;\n}\n

      Output:

      {\n  \"compact\": true,\n  \"schema\": 0\n}\n
      "},{"location":"api/basic_json/from_bjdata/#version-history","title":"Version history","text":"
      • Added in version 3.11.0.
      "},{"location":"api/basic_json/from_bson/","title":"nlohmann::basic_json::from_bson","text":"
      // (1)\ntemplate<typename InputType>\nstatic basic_json from_bson(InputType&& i,\n                            const bool strict = true,\n                            const bool allow_exceptions = true);\n// (2)\ntemplate<typename IteratorType>\nstatic basic_json from_bson(IteratorType first, IteratorType last,\n                            const bool strict = true,\n                            const bool allow_exceptions = true);\n

      Deserializes a given input to a JSON value using the BSON (Binary JSON) serialization format.

      1. Reads from a compatible input.
      2. Reads from an iterator range.

      The exact mapping and its limitations is described on a dedicated page.

      "},{"location":"api/basic_json/from_bson/#template-parameters","title":"Template parameters","text":"InputType

      A compatible input, for instance:

      • an std::istream object
      • a FILE pointer
      • a C-style array of characters
      • a pointer to a null-terminated string of single byte characters
      • an object obj for which begin(obj) and end(obj) produces a valid pair of iterators.
      IteratorType a compatible iterator type"},{"location":"api/basic_json/from_bson/#parameters","title":"Parameters","text":"i (in) an input in BSON format convertible to an input adapter first (in) iterator to start of the input last (in) iterator to end of the input strict (in) whether to expect the input to be consumed until EOF (true by default) allow_exceptions (in) whether to throw exceptions in case of a parse error (optional, true by default)"},{"location":"api/basic_json/from_bson/#return-value","title":"Return value","text":"

      deserialized JSON value; in case of a parse error and allow_exceptions set to false, the return value will be value_t::discarded. The latter can be checked with is_discarded.

      "},{"location":"api/basic_json/from_bson/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

      "},{"location":"api/basic_json/from_bson/#exceptions","title":"Exceptions","text":"

      Throws parse_error.114 if an unsupported BSON record type is encountered.

      "},{"location":"api/basic_json/from_bson/#complexity","title":"Complexity","text":"

      Linear in the size of the input.

      "},{"location":"api/basic_json/from_bson/#examples","title":"Examples","text":"Example

      The example shows the deserialization of a byte vector in BSON format to a JSON value.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create byte vector\n    std::vector<std::uint8_t> v = {0x1b, 0x00, 0x00, 0x00, 0x08, 0x63, 0x6f, 0x6d,\n                                   0x70, 0x61, 0x63, 0x74, 0x00, 0x01, 0x10, 0x73,\n                                   0x63, 0x68, 0x65, 0x6d, 0x61, 0x00, 0x00, 0x00,\n                                   0x00, 0x00, 0x00\n                                  };\n\n    // deserialize it with BSON\n    json j = json::from_bson(v);\n\n    // print the deserialized JSON value\n    std::cout << std::setw(2) << j << std::endl;\n}\n

      Output:

      {\n  \"compact\": true,\n  \"schema\": 0\n}\n
      "},{"location":"api/basic_json/from_bson/#see-also","title":"See also","text":"
      • BSON specification
      • to_bson for the analogous serialization
      • from_cbor for the related CBOR format
      • from_msgpack for the related MessagePack format
      • from_ubjson for the related UBJSON format
      "},{"location":"api/basic_json/from_bson/#version-history","title":"Version history","text":"
      • Added in version 3.4.0.

      Deprecation

      • Overload (2) replaces calls to from_bson with a pointer and a length as first two parameters, which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like from_bson(ptr, len, ...); with from_bson(ptr, ptr+len, ...);.
      • Overload (2) replaces calls to from_bson with a pair of iterators as their first parameter, which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like from_bson({ptr, ptr+len}, ...); with from_bson(ptr, ptr+len, ...);.

      You should be warned by your compiler with a -Wdeprecated-declarations warning if you are using a deprecated function.

      "},{"location":"api/basic_json/from_cbor/","title":"nlohmann::basic_json::from_cbor","text":"
      // (1)\ntemplate<typename InputType>\nstatic basic_json from_cbor(InputType&& i,\n                            const bool strict = true,\n                            const bool allow_exceptions = true,\n                            const cbor_tag_handler_t tag_handler = cbor_tag_handler_t::error);\n\n// (2)\ntemplate<typename IteratorType>\nstatic basic_json from_cbor(IteratorType first, IteratorType last,\n                            const bool strict = true,\n                            const bool allow_exceptions = true,\n                            const cbor_tag_handler_t tag_handler = cbor_tag_handler_t::error);\n

      Deserializes a given input to a JSON value using the CBOR (Concise Binary Object Representation) serialization format.

      1. Reads from a compatible input.
      2. Reads from an iterator range.

      The exact mapping and its limitations is described on a dedicated page.

      "},{"location":"api/basic_json/from_cbor/#template-parameters","title":"Template parameters","text":"InputType

      A compatible input, for instance:

      • an std::istream object
      • a FILE pointer
      • a C-style array of characters
      • a pointer to a null-terminated string of single byte characters
      • an object obj for which begin(obj) and end(obj) produces a valid pair of iterators.
      IteratorType a compatible iterator type"},{"location":"api/basic_json/from_cbor/#parameters","title":"Parameters","text":"i (in) an input in CBOR format convertible to an input adapter first (in) iterator to start of the input last (in) iterator to end of the input strict (in) whether to expect the input to be consumed until EOF (true by default) allow_exceptions (in) whether to throw exceptions in case of a parse error (optional, true by default) tag_handler (in) how to treat CBOR tags (optional, error by default); see cbor_tag_handler_t for more information"},{"location":"api/basic_json/from_cbor/#return-value","title":"Return value","text":"

      deserialized JSON value; in case of a parse error and allow_exceptions set to false, the return value will be value_t::discarded. The latter can be checked with is_discarded.

      "},{"location":"api/basic_json/from_cbor/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

      "},{"location":"api/basic_json/from_cbor/#exceptions","title":"Exceptions","text":"
      • Throws parse_error.110 if the given input ends prematurely or the end of file was not reached when strict was set to true
      • Throws parse_error.112 if unsupported features from CBOR were used in the given input or if the input is not valid CBOR
      • Throws parse_error.113 if a string was expected as map key, but not found
      "},{"location":"api/basic_json/from_cbor/#complexity","title":"Complexity","text":"

      Linear in the size of the input.

      "},{"location":"api/basic_json/from_cbor/#examples","title":"Examples","text":"Example

      The example shows the deserialization of a byte vector in CBOR format to a JSON value.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create byte vector\n    std::vector<std::uint8_t> v = {0xa2, 0x67, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x63,\n                                   0x74, 0xf5, 0x66, 0x73, 0x63, 0x68, 0x65, 0x6d,\n                                   0x61, 0x00\n                                  };\n\n    // deserialize it with CBOR\n    json j = json::from_cbor(v);\n\n    // print the deserialized JSON value\n    std::cout << std::setw(2) << j << std::endl;\n}\n

      Output:

      {\n  \"compact\": true,\n  \"schema\": 0\n}\n
      "},{"location":"api/basic_json/from_cbor/#version-history","title":"Version history","text":"
      • Added in version 2.0.9.
      • Parameter start_index since version 2.1.1.
      • Changed to consume input adapters, removed start_index parameter, and added strict parameter in version 3.0.0.
      • Added allow_exceptions parameter in version 3.2.0.
      • Added tag_handler parameter in version 3.9.0.

      Deprecation

      • Overload (2) replaces calls to from_cbor with a pointer and a length as first two parameters, which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like from_cbor(ptr, len, ...); with from_cbor(ptr, ptr+len, ...);.
      • Overload (2) replaces calls to from_cbor with a pair of iterators as their first parameter, which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like from_cbor({ptr, ptr+len}, ...); with from_cbor(ptr, ptr+len, ...);.

      You should be warned by your compiler with a -Wdeprecated-declarations warning if you are using a deprecated function.

      "},{"location":"api/basic_json/from_msgpack/","title":"nlohmann::basic_json::from_msgpack","text":"
      // (1)\ntemplate<typename InputType>\nstatic basic_json from_msgpack(InputType&& i,\n                               const bool strict = true,\n                               const bool allow_exceptions = true);\n// (2)\ntemplate<typename IteratorType>\nstatic basic_json from_msgpack(IteratorType first, IteratorType last,\n                               const bool strict = true,\n                               const bool allow_exceptions = true);\n

      Deserializes a given input to a JSON value using the MessagePack serialization format.

      1. Reads from a compatible input.
      2. Reads from an iterator range.

      The exact mapping and its limitations is described on a dedicated page.

      "},{"location":"api/basic_json/from_msgpack/#template-parameters","title":"Template parameters","text":"InputType

      A compatible input, for instance:

      • an std::istream object
      • a FILE pointer
      • a C-style array of characters
      • a pointer to a null-terminated string of single byte characters
      • an object obj for which begin(obj) and end(obj) produces a valid pair of iterators.
      IteratorType a compatible iterator type"},{"location":"api/basic_json/from_msgpack/#parameters","title":"Parameters","text":"i (in) an input in MessagePack format convertible to an input adapter first (in) iterator to start of the input last (in) iterator to end of the input strict (in) whether to expect the input to be consumed until EOF (true by default) allow_exceptions (in) whether to throw exceptions in case of a parse error (optional, true by default)"},{"location":"api/basic_json/from_msgpack/#return-value","title":"Return value","text":"

      deserialized JSON value; in case of a parse error and allow_exceptions set to false, the return value will be value_t::discarded. The latter can be checked with is_discarded.

      "},{"location":"api/basic_json/from_msgpack/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

      "},{"location":"api/basic_json/from_msgpack/#exceptions","title":"Exceptions","text":"
      • Throws parse_error.110 if the given input ends prematurely or the end of file was not reached when strict was set to true
      • Throws parse_error.112 if unsupported features from MessagePack were used in the given input or if the input is not valid MessagePack
      • Throws parse_error.113 if a string was expected as map key, but not found
      "},{"location":"api/basic_json/from_msgpack/#complexity","title":"Complexity","text":"

      Linear in the size of the input.

      "},{"location":"api/basic_json/from_msgpack/#examples","title":"Examples","text":"Example

      The example shows the deserialization of a byte vector in MessagePack format to a JSON value.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create byte vector\n    std::vector<std::uint8_t> v = {0x82, 0xa7, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x63,\n                                   0x74, 0xc3, 0xa6, 0x73, 0x63, 0x68, 0x65, 0x6d,\n                                   0x61, 0x00\n                                  };\n\n    // deserialize it with MessagePack\n    json j = json::from_msgpack(v);\n\n    // print the deserialized JSON value\n    std::cout << std::setw(2) << j << std::endl;\n}\n

      Output:

      {\n  \"compact\": true,\n  \"schema\": 0\n}\n
      "},{"location":"api/basic_json/from_msgpack/#version-history","title":"Version history","text":"
      • Added in version 2.0.9.
      • Parameter start_index since version 2.1.1.
      • Changed to consume input adapters, removed start_index parameter, and added strict parameter in version 3.0.0.
      • Added allow_exceptions parameter in version 3.2.0.

      Deprecation

      • Overload (2) replaces calls to from_msgpack with a pointer and a length as first two parameters, which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like from_msgpack(ptr, len, ...); with from_msgpack(ptr, ptr+len, ...);.
      • Overload (2) replaces calls to from_cbor with a pair of iterators as their first parameter, which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like from_msgpack({ptr, ptr+len}, ...); with from_msgpack(ptr, ptr+len, ...);.

      You should be warned by your compiler with a -Wdeprecated-declarations warning if you are using a deprecated function.

      "},{"location":"api/basic_json/from_ubjson/","title":"nlohmann::basic_json::from_ubjson","text":"
      // (1)\ntemplate<typename InputType>\nstatic basic_json from_ubjson(InputType&& i,\n                              const bool strict = true,\n                              const bool allow_exceptions = true);\n// (2)\ntemplate<typename IteratorType>\nstatic basic_json from_ubjson(IteratorType first, IteratorType last,\n                              const bool strict = true,\n                              const bool allow_exceptions = true);\n

      Deserializes a given input to a JSON value using the UBJSON (Universal Binary JSON) serialization format.

      1. Reads from a compatible input.
      2. Reads from an iterator range.

      The exact mapping and its limitations is described on a dedicated page.

      "},{"location":"api/basic_json/from_ubjson/#template-parameters","title":"Template parameters","text":"InputType

      A compatible input, for instance:

      • an std::istream object
      • a FILE pointer
      • a C-style array of characters
      • a pointer to a null-terminated string of single byte characters
      • an object obj for which begin(obj) and end(obj) produces a valid pair of iterators.
      IteratorType a compatible iterator type"},{"location":"api/basic_json/from_ubjson/#parameters","title":"Parameters","text":"i (in) an input in UBJSON format convertible to an input adapter first (in) iterator to start of the input last (in) iterator to end of the input strict (in) whether to expect the input to be consumed until EOF (true by default) allow_exceptions (in) whether to throw exceptions in case of a parse error (optional, true by default)"},{"location":"api/basic_json/from_ubjson/#return-value","title":"Return value","text":"

      deserialized JSON value; in case of a parse error and allow_exceptions set to false, the return value will be value_t::discarded. The latter can be checked with is_discarded.

      "},{"location":"api/basic_json/from_ubjson/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

      "},{"location":"api/basic_json/from_ubjson/#exceptions","title":"Exceptions","text":"
      • Throws parse_error.110 if the given input ends prematurely or the end of file was not reached when strict was set to true
      • Throws parse_error.112 if a parse error occurs
      • Throws parse_error.113 if a string could not be parsed successfully
      "},{"location":"api/basic_json/from_ubjson/#complexity","title":"Complexity","text":"

      Linear in the size of the input.

      "},{"location":"api/basic_json/from_ubjson/#examples","title":"Examples","text":"Example

      The example shows the deserialization of a byte vector in UBJSON format to a JSON value.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create byte vector\n    std::vector<std::uint8_t> v = {0x7B, 0x69, 0x07, 0x63, 0x6F, 0x6D, 0x70, 0x61,\n                                   0x63, 0x74, 0x54, 0x69, 0x06, 0x73, 0x63, 0x68,\n                                   0x65, 0x6D, 0x61, 0x69, 0x00, 0x7D\n                                  };\n\n    // deserialize it with UBJSON\n    json j = json::from_ubjson(v);\n\n    // print the deserialized JSON value\n    std::cout << std::setw(2) << j << std::endl;\n}\n

      Output:

      {\n  \"compact\": true,\n  \"schema\": 0\n}\n
      "},{"location":"api/basic_json/from_ubjson/#version-history","title":"Version history","text":"
      • Added in version 3.1.0.
      • Added allow_exceptions parameter in version 3.2.0.

      Deprecation

      • Overload (2) replaces calls to from_ubjson with a pointer and a length as first two parameters, which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like from_ubjson(ptr, len, ...); with from_ubjson(ptr, ptr+len, ...);.
      • Overload (2) replaces calls to from_ubjson with a pair of iterators as their first parameter, which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like from_ubjson({ptr, ptr+len}, ...); with from_ubjson(ptr, ptr+len, ...);.

      You should be warned by your compiler with a -Wdeprecated-declarations warning if you are using a deprecated function.

      "},{"location":"api/basic_json/front/","title":"nlohmann::basic_json::front","text":"
      reference front();\nconst_reference front() const;\n

      Returns a reference to the first element in the container. For a JSON container c, the expression c.front() is equivalent to *c.begin().

      "},{"location":"api/basic_json/front/#return-value","title":"Return value","text":"

      In case of a structured type (array or object), a reference to the first element is returned. In case of number, string, boolean, or binary values, a reference to the value is returned.

      "},{"location":"api/basic_json/front/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

      "},{"location":"api/basic_json/front/#exceptions","title":"Exceptions","text":"

      If the JSON value is null, exception invalid_iterator.214 is thrown.

      "},{"location":"api/basic_json/front/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/front/#notes","title":"Notes","text":"

      Precondition

      The array or object must not be empty. Calling front on an empty array or object yields undefined behavior.

      "},{"location":"api/basic_json/front/#examples","title":"Examples","text":"Example

      The following code shows an example for front().

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_object_empty(json::value_t::object);\n    json j_array = {1, 2, 4, 8, 16};\n    json j_array_empty(json::value_t::array);\n    json j_string = \"Hello, world\";\n\n    // call front()\n    //std::cout << j_null.front() << '\\n';          // would throw\n    std::cout << j_boolean.front() << '\\n';\n    std::cout << j_number_integer.front() << '\\n';\n    std::cout << j_number_float.front() << '\\n';\n    std::cout << j_object.front() << '\\n';\n    //std::cout << j_object_empty.front() << '\\n';  // undefined behavior\n    std::cout << j_array.front() << '\\n';\n    //std::cout << j_array_empty.front() << '\\n';   // undefined behavior\n    std::cout << j_string.front() << '\\n';\n}\n

      Output:

      true\n17\n23.42\n1\n1\n\"Hello, world\"\n
      "},{"location":"api/basic_json/front/#see-also","title":"See also","text":"
      • back to access the last element
      "},{"location":"api/basic_json/front/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      • Adjusted code to return reference to binary values in version 3.8.0.
      "},{"location":"api/basic_json/get/","title":"nlohmann::basic_json::get","text":"
      // (1)\ntemplate<typename ValueType>\nValueType get() const noexcept(\n    noexcept(JSONSerializer<ValueType>::from_json(\n        std::declval<const basic_json_t&>(), std::declval<ValueType&>())));\n\n// (2)\ntemplate<typename BasicJsonType>\nBasicJsonType get() const;\n\n// (3)\ntemplate<typename PointerType>\nPointerType get_ptr();\n\ntemplate<typename PointerType>\nconstexpr const PointerType get_ptr() const noexcept;\n
      1. Explicit type conversion between the JSON value and a compatible value which is CopyConstructible and DefaultConstructible. The value is converted by calling the json_serializer<ValueType> from_json() method.

        The function is equivalent to executing

        ValueType ret;\nJSONSerializer<ValueType>::from_json(*this, ret);\nreturn ret;\n

        This overload is chosen if:

        • ValueType is not basic_json,
        • json_serializer<ValueType> has a from_json() method of the form void from_json(const basic_json&, ValueType&), and
        • json_serializer<ValueType> does not have a from_json() method of the form ValueType from_json(const basic_json&)

        If the type is not CopyConstructible and not DefaultConstructible, the value is converted by calling the json_serializer<ValueType> from_json() method.

        The function is then equivalent to executing

        return JSONSerializer<ValueTypeCV>::from_json(*this);\n

        This overload is chosen if:

        • ValueType is not basic_json and
        • json_serializer<ValueType> has a from_json() method of the form ValueType from_json(const basic_json&)

        If json_serializer<ValueType> has both overloads of from_json(), the latter one is chosen.

      2. Overload for basic_json specializations. The function is equivalent to executing

        return *this;\n

      3. Explicit pointer access to the internally stored JSON value. No copies are made.

      "},{"location":"api/basic_json/get/#template-parameters","title":"Template parameters","text":"ValueType the value type to return BasicJsonType a specialization of basic_json PointerType pointer type; must be a pointer to array_t, object_t, string_t, boolean_t, number_integer_t, or number_unsigned_t, number_float_t, or binary_t. Other types will not compile."},{"location":"api/basic_json/get/#return-value","title":"Return value","text":"
      1. copy of the JSON value, converted to ValueType
      2. a copy of *this, converted into BasicJsonType
      3. pointer to the internally stored JSON value if the requested pointer type fits to the JSON value; nullptr otherwise
      "},{"location":"api/basic_json/get/#exceptions","title":"Exceptions","text":"

      Depends on what json_serializer<ValueType> from_json() method throws

      "},{"location":"api/basic_json/get/#notes","title":"Notes","text":"

      Undefined behavior

      Writing data to the pointee (overload 3) of the result yields an undefined state.

      "},{"location":"api/basic_json/get/#examples","title":"Examples","text":"Example

      The example below shows several conversions from JSON values to other types. There a few things to note: (1) Floating-point numbers can be converted to integers, (2) A JSON array can be converted to a standard std::vector<short>, (3) A JSON object can be converted to C++ associative containers such as std::unordered_map<std::string, json>.

      #include <iostream>\n#include <unordered_map>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON value with different types\n    json json_types =\n    {\n        {\"boolean\", true},\n        {\n            \"number\", {\n                {\"integer\", 42},\n                {\"floating-point\", 17.23}\n            }\n        },\n        {\"string\", \"Hello, world!\"},\n        {\"array\", {1, 2, 3, 4, 5}},\n        {\"null\", nullptr}\n    };\n\n    // use explicit conversions\n    auto v1 = json_types[\"boolean\"].template get<bool>();\n    auto v2 = json_types[\"number\"][\"integer\"].template get<int>();\n    auto v3 = json_types[\"number\"][\"integer\"].template get<short>();\n    auto v4 = json_types[\"number\"][\"floating-point\"].template get<float>();\n    auto v5 = json_types[\"number\"][\"floating-point\"].template get<int>();\n    auto v6 = json_types[\"string\"].template get<std::string>();\n    auto v7 = json_types[\"array\"].template get<std::vector<short>>();\n    auto v8 = json_types.template get<std::unordered_map<std::string, json>>();\n\n    // print the conversion results\n    std::cout << v1 << '\\n';\n    std::cout << v2 << ' ' << v3 << '\\n';\n    std::cout << v4 << ' ' << v5 << '\\n';\n    std::cout << v6 << '\\n';\n\n    for (auto i : v7)\n    {\n        std::cout << i << ' ';\n    }\n    std::cout << \"\\n\\n\";\n\n    for (auto i : v8)\n    {\n        std::cout << i.first << \": \" << i.second << '\\n';\n    }\n}\n

      Output:

      1\n42 42\n17.23 17\nHello, world!\n1 2 3 4 5 \n\nstring: \"Hello, world!\"\nnumber: {\"floating-point\":17.23,\"integer\":42}\nnull: null\nboolean: true\narray: [1,2,3,4,5]\n
      Example

      The example below shows how pointers to internal values of a JSON value can be requested. Note that no type conversions are made and a #cpp nullptr is returned if the value and the requested pointer type does not match.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON number\n    json value = 17;\n\n    // explicitly getting pointers\n    auto p1 = value.template get<const json::number_integer_t*>();\n    auto p2 = value.template get<json::number_integer_t*>();\n    auto p3 = value.template get<json::number_integer_t* const>();\n    auto p4 = value.template get<const json::number_integer_t* const>();\n    auto p5 = value.template get<json::number_float_t*>();\n\n    // print the pointees\n    std::cout << *p1 << ' ' << *p2 << ' ' << *p3 << ' ' << *p4 << '\\n';\n    std::cout << std::boolalpha << (p5 == nullptr) << '\\n';\n}\n

      Output:

      17 17 17 17\ntrue\n
      "},{"location":"api/basic_json/get/#version-history","title":"Version history","text":"
      1. Since version 2.1.0.
      2. Since version 2.1.0. Extended to work with other specializations of basic_json in version 3.2.0.
      3. Since version 1.0.0.
      "},{"location":"api/basic_json/get_allocator/","title":"nlohmann::basic_json::get_allocator","text":"
      static allocator_type get_allocator();\n

      Returns the allocator associated with the container.

      "},{"location":"api/basic_json/get_allocator/#return-value","title":"Return value","text":"

      associated allocator

      "},{"location":"api/basic_json/get_allocator/#examples","title":"Examples","text":"Example

      The example shows how get_allocator() is used to created json values.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    auto alloc = json::get_allocator();\n    using traits_t = std::allocator_traits<decltype(alloc)>;\n\n    json* j = traits_t::allocate(alloc, 1);\n    traits_t::construct(alloc, j, \"Hello, world!\");\n\n    std::cout << *j << std::endl;\n\n    traits_t::destroy(alloc, j);\n    traits_t::deallocate(alloc, j, 1);\n}\n

      Output:

      \"Hello, world!\"\n
      "},{"location":"api/basic_json/get_allocator/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/get_binary/","title":"nlohmann::basic_json::get_binary","text":"
      binary_t& get_binary();\n\nconst binary_t& get_binary() const;\n

      Returns a reference to the stored binary value.

      "},{"location":"api/basic_json/get_binary/#return-value","title":"Return value","text":"

      Reference to binary value.

      "},{"location":"api/basic_json/get_binary/#exception-safety","title":"Exception safety","text":"

      Strong exception safety: if an exception occurs, the original value stays intact.

      "},{"location":"api/basic_json/get_binary/#exceptions","title":"Exceptions","text":"

      Throws type_error.302 if the value is not binary

      "},{"location":"api/basic_json/get_binary/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/get_binary/#examples","title":"Examples","text":"Example

      The following code shows how to query a binary value.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a binary vector\n    std::vector<std::uint8_t> vec = {0xCA, 0xFE, 0xBA, 0xBE};\n\n    // create a binary JSON value with subtype 42\n    json j = json::binary(vec, 42);\n\n    // output type and subtype\n    std::cout << \"type: \" << j.type_name() << \", subtype: \" << j.get_binary().subtype() << std::endl;\n}\n

      Output:

      type: binary, subtype: 42\n
      "},{"location":"api/basic_json/get_binary/#version-history","title":"Version history","text":"
      • Added in version 3.8.0.
      "},{"location":"api/basic_json/get_ptr/","title":"nlohmann::basic_json::get_ptr","text":"
      template<typename PointerType>\nPointerType get_ptr() noexcept;\n\ntemplate<typename PointerType>\nconstexpr const PointerType get_ptr() const noexcept;\n

      Implicit pointer access to the internally stored JSON value. No copies are made.

      "},{"location":"api/basic_json/get_ptr/#template-parameters","title":"Template parameters","text":"PointerType pointer type; must be a pointer to array_t, object_t, string_t, boolean_t, number_integer_t, or number_unsigned_t, number_float_t, or binary_t. Other types will not compile."},{"location":"api/basic_json/get_ptr/#return-value","title":"Return value","text":"

      pointer to the internally stored JSON value if the requested pointer type fits to the JSON value; nullptr otherwise

      "},{"location":"api/basic_json/get_ptr/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this function never throws exceptions.

      "},{"location":"api/basic_json/get_ptr/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/get_ptr/#notes","title":"Notes","text":"

      Undefined behavior

      The pointer becomes invalid if the underlying JSON object changes.

      Consider the following example code where the pointer ptr changes after the array is resized. As a result, reading or writing to ptr after the array change would be undefined behavior. The address of the first array element changes, because the underlying std::vector is resized after adding a fifth element.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    json j = {1, 2, 3, 4};\n    auto* ptr = j[0].get_ptr<std::int64_t*>();\n    std::cout << \"value at \" << ptr << \" is \" << *ptr << std::endl;\n\n    j.push_back(5);\n\n    ptr = j[0].get_ptr<std::int64_t*>();\n    std::cout << \"value at \" << ptr << \" is \" << *ptr << std::endl;\n}\n

      Output:

      value at 0x6000012fc1c8 is 1\nvalue at 0x6000029fc088 is 1\n
      "},{"location":"api/basic_json/get_ptr/#examples","title":"Examples","text":"Example

      The example below shows how pointers to internal values of a JSON value can be requested. Note that no type conversions are made and a nullptr is returned if the value and the requested pointer type does not match.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON number\n    json value = 17;\n\n    // explicitly getting pointers\n    auto p1 = value.get_ptr<const json::number_integer_t*>();\n    auto p2 = value.get_ptr<json::number_integer_t*>();\n    auto p3 = value.get_ptr<json::number_integer_t* const>();\n    auto p4 = value.get_ptr<const json::number_integer_t* const>();\n    auto p5 = value.get_ptr<json::number_float_t*>();\n\n    // print the pointees\n    std::cout << *p1 << ' ' << *p2 << ' ' << *p3 << ' ' << *p4 << '\\n';\n    std::cout << std::boolalpha << (p5 == nullptr) << '\\n';\n}\n

      Output:

      17 17 17 17\ntrue\n
      "},{"location":"api/basic_json/get_ptr/#see-also","title":"See also","text":"
      • get_ref() get a reference value
      "},{"location":"api/basic_json/get_ptr/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      • Extended to binary types in version 3.8.0.
      "},{"location":"api/basic_json/get_ref/","title":"nlohmann::basic_json::get_ref","text":"
      template<typename ReferenceType>\nReferenceType get_ref();\n\ntemplate<typename ReferenceType>\nconst ReferenceType get_ref() const;\n

      Implicit reference access to the internally stored JSON value. No copies are made.

      "},{"location":"api/basic_json/get_ref/#template-parameters","title":"Template parameters","text":"ReferenceType reference type; must be a reference to array_t, object_t, string_t, boolean_t, number_integer_t, or number_unsigned_t, number_float_t, or binary_t. Enforced by a static assertion."},{"location":"api/basic_json/get_ref/#return-value","title":"Return value","text":"

      reference to the internally stored JSON value if the requested reference type fits to the JSON value; throws type_error.303 otherwise

      "},{"location":"api/basic_json/get_ref/#exception-safety","title":"Exception safety","text":"

      Strong exception safety: if an exception occurs, the original value stays intact.

      "},{"location":"api/basic_json/get_ref/#exceptions","title":"Exceptions","text":"

      Throws type_error.303 if the requested reference type does not match the stored JSON value type; example: \"incompatible ReferenceType for get_ref, actual type is binary\".

      "},{"location":"api/basic_json/get_ref/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/get_ref/#notes","title":"Notes","text":"

      Undefined behavior

      The reference becomes invalid if the underlying JSON object changes.

      "},{"location":"api/basic_json/get_ref/#examples","title":"Examples","text":"Example

      The example shows several calls to get_ref().

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON number\n    json value = 17;\n\n    // explicitly getting references\n    auto r1 = value.get_ref<const json::number_integer_t&>();\n    auto r2 = value.get_ref<json::number_integer_t&>();\n\n    // print the values\n    std::cout << r1 << ' ' << r2 << '\\n';\n\n    // incompatible type throws exception\n    try\n    {\n        auto r3 = value.get_ref<json::number_float_t&>();\n    }\n    catch (const json::type_error& ex)\n    {\n        std::cout << ex.what() << '\\n';\n    }\n}\n

      Output:

      17 17\n[json.exception.type_error.303] incompatible ReferenceType for get_ref, actual type is number\n
      "},{"location":"api/basic_json/get_ref/#see-also","title":"See also","text":"
      • get_ptr() get a pointer value
      "},{"location":"api/basic_json/get_ref/#version-history","title":"Version history","text":"
      • Added in version 1.1.0.
      • Extended to binary types in version 3.8.0.
      "},{"location":"api/basic_json/get_to/","title":"nlohmann::basic_json::get_to","text":"
      template<typename ValueType>\nValueType& get_to(ValueType& v) const noexcept(\n    noexcept(JSONSerializer<ValueType>::from_json(\n        std::declval<const basic_json_t&>(), v)));\n

      Explicit type conversion between the JSON value and a compatible value. The value is filled into the input parameter by calling the json_serializer<ValueType> from_json() method.

      The function is equivalent to executing

      ValueType v;\nJSONSerializer<ValueType>::from_json(*this, v);\n

      This overload is chosen if:

      • ValueType is not basic_json,
      • json_serializer<ValueType> has a from_json() method of the form void from_json(const basic_json&, ValueType&)
      "},{"location":"api/basic_json/get_to/#template-parameters","title":"Template parameters","text":"ValueType the value type to return"},{"location":"api/basic_json/get_to/#return-value","title":"Return value","text":"

      the input parameter, allowing chaining calls

      "},{"location":"api/basic_json/get_to/#exceptions","title":"Exceptions","text":"

      Depends on what json_serializer<ValueType> from_json() method throws

      "},{"location":"api/basic_json/get_to/#examples","title":"Examples","text":"Example

      The example below shows several conversions from JSON values to other types. There a few things to note: (1) Floating-point numbers can be converted to integers, (2) A JSON array can be converted to a standard std::vector<short>, (3) A JSON object can be converted to C++ associative containers such as #cpp std::unordered_map<std::string, json>.

      #include <iostream>\n#include <unordered_map>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON value with different types\n    json json_types =\n    {\n        {\"boolean\", true},\n        {\n            \"number\", {\n                {\"integer\", 42},\n                {\"floating-point\", 17.23}\n            }\n        },\n        {\"string\", \"Hello, world!\"},\n        {\"array\", {1, 2, 3, 4, 5}},\n        {\"null\", nullptr}\n    };\n\n    bool v1;\n    int v2;\n    short v3;\n    float v4;\n    int v5;\n    std::string v6;\n    std::vector<short> v7;\n    std::unordered_map<std::string, json> v8;\n\n    // use explicit conversions\n    json_types[\"boolean\"].get_to(v1);\n    json_types[\"number\"][\"integer\"].get_to(v2);\n    json_types[\"number\"][\"integer\"].get_to(v3);\n    json_types[\"number\"][\"floating-point\"].get_to(v4);\n    json_types[\"number\"][\"floating-point\"].get_to(v5);\n    json_types[\"string\"].get_to(v6);\n    json_types[\"array\"].get_to(v7);\n    json_types.get_to(v8);\n\n    // print the conversion results\n    std::cout << v1 << '\\n';\n    std::cout << v2 << ' ' << v3 << '\\n';\n    std::cout << v4 << ' ' << v5 << '\\n';\n    std::cout << v6 << '\\n';\n\n    for (auto i : v7)\n    {\n        std::cout << i << ' ';\n    }\n    std::cout << \"\\n\\n\";\n\n    for (auto i : v8)\n    {\n        std::cout << i.first << \": \" << i.second << '\\n';\n    }\n}\n

      Output:

      1\n42 42\n17.23 17\nHello, world!\n1 2 3 4 5 \n\nstring: \"Hello, world!\"\nnumber: {\"floating-point\":17.23,\"integer\":42}\nnull: null\nboolean: true\narray: [1,2,3,4,5]\n
      "},{"location":"api/basic_json/get_to/#version-history","title":"Version history","text":"
      • Since version 3.3.0.
      "},{"location":"api/basic_json/input_format_t/","title":"nlohmann::basic_json::input_format_t","text":"
      enum class input_format_t {\n    json,\n    cbor,\n    msgpack,\n    ubjson,\n    bson,\n    bjdata\n};\n

      This enumeration is used in the sax_parse function to choose the input format to parse:

      json JSON (JavaScript Object Notation) cbor CBOR (Concise Binary Object Representation) msgpack MessagePack ubjson UBJSON (Universal Binary JSON) bson BSON (Binary JSON) bjdata BJData (Binary JData)"},{"location":"api/basic_json/input_format_t/#examples","title":"Examples","text":"Example

      The example below shows how an input_format_t enum value is passed to sax_parse to set the input format to CBOR.

      #include <iostream>\n#include <iomanip>\n#include <sstream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector<std::string> events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t& s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t& val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t& val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t& val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string& last_token, const json::exception& ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // CBOR byte string\n    std::vector<std::uint8_t> vec = {{0x44, 0xcA, 0xfe, 0xba, 0xbe}};\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse CBOR\n    bool result = json::sax_parse(vec, &sec, json::input_format_t::cbor);\n\n    // output the recorded events\n    for (auto& event : sec.events)\n    {\n        std::cout << event << \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout << \"\\nresult: \" << std::boolalpha << result << std::endl;\n}\n

      Output:

      binary(val=[...])\n\nresult: true\n
      "},{"location":"api/basic_json/input_format_t/#version-history","title":"Version history","text":"
      • Added in version 3.2.0.
      "},{"location":"api/basic_json/insert/","title":"nlohmann::basic_json::insert","text":"
      // (1)\niterator insert(const_iterator pos, const basic_json& val);\niterator insert(const_iterator pos, basic_json&& val);\n\n// (2)\niterator insert(const_iterator pos, size_type cnt, const basic_json& val);\n\n// (3)\niterator insert(const_iterator pos, const_iterator first, const_iterator last);\n\n// (4)\niterator insert(const_iterator pos, initializer_list_t ilist);\n\n// (5)\nvoid insert(const_iterator first, const_iterator last);\n
      1. Inserts element val into array before iterator pos.
      2. Inserts cnt copies of val into array before iterator pos.
      3. Inserts elements from range [first, last) into array before iterator pos.
      4. Inserts elements from initializer list ilist into array before iterator pos.
      5. Inserts elements from range [first, last) into object.
      "},{"location":"api/basic_json/insert/#iterator-invalidation","title":"Iterator invalidation","text":"

      For all cases where an element is added to an array, a reallocation can happen, in which case all iterators (including the end() iterator) and all references to the elements are invalidated. Otherwise, only the end() iterator is invalidated. Also, any iterator or reference after the insertion point will point to the same index which is now a different value.

      For ordered_json, also adding an element to an object can yield a reallocation which again invalidates all iterators and all references. Also, any iterator or reference after the insertion point will point to the same index which is now a different value.

      "},{"location":"api/basic_json/insert/#parameters","title":"Parameters","text":"pos (in) iterator before which the content will be inserted; may be the end() iterator val (in) value to insert cnt (in) number of copies of val to insert first (in) begin of the range of elements to insert last (in) end of the range of elements to insert ilist (in) initializer list to insert the values from"},{"location":"api/basic_json/insert/#return-value","title":"Return value","text":"
      1. iterator pointing to the inserted val.
      2. iterator pointing to the first element inserted, or pos if cnt==0
      3. iterator pointing to the first element inserted, or pos if first==last
      4. iterator pointing to the first element inserted, or pos if ilist is empty
      5. (none)
      "},{"location":"api/basic_json/insert/#exception-safety","title":"Exception safety","text":"

      Strong exception safety: if an exception occurs, the original value stays intact.

      "},{"location":"api/basic_json/insert/#exceptions","title":"Exceptions","text":"
      1. The function can throw the following exceptions:
        • Throws type_error.309 if called on JSON values other than arrays; example: \"cannot use insert() with string\"
        • Throws invalid_iterator.202 if called on an iterator which does not belong to the current JSON value; example: \"iterator does not fit current value\"
      2. The function can throw the following exceptions:
        • Throws type_error.309 if called on JSON values other than arrays; example: \"cannot use insert() with string\"
        • Throws invalid_iterator.202 if called on an iterator which does not belong to the current JSON value; example: \"iterator does not fit current value\"
      3. The function can throw the following exceptions:
        • Throws type_error.309 if called on JSON values other than arrays; example: \"cannot use insert() with string\"
        • Throws invalid_iterator.202 if called on an iterator which does not belong to the current JSON value; example: \"iterator does not fit current value\"
        • Throws invalid_iterator.210 if first and last do not belong to the same JSON value; example: \"iterators do not fit\"
        • Throws invalid_iterator.211 if first or last are iterators into container for which insert is called; example: \"passed iterators may not belong to container\"
      4. The function can throw the following exceptions:
        • Throws type_error.309 if called on JSON values other than arrays; example: \"cannot use insert() with string\"
        • Throws invalid_iterator.202 if called on an iterator which does not belong to the current JSON value; example: \"iterator does not fit current value\"
      5. The function can throw the following exceptions:
        • Throws type_error.309 if called on JSON values other than objects; example: \"cannot use insert() with string\"
        • Throws invalid_iterator.202 if called on an iterator which does not belong to the current JSON value; example: \"iterator does not fit current value\"
        • Throws invalid_iterator.210 if first and last do not belong to the same JSON value; example: \"iterators do not fit\"
      "},{"location":"api/basic_json/insert/#complexity","title":"Complexity","text":"
      1. Constant plus linear in the distance between pos and end of the container.
      2. Linear in cnt plus linear in the distance between pos and end of the container.
      3. Linear in std::distance(first, last) plus linear in the distance between pos and end of the container.
      4. Linear in ilist.size() plus linear in the distance between pos and end of the container.
      5. Logarithmic: O(N*log(size() + N)), where N is the number of elements to insert.
      "},{"location":"api/basic_json/insert/#examples","title":"Examples","text":"Example (1): insert element into array

      The example shows how insert() is used.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON array\n    json v = {1, 2, 3, 4};\n\n    // insert number 10 before number 3\n    auto new_pos = v.insert(v.begin() + 2, 10);\n\n    // output new array and result of insert call\n    std::cout << *new_pos << '\\n';\n    std::cout << v << '\\n';\n}\n

      Output:

      10\n[1,2,10,3,4]\n
      Example (2): insert copies of element into array

      The example shows how insert() is used.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON array\n    json v = {1, 2, 3, 4};\n\n    // insert number 7 copies of number 7 before number 3\n    auto new_pos = v.insert(v.begin() + 2, 7, 7);\n\n    // output new array and result of insert call\n    std::cout << *new_pos << '\\n';\n    std::cout << v << '\\n';\n}\n

      Output:

      7\n[1,2,7,7,7,7,7,7,7,3,4]\n
      Example (3): insert range of elements into array

      The example shows how insert() is used.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON array\n    json v = {1, 2, 3, 4};\n\n    // create a JSON array to copy values from\n    json v2 = {\"one\", \"two\", \"three\", \"four\"};\n\n    // insert range from v2 before the end of array v\n    auto new_pos = v.insert(v.end(), v2.begin(), v2.end());\n\n    // output new array and result of insert call\n    std::cout << *new_pos << '\\n';\n    std::cout << v << '\\n';\n}\n

      Output:

      \"one\"\n[1,2,3,4,\"one\",\"two\",\"three\",\"four\"]\n
      Example (4): insert elements from initializer list into array

      The example shows how insert() is used.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON array\n    json v = {1, 2, 3, 4};\n\n    // insert range from v2 before the end of array v\n    auto new_pos = v.insert(v.end(), {7, 8, 9});\n\n    // output new array and result of insert call\n    std::cout << *new_pos << '\\n';\n    std::cout << v << '\\n';\n}\n

      Output:

      7\n[1,2,3,4,7,8,9]\n
      Example (5): insert range of elements into object

      The example shows how insert() is used.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create two JSON objects\n    json j1 = {{\"one\", \"eins\"}, {\"two\", \"zwei\"}};\n    json j2 = {{\"eleven\", \"elf\"}, {\"seventeen\", \"siebzehn\"}};\n\n    // output objects\n    std::cout << j1 << '\\n';\n    std::cout << j2 << '\\n';\n\n    // insert range from j2 to j1\n    j1.insert(j2.begin(), j2.end());\n\n    // output result of insert call\n    std::cout << j1 << '\\n';\n}\n

      Output:

      {\"one\":\"eins\",\"two\":\"zwei\"}\n{\"eleven\":\"elf\",\"seventeen\":\"siebzehn\"}\n{\"eleven\":\"elf\",\"one\":\"eins\",\"seventeen\":\"siebzehn\",\"two\":\"zwei\"}\n
      "},{"location":"api/basic_json/insert/#version-history","title":"Version history","text":"
      1. Added in version 1.0.0.
      2. Added in version 1.0.0.
      3. Added in version 1.0.0.
      4. Added in version 1.0.0.
      5. Added in version 3.0.0.
      "},{"location":"api/basic_json/invalid_iterator/","title":"nlohmann::basic_json::invalid_iterator","text":"
      class invalid_iterator : public exception;\n

      This exception is thrown if iterators passed to a library function do not match the expected semantics.

      Exceptions have ids 2xx (see list of iterator errors).

      classDiagram\n  direction LR\n\n    class std_exception [\"std::exception\"] {\n        <<interface>>\n    }\n\n    class json_exception [\"basic_json::exception\"] {\n        +const int id\n        +const char* what() const\n    }\n\n    class json_parse_error [\"basic_json::parse_error\"] {\n        +const std::size_t byte\n    }\n\n    class json_invalid_iterator [\"basic_json::invalid_iterator\"]\n    class json_type_error [\"basic_json::type_error\"]\n    class json_out_of_range [\"basic_json::out_of_range\"]\n    class json_other_error [\"basic_json::other_error\"]\n\n    std_exception <|-- json_exception\n    json_exception <|-- json_parse_error\n    json_exception <|-- json_invalid_iterator\n    json_exception <|-- json_type_error\n    json_exception <|-- json_out_of_range\n    json_exception <|-- json_other_error\n\n    style json_invalid_iterator fill:#CCCCFF
      "},{"location":"api/basic_json/invalid_iterator/#member-functions","title":"Member functions","text":"
      • what - returns explanatory string
      "},{"location":"api/basic_json/invalid_iterator/#member-variables","title":"Member variables","text":"
      • id - the id of the exception
      "},{"location":"api/basic_json/invalid_iterator/#examples","title":"Examples","text":"Example

      The following code shows how a invalid_iterator exception can be caught.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    try\n    {\n        // calling iterator::key() on non-object iterator\n        json j = \"string\";\n        json::iterator it = j.begin();\n        auto k = it.key();\n    }\n    catch (const json::invalid_iterator& e)\n    {\n        // output exception information\n        std::cout << \"message: \" << e.what() << '\\n'\n                  << \"exception id: \" << e.id << std::endl;\n    }\n}\n

      Output:

      message: [json.exception.invalid_iterator.207] cannot use key() for non-object iterators\nexception id: 207\n
      "},{"location":"api/basic_json/invalid_iterator/#see-also","title":"See also","text":"
      • List of iterator errors
      • parse_error for exceptions indicating a parse error
      • type_error for exceptions indicating executing a member function with a wrong type
      • out_of_range for exceptions indicating access out of the defined range
      • other_error for exceptions indicating other library errors
      "},{"location":"api/basic_json/invalid_iterator/#version-history","title":"Version history","text":"
      • Since version 3.0.0.
      "},{"location":"api/basic_json/is_array/","title":"nlohmann::basic_json::is_array","text":"
      constexpr bool is_array() const noexcept;\n

      This function returns true if and only if the JSON value is an array.

      "},{"location":"api/basic_json/is_array/#return-value","title":"Return value","text":"

      true if type is an array, false otherwise.

      "},{"location":"api/basic_json/is_array/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/is_array/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/is_array/#examples","title":"Examples","text":"Example

      The following code exemplifies is_array() for all JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_array()\n    std::cout << std::boolalpha;\n    std::cout << j_null.is_array() << '\\n';\n    std::cout << j_boolean.is_array() << '\\n';\n    std::cout << j_number_integer.is_array() << '\\n';\n    std::cout << j_number_unsigned_integer.is_array() << '\\n';\n    std::cout << j_number_float.is_array() << '\\n';\n    std::cout << j_object.is_array() << '\\n';\n    std::cout << j_array.is_array() << '\\n';\n    std::cout << j_string.is_array() << '\\n';\n    std::cout << j_binary.is_array() << '\\n';\n}\n

      Output:

      false\nfalse\nfalse\nfalse\nfalse\nfalse\ntrue\nfalse\nfalse\n
      "},{"location":"api/basic_json/is_array/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/is_binary/","title":"nlohmann::basic_json::is_binary","text":"
      constexpr bool is_binary() const noexcept;\n

      This function returns true if and only if the JSON value is binary array.

      "},{"location":"api/basic_json/is_binary/#return-value","title":"Return value","text":"

      true if type is binary, false otherwise.

      "},{"location":"api/basic_json/is_binary/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/is_binary/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/is_binary/#examples","title":"Examples","text":"Example

      The following code exemplifies is_binary() for all JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_binary()\n    std::cout << std::boolalpha;\n    std::cout << j_null.is_binary() << '\\n';\n    std::cout << j_boolean.is_binary() << '\\n';\n    std::cout << j_number_integer.is_binary() << '\\n';\n    std::cout << j_number_unsigned_integer.is_binary() << '\\n';\n    std::cout << j_number_float.is_binary() << '\\n';\n    std::cout << j_object.is_binary() << '\\n';\n    std::cout << j_array.is_binary() << '\\n';\n    std::cout << j_string.is_binary() << '\\n';\n    std::cout << j_binary.is_binary() << '\\n';\n}\n

      Output:

      false\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\ntrue\n
      "},{"location":"api/basic_json/is_binary/#version-history","title":"Version history","text":"
      • Added in version 3.8.0.
      "},{"location":"api/basic_json/is_boolean/","title":"nlohmann::basic_json::is_boolean","text":"
      constexpr bool is_boolean() const noexcept;\n

      This function returns true if and only if the JSON value is true or false.

      "},{"location":"api/basic_json/is_boolean/#return-value","title":"Return value","text":"

      true if type is boolean, false otherwise.

      "},{"location":"api/basic_json/is_boolean/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/is_boolean/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/is_boolean/#examples","title":"Examples","text":"Example

      The following code exemplifies is_boolean() for all JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_boolean()\n    std::cout << std::boolalpha;\n    std::cout << j_null.is_boolean() << '\\n';\n    std::cout << j_boolean.is_boolean() << '\\n';\n    std::cout << j_number_integer.is_boolean() << '\\n';\n    std::cout << j_number_unsigned_integer.is_boolean() << '\\n';\n    std::cout << j_number_float.is_boolean() << '\\n';\n    std::cout << j_object.is_boolean() << '\\n';\n    std::cout << j_array.is_boolean() << '\\n';\n    std::cout << j_string.is_boolean() << '\\n';\n    std::cout << j_binary.is_boolean() << '\\n';\n}\n

      Output:

      false\ntrue\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\n
      "},{"location":"api/basic_json/is_boolean/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/is_discarded/","title":"nlohmann::basic_json::is_discarded","text":"
      constexpr bool is_discarded() const noexcept;\n

      This function returns true for a JSON value if either:

      • the value was discarded during parsing with a callback function (see parser_callback_t), or
      • the value is the result of parsing invalid JSON with parameter allow_exceptions set to false; see parse for more information.
      "},{"location":"api/basic_json/is_discarded/#return-value","title":"Return value","text":"

      true if type is discarded, false otherwise.

      "},{"location":"api/basic_json/is_discarded/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/is_discarded/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/is_discarded/#notes","title":"Notes","text":"

      Comparisons

      Discarded values are never compared equal with operator==. That is, checking whether a JSON value j is discarded will only work via:

      j.is_discarded()\n

      because

      j == json::value_t::discarded\n

      will always be false.

      Removal during parsing with callback functions

      When a value is discarded by a callback function (see parser_callback_t) during parsing, then it is removed when it is part of a structured value. For instance, if the second value of an array is discarded, instead of [null, discarded, false], the array [null, false] is returned. Only if the top-level value is discarded, the return value of the parse call is discarded.

      This function will always be false for JSON values after parsing. That is, discarded values can only occur during parsing, but will be removed when inside a structured value or replaced by null in other cases.

      "},{"location":"api/basic_json/is_discarded/#examples","title":"Examples","text":"Example

      The following code exemplifies is_discarded() for all JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_discarded()\n    std::cout << std::boolalpha;\n    std::cout << j_null.is_discarded() << '\\n';\n    std::cout << j_boolean.is_discarded() << '\\n';\n    std::cout << j_number_integer.is_discarded() << '\\n';\n    std::cout << j_number_unsigned_integer.is_discarded() << '\\n';\n    std::cout << j_number_float.is_discarded() << '\\n';\n    std::cout << j_object.is_discarded() << '\\n';\n    std::cout << j_array.is_discarded() << '\\n';\n    std::cout << j_string.is_discarded() << '\\n';\n    std::cout << j_binary.is_discarded() << '\\n';\n}\n

      Output:

      false\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\n
      "},{"location":"api/basic_json/is_discarded/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/is_null/","title":"nlohmann::basic_json::is_null","text":"
      constexpr bool is_null() const noexcept;\n

      This function returns true if and only if the JSON value is null.

      "},{"location":"api/basic_json/is_null/#return-value","title":"Return value","text":"

      true if type is null, false otherwise.

      "},{"location":"api/basic_json/is_null/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/is_null/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/is_null/#examples","title":"Examples","text":"Example

      The following code exemplifies is_null() for all JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_null()\n    std::cout << std::boolalpha;\n    std::cout << j_null.is_null() << '\\n';\n    std::cout << j_boolean.is_null() << '\\n';\n    std::cout << j_number_integer.is_null() << '\\n';\n    std::cout << j_number_unsigned_integer.is_null() << '\\n';\n    std::cout << j_number_float.is_null() << '\\n';\n    std::cout << j_object.is_null() << '\\n';\n    std::cout << j_array.is_null() << '\\n';\n    std::cout << j_string.is_null() << '\\n';\n    std::cout << j_binary.is_null() << '\\n';\n}\n

      Output:

      true\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\n
      "},{"location":"api/basic_json/is_null/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/is_number/","title":"nlohmann::basic_json::is_number","text":"
      constexpr bool is_number() const noexcept;\n

      This function returns true if and only if the JSON value is a number. This includes both integer (signed and unsigned) and floating-point values.

      "},{"location":"api/basic_json/is_number/#return-value","title":"Return value","text":"

      true if type is number (regardless whether integer, unsigned integer or floating-type), false otherwise.

      "},{"location":"api/basic_json/is_number/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/is_number/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/is_number/#possible-implementation","title":"Possible implementation","text":"
      constexpr bool is_number() const noexcept\n{\n    return is_number_integer() || is_number_float();\n}\n
      "},{"location":"api/basic_json/is_number/#examples","title":"Examples","text":"Example

      The following code exemplifies is_number() for all JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_number()\n    std::cout << std::boolalpha;\n    std::cout << j_null.is_number() << '\\n';\n    std::cout << j_boolean.is_number() << '\\n';\n    std::cout << j_number_integer.is_number() << '\\n';\n    std::cout << j_number_unsigned_integer.is_number() << '\\n';\n    std::cout << j_number_float.is_number() << '\\n';\n    std::cout << j_object.is_number() << '\\n';\n    std::cout << j_array.is_number() << '\\n';\n    std::cout << j_string.is_number() << '\\n';\n    std::cout << j_binary.is_number() << '\\n';\n}\n

      Output:

      false\nfalse\ntrue\ntrue\ntrue\nfalse\nfalse\nfalse\nfalse\n
      "},{"location":"api/basic_json/is_number/#see-also","title":"See also","text":"
      • is_number_integer() check if value is an integer or unsigned integer number
      • is_number_unsigned() check if value is an unsigned integer number
      • is_number_float() check if value is a floating-point number
      "},{"location":"api/basic_json/is_number/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      • Extended to also return true for unsigned integers in 2.0.0.
      "},{"location":"api/basic_json/is_number_float/","title":"nlohmann::basic_json::is_number_float","text":"
      constexpr bool is_number_float() const noexcept;\n

      This function returns true if and only if the JSON value is a floating-point number. This excludes signed and unsigned integer values.

      "},{"location":"api/basic_json/is_number_float/#return-value","title":"Return value","text":"

      true if type is a floating-point number, false otherwise.

      "},{"location":"api/basic_json/is_number_float/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/is_number_float/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/is_number_float/#examples","title":"Examples","text":"Example

      The following code exemplifies is_number_float() for all JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_number_float()\n    std::cout << std::boolalpha;\n    std::cout << j_null.is_number_float() << '\\n';\n    std::cout << j_boolean.is_number_float() << '\\n';\n    std::cout << j_number_integer.is_number_float() << '\\n';\n    std::cout << j_number_unsigned_integer.is_number_float() << '\\n';\n    std::cout << j_number_float.is_number_float() << '\\n';\n    std::cout << j_object.is_number_float() << '\\n';\n    std::cout << j_array.is_number_float() << '\\n';\n    std::cout << j_string.is_number_float() << '\\n';\n    std::cout << j_binary.is_number_float() << '\\n';\n}\n

      Output:

      false\nfalse\nfalse\nfalse\ntrue\nfalse\nfalse\nfalse\nfalse\n
      "},{"location":"api/basic_json/is_number_float/#see-also","title":"See also","text":"
      • is_number() check if value is a number
      • is_number_integer() check if value is an integer or unsigned integer number
      • is_number_unsigned() check if value is an unsigned integer number
      "},{"location":"api/basic_json/is_number_float/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/is_number_integer/","title":"nlohmann::basic_json::is_number_integer","text":"
      constexpr bool is_number_integer() const noexcept;\n

      This function returns true if and only if the JSON value is a signed or unsigned integer number. This excludes floating-point values.

      "},{"location":"api/basic_json/is_number_integer/#return-value","title":"Return value","text":"

      true if type is an integer or unsigned integer number, false otherwise.

      "},{"location":"api/basic_json/is_number_integer/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/is_number_integer/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/is_number_integer/#examples","title":"Examples","text":"Example

      The following code exemplifies is_number_integer() for all JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_number_integer()\n    std::cout << std::boolalpha;\n    std::cout << j_null.is_number_integer() << '\\n';\n    std::cout << j_boolean.is_number_integer() << '\\n';\n    std::cout << j_number_integer.is_number_integer() << '\\n';\n    std::cout << j_number_unsigned_integer.is_number_integer() << '\\n';\n    std::cout << j_number_float.is_number_integer() << '\\n';\n    std::cout << j_object.is_number_integer() << '\\n';\n    std::cout << j_array.is_number_integer() << '\\n';\n    std::cout << j_string.is_number_integer() << '\\n';\n    std::cout << j_binary.is_number_integer() << '\\n';\n}\n

      Output:

      false\nfalse\ntrue\ntrue\nfalse\nfalse\nfalse\nfalse\nfalse\n
      "},{"location":"api/basic_json/is_number_integer/#see-also","title":"See also","text":"
      • is_number() check if value is a number
      • is_number_unsigned() check if value is an unsigned integer number
      • is_number_float() check if value is a floating-point number
      "},{"location":"api/basic_json/is_number_integer/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      • Extended to also return true for unsigned integers in 2.0.0.
      "},{"location":"api/basic_json/is_number_unsigned/","title":"nlohmann::basic_json::is_number_unsigned","text":"
      constexpr bool is_number_unsigned() const noexcept;\n

      This function returns true if and only if the JSON value is an unsigned integer number. This excludes floating-point and signed integer values.

      "},{"location":"api/basic_json/is_number_unsigned/#return-value","title":"Return value","text":"

      true if type is an unsigned integer number, false otherwise.

      "},{"location":"api/basic_json/is_number_unsigned/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/is_number_unsigned/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/is_number_unsigned/#examples","title":"Examples","text":"Example

      The following code exemplifies is_number_unsigned() for all JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_number_unsigned()\n    std::cout << std::boolalpha;\n    std::cout << j_null.is_number_unsigned() << '\\n';\n    std::cout << j_boolean.is_number_unsigned() << '\\n';\n    std::cout << j_number_integer.is_number_unsigned() << '\\n';\n    std::cout << j_number_unsigned_integer.is_number_unsigned() << '\\n';\n    std::cout << j_number_float.is_number_unsigned() << '\\n';\n    std::cout << j_object.is_number_unsigned() << '\\n';\n    std::cout << j_array.is_number_unsigned() << '\\n';\n    std::cout << j_string.is_number_unsigned() << '\\n';\n    std::cout << j_binary.is_number_unsigned() << '\\n';\n}\n

      Output:

      false\nfalse\nfalse\ntrue\nfalse\nfalse\nfalse\nfalse\nfalse\n
      "},{"location":"api/basic_json/is_number_unsigned/#see-also","title":"See also","text":"
      • is_number() check if value is a number
      • is_number_integer() check if value is an integer or unsigned integer number
      • is_number_float() check if value is a floating-point number
      "},{"location":"api/basic_json/is_number_unsigned/#version-history","title":"Version history","text":"
      • Added in version 2.0.0.
      "},{"location":"api/basic_json/is_object/","title":"nlohmann::basic_json::is_object","text":"
      constexpr bool is_object() const noexcept;\n

      This function returns true if and only if the JSON value is an object.

      "},{"location":"api/basic_json/is_object/#return-value","title":"Return value","text":"

      true if type is an object, false otherwise.

      "},{"location":"api/basic_json/is_object/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/is_object/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/is_object/#examples","title":"Examples","text":"Example

      The following code exemplifies is_object() for all JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_object()\n    std::cout << std::boolalpha;\n    std::cout << j_null.is_object() << '\\n';\n    std::cout << j_boolean.is_object() << '\\n';\n    std::cout << j_number_integer.is_object() << '\\n';\n    std::cout << j_number_unsigned_integer.is_object() << '\\n';\n    std::cout << j_number_float.is_object() << '\\n';\n    std::cout << j_object.is_object() << '\\n';\n    std::cout << j_array.is_object() << '\\n';\n    std::cout << j_string.is_object() << '\\n';\n    std::cout << j_binary.is_object() << '\\n';\n}\n

      Output:

      false\nfalse\nfalse\nfalse\nfalse\ntrue\nfalse\nfalse\nfalse\n
      "},{"location":"api/basic_json/is_object/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/is_primitive/","title":"nlohmann::basic_json::is_primitive","text":"
      constexpr bool is_primitive() const noexcept;\n

      This function returns true if and only if the JSON type is primitive (string, number, boolean, null, binary).

      "},{"location":"api/basic_json/is_primitive/#return-value","title":"Return value","text":"

      true if type is primitive (string, number, boolean, null, or binary), false otherwise.

      "},{"location":"api/basic_json/is_primitive/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/is_primitive/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/is_primitive/#possible-implementation","title":"Possible implementation","text":"
      constexpr bool is_primitive() const noexcept\n{\n    return is_null() || is_string() || is_boolean() || is_number() || is_binary();\n}\n
      "},{"location":"api/basic_json/is_primitive/#notes","title":"Notes","text":"

      The term primitive stems from RFC 8259:

      JSON can represent four primitive types (strings, numbers, booleans, and null) and two structured types (objects and arrays).

      This library extends primitive types to binary types, because binary types are roughly comparable to strings. Hence, is_primitive() returns true for binary values.

      "},{"location":"api/basic_json/is_primitive/#examples","title":"Examples","text":"Example

      The following code exemplifies is_primitive() for all JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_primitive()\n    std::cout << std::boolalpha;\n    std::cout << j_null.is_primitive() << '\\n';\n    std::cout << j_boolean.is_primitive() << '\\n';\n    std::cout << j_number_integer.is_primitive() << '\\n';\n    std::cout << j_number_unsigned_integer.is_primitive() << '\\n';\n    std::cout << j_number_float.is_primitive() << '\\n';\n    std::cout << j_object.is_primitive() << '\\n';\n    std::cout << j_array.is_primitive() << '\\n';\n    std::cout << j_string.is_primitive() << '\\n';\n    std::cout << j_binary.is_primitive() << '\\n';\n}\n

      Output:

      true\ntrue\ntrue\ntrue\ntrue\nfalse\nfalse\ntrue\ntrue\n
      "},{"location":"api/basic_json/is_primitive/#see-also","title":"See also","text":"
      • is_structured() returns whether JSON value is structured
      • is_null() returns whether JSON value is null
      • is_string() returns whether JSON value is a string
      • is_boolean() returns whether JSON value is a boolean
      • is_number() returns whether JSON value is a number
      • is_binary() returns whether JSON value is a binary array
      "},{"location":"api/basic_json/is_primitive/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      • Extended to return true for binary types in version 3.8.0.
      "},{"location":"api/basic_json/is_string/","title":"nlohmann::basic_json::is_string","text":"
      constexpr bool is_string() const noexcept;\n

      This function returns true if and only if the JSON value is a string.

      "},{"location":"api/basic_json/is_string/#return-value","title":"Return value","text":"

      true if type is a string, false otherwise.

      "},{"location":"api/basic_json/is_string/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/is_string/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/is_string/#examples","title":"Examples","text":"Example

      The following code exemplifies is_string() for all JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_string()\n    std::cout << std::boolalpha;\n    std::cout << j_null.is_string() << '\\n';\n    std::cout << j_boolean.is_string() << '\\n';\n    std::cout << j_number_integer.is_string() << '\\n';\n    std::cout << j_number_unsigned_integer.is_string() << '\\n';\n    std::cout << j_number_float.is_string() << '\\n';\n    std::cout << j_object.is_string() << '\\n';\n    std::cout << j_array.is_string() << '\\n';\n    std::cout << j_string.is_string() << '\\n';\n    std::cout << j_binary.is_string() << '\\n';\n}\n

      Output:

      false\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\ntrue\nfalse\n
      "},{"location":"api/basic_json/is_string/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/is_structured/","title":"nlohmann::basic_json::is_structured","text":"
      constexpr bool is_structured() const noexcept;\n

      This function returns true if and only if the JSON type is structured (array or object).

      "},{"location":"api/basic_json/is_structured/#return-value","title":"Return value","text":"

      true if type is structured (array or object), false otherwise.

      "},{"location":"api/basic_json/is_structured/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/is_structured/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/is_structured/#possible-implementation","title":"Possible implementation","text":"
      constexpr bool is_structured() const noexcept\n{\n    return is_array() || is_object();\n}\n
      "},{"location":"api/basic_json/is_structured/#notes","title":"Notes","text":"

      The term structured stems from RFC 8259:

      JSON can represent four primitive types (strings, numbers, booleans, and null) and two structured types (objects and arrays).

      Note that though strings are containers in C++, they are treated as primitive values in JSON.

      "},{"location":"api/basic_json/is_structured/#examples","title":"Examples","text":"Example

      The following code exemplifies is_structured() for all JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_structured()\n    std::cout << std::boolalpha;\n    std::cout << j_null.is_structured() << '\\n';\n    std::cout << j_boolean.is_structured() << '\\n';\n    std::cout << j_number_integer.is_structured() << '\\n';\n    std::cout << j_number_unsigned_integer.is_structured() << '\\n';\n    std::cout << j_number_float.is_structured() << '\\n';\n    std::cout << j_object.is_structured() << '\\n';\n    std::cout << j_array.is_structured() << '\\n';\n    std::cout << j_string.is_structured() << '\\n';\n    std::cout << j_binary.is_structured() << '\\n';\n}\n

      Output:

      false\nfalse\nfalse\nfalse\nfalse\ntrue\ntrue\nfalse\nfalse\n
      "},{"location":"api/basic_json/is_structured/#see-also","title":"See also","text":"
      • is_primitive() returns whether JSON value is primitive
      • is_array() returns whether value is an array
      • is_object() returns whether value is an object
      "},{"location":"api/basic_json/is_structured/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/items/","title":"nlohmann::basic_json::items","text":"
      iteration_proxy<iterator> items() noexcept;\niteration_proxy<const_iterator> items() const noexcept;\n

      This function allows accessing iterator::key() and iterator::value() during range-based for loops. In these loops, a reference to the JSON values is returned, so there is no access to the underlying iterator.

      For loop without items() function:

      for (auto it = j_object.begin(); it != j_object.end(); ++it)\n{\n    std::cout << \"key: \" << it.key() << \", value:\" << it.value() << '\\n';\n}\n

      Range-based for loop without items() function:

      for (auto it : j_object)\n{\n    // \"it\" is of type json::reference and has no key() member\n    std::cout << \"value: \" << it << '\\n';\n}\n

      Range-based for loop with items() function:

      for (auto& el : j_object.items())\n{\n    std::cout << \"key: \" << el.key() << \", value:\" << el.value() << '\\n';\n}\n

      The items() function also allows using structured bindings (C++17):

      for (auto& [key, val] : j_object.items())\n{\n    std::cout << \"key: \" << key << \", value:\" << val << '\\n';\n}\n
      "},{"location":"api/basic_json/items/#return-value","title":"Return value","text":"

      iteration proxy object wrapping the current value with an interface to use in range-based for loops

      "},{"location":"api/basic_json/items/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

      "},{"location":"api/basic_json/items/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/items/#notes","title":"Notes","text":"

      When iterating over an array, key() will return the index of the element as string (see example). For primitive types (e.g., numbers), key() returns an empty string.

      Lifetime issues

      Using items() on temporary objects is dangerous. Make sure the object's lifetime exceeds the iteration. See #2040 for more information.

      "},{"location":"api/basic_json/items/#examples","title":"Examples","text":"Example

      The following code shows an example for items().

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n\n    // example for an object\n    for (auto& x : j_object.items())\n    {\n        std::cout << \"key: \" << x.key() << \", value: \" << x.value() << '\\n';\n    }\n\n    // example for an array\n    for (auto& x : j_array.items())\n    {\n        std::cout << \"key: \" << x.key() << \", value: \" << x.value() << '\\n';\n    }\n}\n

      Output:

      key: one, value: 1\nkey: two, value: 2\nkey: 0, value: 1\nkey: 1, value: 2\nkey: 2, value: 4\nkey: 3, value: 8\nkey: 4, value: 16\n
      "},{"location":"api/basic_json/items/#version-history","title":"Version history","text":"
      • Added iterator_wrapper in version 3.0.0.
      • Added items and deprecated iterator_wrapper in version 3.1.0.
      • Added structured binding support in version 3.5.0.

      Deprecation

      This function replaces the static function iterator_wrapper which was introduced in version 1.0.0, but has been deprecated in version 3.1.0. Function iterator_wrapper will be removed in version 4.0.0. Please replace all occurrences of iterator_wrapper(j) with j.items().

      You should be warned by your compiler with a -Wdeprecated-declarations warning if you are using a deprecated function.

      "},{"location":"api/basic_json/json_base_class_t/","title":"nlohmann::basic_json::json_base_class_t","text":"
      using json_base_class_t = detail::json_base_class<CustomBaseClass>;\n

      The base class used to inject custom functionality into each instance of basic_json. Examples of such functionality might be metadata, additional member functions (e.g., visitors), or other application-specific code.

      "},{"location":"api/basic_json/json_base_class_t/#template-parameters","title":"Template parameters","text":"CustomBaseClass the base class to be added to basic_json"},{"location":"api/basic_json/json_base_class_t/#notes","title":"Notes","text":""},{"location":"api/basic_json/json_base_class_t/#default-type","title":"Default type","text":"

      The default value for CustomBaseClass is void. In this case an empty base class is used and no additional functionality is injected.

      "},{"location":"api/basic_json/json_base_class_t/#limitations","title":"Limitations","text":"

      The type CustomBaseClass has to be a default-constructible class. basic_json only supports copy/move construction/assignment if CustomBaseClass does so as well.

      "},{"location":"api/basic_json/json_base_class_t/#examples","title":"Examples","text":"Example

      The following code shows how to inject custom data and methods for each node.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nclass visitor_adaptor_with_metadata\n{\n  public:\n    template <class Fnc>\n    void visit(const Fnc& fnc) const;\n\n    int metadata = 42;\n  private:\n    template <class Ptr, class Fnc>\n    void do_visit(const Ptr& ptr, const Fnc& fnc) const;\n};\n\nusing json = nlohmann::basic_json <\n             std::map,\n             std::vector,\n             std::string,\n             bool,\n             std::int64_t,\n             std::uint64_t,\n             double,\n             std::allocator,\n             nlohmann::adl_serializer,\n             std::vector<std::uint8_t>,\n             visitor_adaptor_with_metadata\n             >;\n\ntemplate <class Fnc>\nvoid visitor_adaptor_with_metadata::visit(const Fnc& fnc) const\n{\n    do_visit(json::json_pointer{}, fnc);\n}\n\ntemplate <class Ptr, class Fnc>\nvoid visitor_adaptor_with_metadata::do_visit(const Ptr& ptr, const Fnc& fnc) const\n{\n    using value_t = nlohmann::detail::value_t;\n    const json& j = *static_cast<const json*>(this);\n    switch (j.type())\n    {\n        case value_t::object:\n            fnc(ptr, j);\n            for (const auto& entry : j.items())\n            {\n                entry.value().do_visit(ptr / entry.key(), fnc);\n            }\n            break;\n        case value_t::array:\n            fnc(ptr, j);\n            for (std::size_t i = 0; i < j.size(); ++i)\n            {\n                j.at(i).do_visit(ptr / std::to_string(i), fnc);\n            }\n            break;\n        case value_t::null:\n        case value_t::string:\n        case value_t::boolean:\n        case value_t::number_integer:\n        case value_t::number_unsigned:\n        case value_t::number_float:\n        case value_t::binary:\n            fnc(ptr, j);\n            break;\n        case value_t::discarded:\n        default:\n            break;\n    }\n}\n\nint main()\n{\n    // create a json object\n    json j;\n    j[\"null\"];\n    j[\"object\"][\"uint\"] = 1U;\n    j[\"object\"].metadata = 21;\n\n    // visit and output\n    j.visit(\n        [&](const json::json_pointer & p,\n            const json & j)\n    {\n        std::cout << (p.empty() ? std::string{\"/\"} : p.to_string())\n                  << \" - metadata = \" << j.metadata << \" -> \" << j.dump() << '\\n';\n    });\n}\n

      Output:

      / - metadata = 42 -> {\"null\":null,\"object\":{\"uint\":1}}\n/null - metadata = 42 -> null\n/object - metadata = 21 -> {\"uint\":1}\n/object/uint - metadata = 42 -> 1\n
      "},{"location":"api/basic_json/json_base_class_t/#version-history","title":"Version history","text":"
      • Added in version 3.12.0.
      "},{"location":"api/basic_json/json_serializer/","title":"nlohmann::basic_json::json_serializer","text":"
      template<typename T, typename SFINAE>\nusing json_serializer = JSONSerializer<T, SFINAE>;\n
      "},{"location":"api/basic_json/json_serializer/#template-parameters","title":"Template parameters","text":"T type to convert; will be used in the to_json/from_json functions SFINAE type to add compile type checks via SFINAE; usually void"},{"location":"api/basic_json/json_serializer/#notes","title":"Notes","text":""},{"location":"api/basic_json/json_serializer/#default-type","title":"Default type","text":"

      The default values for json_serializer is adl_serializer.

      "},{"location":"api/basic_json/json_serializer/#examples","title":"Examples","text":"Example

      The example below shows how a conversion of a non-default-constructible type is implemented via a specialization of the adl_serializer.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nnamespace ns\n{\n// a simple struct to model a person (not default constructible)\nstruct person\n{\n    person(std::string n, std::string a, int aa)\n        : name(std::move(n)), address(std::move(a)), age(aa)\n    {}\n\n    std::string name;\n    std::string address;\n    int age;\n};\n} // namespace ns\n\nnamespace nlohmann\n{\ntemplate <>\nstruct adl_serializer<ns::person>\n{\n    static ns::person from_json(const json& j)\n    {\n        return {j.at(\"name\"), j.at(\"address\"), j.at(\"age\")};\n    }\n\n    // Here's the catch! You must provide a to_json method! Otherwise, you\n    // will not be able to convert person to json, since you fully\n    // specialized adl_serializer on that type\n    static void to_json(json& j, ns::person p)\n    {\n        j[\"name\"] = p.name;\n        j[\"address\"] = p.address;\n        j[\"age\"] = p.age;\n    }\n};\n} // namespace nlohmann\n\nint main()\n{\n    json j;\n    j[\"name\"] = \"Ned Flanders\";\n    j[\"address\"] = \"744 Evergreen Terrace\";\n    j[\"age\"] = 60;\n\n    auto p = j.template get<ns::person>();\n\n    std::cout << p.name << \" (\" << p.age << \") lives in \" << p.address << std::endl;\n}\n

      Output:

      Ned Flanders (60) lives in 744 Evergreen Terrace\n
      "},{"location":"api/basic_json/json_serializer/#version-history","title":"Version history","text":"
      • Since version 2.0.0.
      "},{"location":"api/basic_json/max_size/","title":"nlohmann::basic_json::max_size","text":"
      size_type max_size() const noexcept;\n

      Returns the maximum number of elements a JSON value is able to hold due to system or library implementation limitations, i.e. std::distance(begin(), end()) for the JSON value.

      "},{"location":"api/basic_json/max_size/#return-value","title":"Return value","text":"

      The return value depends on the different types and is defined as follows:

      Value type return value null 0 (same as size()) boolean 1 (same as size()) string 1 (same as size()) number 1 (same as size()) binary 1 (same as size()) object result of function object_t::max_size() array result of function array_t::max_size()"},{"location":"api/basic_json/max_size/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this function never throws exceptions.

      "},{"location":"api/basic_json/max_size/#complexity","title":"Complexity","text":"

      Constant, as long as array_t and object_t satisfy the Container concept; that is, their max_size() functions have constant complexity.

      "},{"location":"api/basic_json/max_size/#notes","title":"Notes","text":"

      This function does not return the maximal length of a string stored as JSON value -- it returns the maximal number of string elements the JSON value can store which is 1.

      "},{"location":"api/basic_json/max_size/#examples","title":"Examples","text":"Example

      The following code calls max_size() on the different value types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n\n    // call max_size()\n    std::cout << j_null.max_size() << '\\n';\n    std::cout << j_boolean.max_size() << '\\n';\n    std::cout << j_number_integer.max_size() << '\\n';\n    std::cout << j_number_float.max_size() << '\\n';\n    std::cout << j_object.max_size() << '\\n';\n    std::cout << j_array.max_size() << '\\n';\n    std::cout << j_string.max_size() << '\\n';\n}\n

      Output:

      0\n1\n1\n1\n115292150460684697\n576460752303423487\n1\n

      Note the output is platform-dependent.

      "},{"location":"api/basic_json/max_size/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      • Extended to return 1 for binary types in version 3.8.0.
      "},{"location":"api/basic_json/merge_patch/","title":"nlohmann::basic_json::merge_patch","text":"
      void merge_patch(const basic_json& apply_patch);\n

      The merge patch format is primarily intended for use with the HTTP PATCH method as a means of describing a set of modifications to a target resource's content. This function applies a merge patch to the current JSON value.

      The function implements the following algorithm from Section 2 of RFC 7396 (JSON Merge Patch):

      define MergePatch(Target, Patch):\n  if Patch is an Object:\n    if Target is not an Object:\n      Target = {} // Ignore the contents and set it to an empty Object\n    for each Name/Value pair in Patch:\n      if Value is null:\n        if Name exists in Target:\n          remove the Name/Value pair from Target\n      else:\n        Target[Name] = MergePatch(Target[Name], Value)\n    return Target\n  else:\n    return Patch\n

      Thereby, Target is the current object; that is, the patch is applied to the current value.

      "},{"location":"api/basic_json/merge_patch/#parameters","title":"Parameters","text":"apply_patch (in) the patch to apply"},{"location":"api/basic_json/merge_patch/#complexity","title":"Complexity","text":"

      Linear in the lengths of apply_patch.

      "},{"location":"api/basic_json/merge_patch/#examples","title":"Examples","text":"Example

      The following code shows how a JSON Merge Patch is applied to a JSON document.

      #include <iostream>\n#include <nlohmann/json.hpp>\n#include <iomanip> // for std::setw\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // the original document\n    json document = R\"({\n                \"title\": \"Goodbye!\",\n                \"author\": {\n                    \"givenName\": \"John\",\n                    \"familyName\": \"Doe\"\n                },\n                \"tags\": [\n                    \"example\",\n                    \"sample\"\n                ],\n                \"content\": \"This will be unchanged\"\n            })\"_json;\n\n    // the patch\n    json patch = R\"({\n                \"title\": \"Hello!\",\n                \"phoneNumber\": \"+01-123-456-7890\",\n                \"author\": {\n                    \"familyName\": null\n                },\n                \"tags\": [\n                    \"example\"\n                ]\n            })\"_json;\n\n    // apply the patch\n    document.merge_patch(patch);\n\n    // output original and patched document\n    std::cout << std::setw(4) << document << std::endl;\n}\n

      Output:

      {\n    \"author\": {\n        \"givenName\": \"John\"\n    },\n    \"content\": \"This will be unchanged\",\n    \"phoneNumber\": \"+01-123-456-7890\",\n    \"tags\": [\n        \"example\"\n    ],\n    \"title\": \"Hello!\"\n}\n
      "},{"location":"api/basic_json/merge_patch/#see-also","title":"See also","text":"
      • RFC 7396 (JSON Merge Patch)
      • patch apply a JSON patch
      "},{"location":"api/basic_json/merge_patch/#version-history","title":"Version history","text":"
      • Added in version 3.0.0.
      "},{"location":"api/basic_json/meta/","title":"nlohmann::basic_json::meta","text":"
      static basic_json meta();\n

      This function returns a JSON object with information about the library, including the version number and information on the platform and compiler.

      "},{"location":"api/basic_json/meta/#return-value","title":"Return value","text":"

      JSON object holding version information

      key description compiler Information on the used compiler. It is an object with the following keys: c++ (the used C++ standard), family (the compiler family; possible values are clang, icc, gcc, ilecpp, msvc, pgcpp, sunpro, and unknown), and version (the compiler version). copyright The copyright line for the library as string. name The name of the library as string. platform The used platform as string. Possible values are win32, linux, apple, unix, and unknown. url The URL of the project as string. version The version of the library. It is an object with the following keys: major, minor, and patch as defined by Semantic Versioning, and string (the version string)."},{"location":"api/basic_json/meta/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes to any JSON value.

      "},{"location":"api/basic_json/meta/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/meta/#examples","title":"Examples","text":"Example

      The following code shows an example output of the meta() function.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // call meta()\n    std::cout << std::setw(4) << json::meta() << '\\n';\n}\n

      Output:

      {\n    \"compiler\": {\n        \"c++\": \"201103\",\n        \"family\": \"gcc\",\n        \"version\": \"12.3.0\"\n    },\n    \"copyright\": \"(C) 2013-2022 Niels Lohmann\",\n    \"name\": \"JSON for Modern C++\",\n    \"platform\": \"apple\",\n    \"url\": \"https://github.com/nlohmann/json\",\n    \"version\": {\n        \"major\": 3,\n        \"minor\": 11,\n        \"patch\": 3,\n        \"string\": \"3.11.3\"\n    }\n}\n

      Note the output is platform-dependent.

      "},{"location":"api/basic_json/meta/#see-also","title":"See also","text":"
      • NLOHMANN_JSON_VERSION_MAJOR/NLOHMANN_JSON_VERSION_MINOR/NLOHMANN_JSON_VERSION_PATCH - library version information
      "},{"location":"api/basic_json/meta/#version-history","title":"Version history","text":"
      • Added in version 2.1.0.
      "},{"location":"api/basic_json/number_float_t/","title":"nlohmann::basic_json::number_float_t","text":"
      using number_float_t = NumberFloatType;\n

      The type used to store JSON numbers (floating-point).

      RFC 8259 describes numbers as follows:

      The representation of numbers is similar to that used in most programming languages. A number is represented in base 10 using decimal digits. It contains an integer component that may be prefixed with an optional minus sign, which may be followed by a fraction part and/or an exponent part. Leading zeros are not allowed. (...) Numeric values that cannot be represented in the grammar below (such as Infinity and NaN) are not permitted.

      This description includes both integer and floating-point numbers. However, C++ allows more precise storage if it is known whether the number is a signed integer, an unsigned integer or a floating-point number. Therefore, three different types, number_integer_t, number_unsigned_t and number_float_t are used.

      To store floating-point numbers in C++, a type is defined by the template parameter NumberFloatType which chooses the type to use.

      "},{"location":"api/basic_json/number_float_t/#notes","title":"Notes","text":""},{"location":"api/basic_json/number_float_t/#default-type","title":"Default type","text":"

      With the default values for NumberFloatType (double), the default value for number_float_t is double.

      "},{"location":"api/basic_json/number_float_t/#default-behavior","title":"Default behavior","text":"
      • The restrictions about leading zeros is not enforced in C++. Instead, leading zeros in floating-point literals will be ignored. Internally, the value will be stored as decimal number. For instance, the C++ floating-point literal 01.2 will be serialized to 1.2. During deserialization, leading zeros yield an error.
      • Not-a-number (NaN) values will be serialized to null.
      "},{"location":"api/basic_json/number_float_t/#limits","title":"Limits","text":"

      RFC 8259 states:

      This specification allows implementations to set limits on the range and precision of numbers accepted. Since software that implements IEEE 754-2008 binary64 (double precision) numbers is generally available and widely used, good interoperability can be achieved by implementations that expect no more precision or range than these provide, in the sense that implementations will approximate JSON numbers within the expected precision.

      This implementation does exactly follow this approach, as it uses double precision floating-point numbers. Note values smaller than -1.79769313486232e+308 and values greater than 1.79769313486232e+308 will be stored as NaN internally and be serialized to null.

      "},{"location":"api/basic_json/number_float_t/#storage","title":"Storage","text":"

      Floating-point number values are stored directly inside a basic_json type.

      "},{"location":"api/basic_json/number_float_t/#examples","title":"Examples","text":"Example

      The following code shows that number_float_t is by default, a typedef to double.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout << std::boolalpha << std::is_same<double, json::number_float_t>::value << std::endl;\n}\n

      Output:

      true\n
      "},{"location":"api/basic_json/number_float_t/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/number_integer_t/","title":"nlohmann::basic_json::number_integer_t","text":"
      using number_integer_t = NumberIntegerType;\n

      The type used to store JSON numbers (integers).

      RFC 8259 describes numbers as follows:

      The representation of numbers is similar to that used in most programming languages. A number is represented in base 10 using decimal digits. It contains an integer component that may be prefixed with an optional minus sign, which may be followed by a fraction part and/or an exponent part. Leading zeros are not allowed. (...) Numeric values that cannot be represented in the grammar below (such as Infinity and NaN) are not permitted.

      This description includes both integer and floating-point numbers. However, C++ allows more precise storage if it is known whether the number is a signed integer, an unsigned integer or a floating-point number. Therefore, three different types, number_integer_t, number_unsigned_t and number_float_t are used.

      To store integer numbers in C++, a type is defined by the template parameter NumberIntegerType which chooses the type to use.

      "},{"location":"api/basic_json/number_integer_t/#notes","title":"Notes","text":""},{"location":"api/basic_json/number_integer_t/#default-type","title":"Default type","text":"

      With the default values for NumberIntegerType (std::int64_t), the default value for number_integer_t is std::int64_t.

      "},{"location":"api/basic_json/number_integer_t/#default-behavior","title":"Default behavior","text":"
      • The restrictions about leading zeros is not enforced in C++. Instead, leading zeros in integer literals lead to an interpretation as octal number. Internally, the value will be stored as decimal number. For instance, the C++ integer literal 010 will be serialized to 8. During deserialization, leading zeros yield an error.
      • Not-a-number (NaN) values will be serialized to null.
      "},{"location":"api/basic_json/number_integer_t/#limits","title":"Limits","text":"

      RFC 8259 specifies:

      An implementation may set limits on the range and precision of numbers.

      When the default type is used, the maximal integer number that can be stored is 9223372036854775807 (INT64_MAX) and the minimal integer number that can be stored is -9223372036854775808 (INT64_MIN). Integer numbers that are out of range will yield over/underflow when used in a constructor. During deserialization, too large or small integer numbers will be automatically be stored as number_unsigned_t or number_float_t.

      RFC 8259 further states:

      Note that when such software is used, numbers that are integers and are in the range [-2^{53}+1, 2^{53}-1] are interoperable in the sense that implementations will agree exactly on their numeric values.

      As this range is a subrange of the exactly supported range [INT64_MIN, INT64_MAX], this class's integer type is interoperable.

      "},{"location":"api/basic_json/number_integer_t/#storage","title":"Storage","text":"

      Integer number values are stored directly inside a basic_json type.

      "},{"location":"api/basic_json/number_integer_t/#examples","title":"Examples","text":"Example

      The following code shows that number_integer_t is by default, a typedef to std::int64_t.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout << std::boolalpha << std::is_same<std::int64_t, json::number_integer_t>::value << std::endl;\n}\n

      Output:

      true\n
      "},{"location":"api/basic_json/number_integer_t/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/number_unsigned_t/","title":"nlohmann::basic_json::number_unsigned_t","text":"
      using number_unsigned_t = NumberUnsignedType;\n

      The type used to store JSON numbers (unsigned).

      RFC 8259 describes numbers as follows:

      The representation of numbers is similar to that used in most programming languages. A number is represented in base 10 using decimal digits. It contains an integer component that may be prefixed with an optional minus sign, which may be followed by a fraction part and/or an exponent part. Leading zeros are not allowed. (...) Numeric values that cannot be represented in the grammar below (such as Infinity and NaN) are not permitted.

      This description includes both integer and floating-point numbers. However, C++ allows more precise storage if it is known whether the number is a signed integer, an unsigned integer or a floating-point number. Therefore, three different types, number_integer_t, number_unsigned_t and number_float_t are used.

      To store unsigned integer numbers in C++, a type is defined by the template parameter NumberUnsignedType which chooses the type to use.

      "},{"location":"api/basic_json/number_unsigned_t/#notes","title":"Notes","text":""},{"location":"api/basic_json/number_unsigned_t/#default-type","title":"Default type","text":"

      With the default values for NumberUnsignedType (std::uint64_t), the default value for number_unsigned_t is std::uint64_t.

      "},{"location":"api/basic_json/number_unsigned_t/#default-behavior","title":"Default behavior","text":"
      • The restrictions about leading zeros is not enforced in C++. Instead, leading zeros in integer literals lead to an interpretation as octal number. Internally, the value will be stored as decimal number. For instance, the C++ integer literal 010 will be serialized to 8. During deserialization, leading zeros yield an error.
      • Not-a-number (NaN) values will be serialized to null.
      "},{"location":"api/basic_json/number_unsigned_t/#limits","title":"Limits","text":"

      RFC 8259 specifies:

      An implementation may set limits on the range and precision of numbers.

      When the default type is used, the maximal integer number that can be stored is 18446744073709551615 (UINT64_MAX) and the minimal integer number that can be stored is 0. Integer numbers that are out of range will yield over/underflow when used in a constructor. During deserialization, too large or small integer numbers will be automatically be stored as number_integer_t or number_float_t.

      RFC 8259 further states:

      Note that when such software is used, numbers that are integers and are in the range \\f[-2^{53}+1, 2^{53}-1]\\f are interoperable in the sense that implementations will agree exactly on their numeric values.

      As this range is a subrange (when considered in conjunction with the number_integer_t type) of the exactly supported range [0, UINT64_MAX], this class's integer type is interoperable.

      "},{"location":"api/basic_json/number_unsigned_t/#storage","title":"Storage","text":"

      Integer number values are stored directly inside a basic_json type.

      "},{"location":"api/basic_json/number_unsigned_t/#examples","title":"Examples","text":"Example

      The following code shows that number_unsigned_t is by default, a typedef to std::uint64_t.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout << std::boolalpha << std::is_same<std::uint64_t, json::number_unsigned_t>::value << std::endl;\n}\n

      Output:

      true\n
      "},{"location":"api/basic_json/number_unsigned_t/#version-history","title":"Version history","text":"
      • Added in version 2.0.0.
      "},{"location":"api/basic_json/object/","title":"nlohmann::basic_json::object","text":"
      static basic_json object(initializer_list_t init = {});\n

      Creates a JSON object value from a given initializer list. The initializer lists elements must be pairs, and their first elements must be strings. If the initializer list is empty, the empty object {} is created.

      "},{"location":"api/basic_json/object/#parameters","title":"Parameters","text":"init (in) initializer list with JSON values to create an object from (optional)"},{"location":"api/basic_json/object/#return-value","title":"Return value","text":"

      JSON object value

      "},{"location":"api/basic_json/object/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

      "},{"location":"api/basic_json/object/#exceptions","title":"Exceptions","text":"

      Throws type_error.301 if init is not a list of pairs whose first elements are strings. In this case, no object can be created. When such a value is passed to basic_json(initializer_list_t, bool, value_t), an array would have been created from the passed initializer list init. See example below.

      "},{"location":"api/basic_json/object/#complexity","title":"Complexity","text":"

      Linear in the size of init.

      "},{"location":"api/basic_json/object/#notes","title":"Notes","text":"

      This function is only added for symmetry reasons. In contrast to the related function array(initializer_list_t), there are no cases which can only be expressed by this function. That is, any initializer list init can also be passed to the initializer list constructor basic_json(initializer_list_t, bool, value_t).

      "},{"location":"api/basic_json/object/#examples","title":"Examples","text":"Example

      The following code shows an example for the object function.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON objects\n    json j_no_init_list = json::object();\n    json j_empty_init_list = json::object({});\n    json j_list_of_pairs = json::object({ {\"one\", 1}, {\"two\", 2} });\n\n    // serialize the JSON objects\n    std::cout << j_no_init_list << '\\n';\n    std::cout << j_empty_init_list << '\\n';\n    std::cout << j_list_of_pairs << '\\n';\n\n    // example for an exception\n    try\n    {\n        // can only create an object from a list of pairs\n        json j_invalid_object = json::object({{ \"one\", 1, 2 }});\n    }\n    catch (const json::type_error& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n}\n

      Output:

      {}\n{}\n{\"one\":1,\"two\":2}\n[json.exception.type_error.301] cannot create object from initializer list\n
      "},{"location":"api/basic_json/object/#see-also","title":"See also","text":"
      • basic_json(initializer_list_t) - create a JSON value from an initializer list
      • array - create a JSON array value from an initializer list
      "},{"location":"api/basic_json/object/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/object_comparator_t/","title":"nlohmann::basic_json::object_comparator_t","text":"
      using object_comparator_t = typename object_t::key_compare;\n// or\nusing object_comparator_t = default_object_comparator_t;\n

      The comparator used by object_t. Defined as typename object_t::key_compare if available, and default_object_comparator_t otherwise.

      "},{"location":"api/basic_json/object_comparator_t/#examples","title":"Examples","text":"Example

      The example below demonstrates the used object comparator.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout << std::boolalpha\n              << \"json::object_comparator_t(\\\"one\\\", \\\"two\\\") = \" << json::object_comparator_t{}(\"one\", \"two\") << \"\\n\"\n              << \"json::object_comparator_t(\\\"three\\\", \\\"four\\\") = \" << json::object_comparator_t{}(\"three\", \"four\") << std::endl;\n}\n

      Output:

      json::object_comparator_t(\"one\", \"two\") = true\njson::object_comparator_t(\"three\", \"four\") = false\n
      "},{"location":"api/basic_json/object_comparator_t/#version-history","title":"Version history","text":"
      • Added in version 3.0.0.
      • Changed to be conditionally defined as typename object_t::key_compare or default_object_comparator_t in version 3.11.0.
      "},{"location":"api/basic_json/object_t/","title":"nlohmann::basic_json::object_t","text":"
      using object_t = ObjectType<StringType,\n                            basic_json,\n                            default_object_comparator_t,\n                            AllocatorType<std::pair<const StringType, basic_json>>>;\n

      The type used to store JSON objects.

      RFC 8259 describes JSON objects as follows:

      An object is an unordered collection of zero or more name/value pairs, where a name is a string and a value is a string, number, boolean, null, object, or array.

      To store objects in C++, a type is defined by the template parameters described below.

      "},{"location":"api/basic_json/object_t/#template-parameters","title":"Template parameters","text":"ObjectType the container to store objects (e.g., std::map or std::unordered_map) StringType the type of the keys or names (e.g., std::string). The comparison function std::less<StringType> is used to order elements inside the container. AllocatorType the allocator to use for objects (e.g., std::allocator)"},{"location":"api/basic_json/object_t/#notes","title":"Notes","text":""},{"location":"api/basic_json/object_t/#default-type","title":"Default type","text":"

      With the default values for ObjectType (std::map), StringType (std::string), and AllocatorType (std::allocator), the default value for object_t is:

      // until C++14\nstd::map<\n  std::string, // key_type\n  basic_json, // value_type\n  std::less<std::string>, // key_compare\n  std::allocator<std::pair<const std::string, basic_json>> // allocator_type\n>\n\n// since C++14\nstd::map<\n  std::string, // key_type\n  basic_json, // value_type\n  std::less<>, // key_compare\n  std::allocator<std::pair<const std::string, basic_json>> // allocator_type\n>\n

      See default_object_comparator_t for more information.

      "},{"location":"api/basic_json/object_t/#behavior","title":"Behavior","text":"

      The choice of object_t influences the behavior of the JSON class. With the default type, objects have the following behavior:

      • When all names are unique, objects will be interoperable in the sense that all software implementations receiving that object will agree on the name-value mappings.
      • When the names within an object are not unique, it is unspecified which one of the values for a given key will be chosen. For instance, {\"key\": 2, \"key\": 1} could be equal to either {\"key\": 1} or {\"key\": 2}.
      • Internally, name/value pairs are stored in lexicographical order of the names. Objects will also be serialized (see dump) in this order. For instance, {\"b\": 1, \"a\": 2} and {\"a\": 2, \"b\": 1} will be stored and serialized as {\"a\": 2, \"b\": 1}.
      • When comparing objects, the order of the name/value pairs is irrelevant. This makes objects interoperable in the sense that they will not be affected by these differences. For instance, {\"b\": 1, \"a\": 2} and {\"a\": 2, \"b\": 1} will be treated as equal.
      "},{"location":"api/basic_json/object_t/#limits","title":"Limits","text":"

      RFC 8259 specifies:

      An implementation may set limits on the maximum depth of nesting.

      In this class, the object's limit of nesting is not explicitly constrained. However, a maximum depth of nesting may be introduced by the compiler or runtime environment. A theoretical limit can be queried by calling the max_size function of a JSON object.

      "},{"location":"api/basic_json/object_t/#storage","title":"Storage","text":"

      Objects are stored as pointers in a basic_json type. That is, for any access to object values, a pointer of type object_t* must be dereferenced.

      "},{"location":"api/basic_json/object_t/#object-key-order","title":"Object key order","text":"

      The order name/value pairs are added to the object is not preserved by the library. Therefore, iterating an object may return name/value pairs in a different order than they were originally stored. In fact, keys will be traversed in alphabetical order as std::map with std::less is used by default. Please note this behavior conforms to RFC 8259, because any order implements the specified \"unordered\" nature of JSON objects.

      "},{"location":"api/basic_json/object_t/#examples","title":"Examples","text":"Example

      The following code shows that object_t is by default, a typedef to std::map<json::string_t, json>.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout << std::boolalpha << std::is_same<std::map<json::string_t, json>, json::object_t>::value << std::endl;\n}\n

      Output:

      true\n
      "},{"location":"api/basic_json/object_t/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/operator%2B%3D/","title":"nlohmann::basic_json::operator+=","text":"
      // (1)\nreference operator+=(basic_json&& val);\nreference operator+=(const basic_json& val);\n\n// (2)\nreference operator+=(const typename object_t::value_type& val);\n\n// (3)\nreference operator+=(initializer_list_t init);\n
      1. Appends the given element val to the end of the JSON array. If the function is called on a JSON null value, an empty array is created before appending val.

      2. Inserts the given element val to the JSON object. If the function is called on a JSON null value, an empty object is created before inserting val.

      3. This function allows using operator+= with an initializer list. In case

        1. the current value is an object,
        2. the initializer list init contains only two elements, and
        3. the first element of init is a string,

        init is converted into an object element and added using operator+=(const typename object_t::value_type&). Otherwise, init is converted to a JSON value and added using operator+=(basic_json&&).

      "},{"location":"api/basic_json/operator%2B%3D/#iterator-invalidation","title":"Iterator invalidation","text":"

      For all cases where an element is added to an array, a reallocation can happen, in which case all iterators (including the end() iterator) and all references to the elements are invalidated. Otherwise, only the end() iterator is invalidated.

      For ordered_json, also adding an element to an object can yield a reallocation which again invalidates all iterators and all references.

      "},{"location":"api/basic_json/operator%2B%3D/#parameters","title":"Parameters","text":"val (in) the value to add to the JSON array/object init (in) an initializer list"},{"location":"api/basic_json/operator%2B%3D/#return-value","title":"Return value","text":"

      *this

      "},{"location":"api/basic_json/operator%2B%3D/#exceptions","title":"Exceptions","text":"

      All functions can throw the following exception: - Throws type_error.308 when called on a type other than JSON array or null; example: \"cannot use operator+=() with number\"

      "},{"location":"api/basic_json/operator%2B%3D/#complexity","title":"Complexity","text":"
      1. Amortized constant.
      2. Logarithmic in the size of the container, O(log(size())).
      3. Linear in the size of the initializer list init.
      "},{"location":"api/basic_json/operator%2B%3D/#notes","title":"Notes","text":"

      (3) This function is required to resolve an ambiguous overload error, because pairs like {\"key\", \"value\"} can be both interpreted as object_t::value_type or std::initializer_list<basic_json>, see #235 for more information.

      "},{"location":"api/basic_json/operator%2B%3D/#examples","title":"Examples","text":"Example: (1) add element to array

      The example shows how push_back() and += can be used to add elements to a JSON array. Note how the null value was silently converted to a JSON array.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json array = {1, 2, 3, 4, 5};\n    json null;\n\n    // print values\n    std::cout << array << '\\n';\n    std::cout << null << '\\n';\n\n    // add values\n    array.push_back(6);\n    array += 7;\n    null += \"first\";\n    null += \"second\";\n\n    // print values\n    std::cout << array << '\\n';\n    std::cout << null << '\\n';\n}\n

      Output:

      [1,2,3,4,5]\nnull\n[1,2,3,4,5,6,7]\n[\"first\",\"second\"]\n
      Example: (2) add element to object

      The example shows how push_back() and += can be used to add elements to a JSON object. Note how the null value was silently converted to a JSON object.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json object = {{\"one\", 1}, {\"two\", 2}};\n    json null;\n\n    // print values\n    std::cout << object << '\\n';\n    std::cout << null << '\\n';\n\n    // add values\n    object.push_back(json::object_t::value_type(\"three\", 3));\n    object += json::object_t::value_type(\"four\", 4);\n    null += json::object_t::value_type(\"A\", \"a\");\n    null += json::object_t::value_type(\"B\", \"b\");\n\n    // print values\n    std::cout << object << '\\n';\n    std::cout << null << '\\n';\n}\n

      Output:

      {\"one\":1,\"two\":2}\nnull\n{\"four\":4,\"one\":1,\"three\":3,\"two\":2}\n{\"A\":\"a\",\"B\":\"b\"}\n
      Example: (3) add to object from initializer list

      The example shows how initializer lists are treated as objects when possible.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json object = {{\"one\", 1}, {\"two\", 2}};\n    json null;\n\n    // print values\n    std::cout << object << '\\n';\n    std::cout << null << '\\n';\n\n    // add values:\n    object.push_back({\"three\", 3});  // object is extended\n    object += {\"four\", 4};           // object is extended\n    null.push_back({\"five\", 5});     // null is converted to array\n\n    // print values\n    std::cout << object << '\\n';\n    std::cout << null << '\\n';\n\n    // would throw:\n    //object.push_back({1, 2, 3});\n}\n

      Output:

      {\"one\":1,\"two\":2}\nnull\n{\"four\":4,\"one\":1,\"three\":3,\"two\":2}\n[[\"five\",5]]\n
      "},{"location":"api/basic_json/operator%2B%3D/#see-also","title":"See also","text":"
      • emplace_back add a value to an array
      • push_back add a value to an array/object
      "},{"location":"api/basic_json/operator%2B%3D/#version-history","title":"Version history","text":"
      1. Since version 1.0.0.
      2. Since version 1.0.0.
      3. Since version 2.0.0.
      "},{"location":"api/basic_json/operator%3D/","title":"nlohmann::basic_json::operator=","text":"
      basic_json& operator=(basic_json other) noexcept (\n    std::is_nothrow_move_constructible<value_t>::value &&\n    std::is_nothrow_move_assignable<value_t>::value &&\n    std::is_nothrow_move_constructible<json_value>::value &&\n    std::is_nothrow_move_assignable<json_value>::value\n);\n

      Copy assignment operator. Copies a JSON value via the \"copy and swap\" strategy: It is expressed in terms of the copy constructor, destructor, and the swap() member function.

      "},{"location":"api/basic_json/operator%3D/#parameters","title":"Parameters","text":"other (in) value to copy from"},{"location":"api/basic_json/operator%3D/#complexity","title":"Complexity","text":"

      Linear.

      "},{"location":"api/basic_json/operator%3D/#examples","title":"Examples","text":"Example

      The code below shows and example for the copy assignment. It creates a copy of value a which is then swapped with b. Finally, the copy of a (which is the null value after the swap) is destroyed.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json a = 23;\n    json b = 42;\n\n    // copy-assign a to b\n    b = a;\n\n    // serialize the JSON arrays\n    std::cout << a << '\\n';\n    std::cout << b << '\\n';\n}\n

      Output:

      23\n23\n
      "},{"location":"api/basic_json/operator%3D/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/operator%5B%5D/","title":"nlohmann::basic_json::operator[]","text":"
      // (1)\nreference operator[](size_type idx);\nconst_reference operator[](size_type idx) const;\n\n// (2)\nreference operator[](typename object_t::key_type key);\nconst_reference operator[](const typename object_t::key_type& key) const;\n\n// (3)\ntemplate<typename KeyType>\nreference operator[](KeyType&& key);\ntemplate<typename KeyType>\nconst_reference operator[](KeyType&& key) const;\n\n// (4)\nreference operator[](const json_pointer& ptr);\nconst_reference operator[](const json_pointer& ptr) const;\n
      1. Returns a reference to the array element at specified location idx.
      2. Returns a reference to the object element with specified key key. The non-const qualified overload takes the key by value.
      3. See 2. This overload is only available if KeyType is comparable with typename object_t::key_type and typename object_comparator_t::is_transparent denotes a type.
      4. Returns a reference to the element with specified JSON pointer ptr.
      "},{"location":"api/basic_json/operator%5B%5D/#template-parameters","title":"Template parameters","text":"KeyType A type for an object key other than json_pointer that is comparable with string_t using object_comparator_t. This can also be a string view (C++17)."},{"location":"api/basic_json/operator%5B%5D/#iterator-invalidation","title":"Iterator invalidation","text":"

      For the non-const versions 1. and 4., when passing an array index that does not exist, it is created and filled with a null value before a reference to it is returned. For this, a reallocation can happen, in which case all iterators (including the end() iterator) and all references to the elements are invalidated.

      For ordered_json, also passing an object key to the non-const versions 2., 3., and 4., a reallocation can happen which again invalidates all iterators and all references.

      "},{"location":"api/basic_json/operator%5B%5D/#parameters","title":"Parameters","text":"idx (in) index of the element to access key (in) object key of the element to access ptr (in) JSON pointer to the desired element"},{"location":"api/basic_json/operator%5B%5D/#return-value","title":"Return value","text":"
      1. (const) reference to the element at index idx
      2. (const) reference to the element at key key
      3. (const) reference to the element at key key
      4. (const) reference to the element pointed to by ptr
      "},{"location":"api/basic_json/operator%5B%5D/#exception-safety","title":"Exception safety","text":"

      Strong exception safety: if an exception occurs, the original value stays intact.

      "},{"location":"api/basic_json/operator%5B%5D/#exceptions","title":"Exceptions","text":"
      1. The function can throw the following exceptions:
        • Throws type_error.305 if the JSON value is not an array or null; in that case, using the [] operator with an index makes no sense.
      2. The function can throw the following exceptions:
        • Throws type_error.305 if the JSON value is not an object or null; in that case, using the [] operator with a key makes no sense.
      3. See 2.
      4. The function can throw the following exceptions:
        • Throws parse_error.106 if an array index in the passed JSON pointer ptr begins with '0'.
        • Throws parse_error.109 if an array index in the passed JSON pointer ptr is not a number.
        • Throws out_of_range.402 if the array index '-' is used in the passed JSON pointer ptr for the const version.
        • Throws out_of_range.404 if the JSON pointer ptr can not be resolved.
      "},{"location":"api/basic_json/operator%5B%5D/#complexity","title":"Complexity","text":"
      1. Constant if idx is in the range of the array. Otherwise, linear in idx - size().
      2. Logarithmic in the size of the container.
      3. Logarithmic in the size of the container.
      4. Logarithmic in the size of the container.
      "},{"location":"api/basic_json/operator%5B%5D/#notes","title":"Notes","text":"

      Undefined behavior and runtime assertions

      1. If the element with key idx does not exist, the behavior is undefined.
      2. If the element with key key does not exist, the behavior is undefined and is guarded by a runtime assertion!
      1. The non-const version may add values: If idx is beyond the range of the array (i.e., idx >= size()), then the array is silently filled up with null values to make idx a valid reference to the last stored element. In case the value was null before, it is converted to an array.

      2. If key is not found in the object, then it is silently added to the object and filled with a null value to make key a valid reference. In case the value was null before, it is converted to an object.

      3. See 2.

      4. null values are created in arrays and objects if necessary.

        In particular:

        • If the JSON pointer points to an object key that does not exist, it is created and filled with a null value before a reference to it is returned.
        • If the JSON pointer points to an array index that does not exist, it is created and filled with a null value before a reference to it is returned. All indices between the current maximum and the given index are also filled with null.
        • The special value - is treated as a synonym for the index past the end.
      "},{"location":"api/basic_json/operator%5B%5D/#examples","title":"Examples","text":"Example: (1) access specified array element

      The example below shows how array elements can be read and written using [] operator. Note the addition of null values.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON array\n    json array = {1, 2, 3, 4, 5};\n\n    // output element at index 3 (fourth element)\n    std::cout << array[3] << '\\n';\n\n    // change last element to 6\n    array[array.size() - 1] = 6;\n\n    // output changed array\n    std::cout << array << '\\n';\n\n    // write beyond array limit\n    array[10] = 11;\n\n    // output changed array\n    std::cout << array << '\\n';\n}\n

      Output:

      4\n[1,2,3,4,6]\n[1,2,3,4,6,null,null,null,null,null,11]\n
      Example: (1) access specified array element (const)

      The example below shows how array elements can be read using the [] operator.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON array\n    const json array = {\"first\", \"2nd\", \"third\", \"fourth\"};\n\n    // output element at index 2 (third element)\n    std::cout << array.at(2) << '\\n';\n}\n

      Output:

      \"third\"\n
      Example: (2) access specified object element

      The example below shows how object elements can be read and written using the [] operator.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    json object =\n    {\n        {\"one\", 1}, {\"two\", 2}, {\"three\", 2.9}\n    };\n\n    // output element with key \"two\"\n    std::cout << object[\"two\"] << \"\\n\\n\";\n\n    // change element with key \"three\"\n    object[\"three\"] = 3;\n\n    // output changed array\n    std::cout << std::setw(4) << object << \"\\n\\n\";\n\n    // mention nonexisting key\n    object[\"four\"];\n\n    // write to nonexisting key\n    object[\"five\"][\"really\"][\"nested\"] = true;\n\n    // output changed object\n    std::cout << std::setw(4) << object << '\\n';\n}\n

      Output:

      2\n\n{\n    \"one\": 1,\n    \"three\": 3,\n    \"two\": 2\n}\n\n{\n    \"five\": {\n        \"really\": {\n            \"nested\": true\n        }\n    },\n    \"four\": null,\n    \"one\": 1,\n    \"three\": 3,\n    \"two\": 2\n}\n
      Example: (2) access specified object element (const)

      The example below shows how object elements can be read using the [] operator.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    const json object =\n    {\n        {\"one\", 1}, {\"two\", 2}, {\"three\", 2.9}\n    };\n\n    // output element with key \"two\"\n    std::cout << object[\"two\"] << '\\n';\n}\n

      Output:

      2\n
      Example: (3) access specified object element using string_view

      The example below shows how object elements can be read using the [] operator.

      #include <iostream>\n#include <iomanip>\n#include <string_view>\n#include <nlohmann/json.hpp>\n\nusing namespace std::string_view_literals;\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    json object =\n    {\n        {\"one\", 1}, {\"two\", 2}, {\"three\", 2.9}\n    };\n\n    // output element with key \"two\"\n    std::cout << object[\"two\"sv] << \"\\n\\n\";\n\n    // change element with key \"three\"\n    object[\"three\"sv] = 3;\n\n    // output changed array\n    std::cout << std::setw(4) << object << \"\\n\\n\";\n\n    // mention nonexisting key\n    object[\"four\"sv];\n\n    // write to nonexisting key\n    object[\"five\"sv][\"really\"sv][\"nested\"sv] = true;\n\n    // output changed object\n    std::cout << std::setw(4) << object << '\\n';\n}\n

      Output:

      2\n\n{\n    \"one\": 1,\n    \"three\": 3,\n    \"two\": 2\n}\n\n{\n    \"five\": {\n        \"really\": {\n            \"nested\": true\n        }\n    },\n    \"four\": null,\n    \"one\": 1,\n    \"three\": 3,\n    \"two\": 2\n}\n
      Example: (3) access specified object element using string_view (const)

      The example below shows how object elements can be read using the [] operator.

      #include <iostream>\n#include <string_view>\n#include <nlohmann/json.hpp>\n\nusing namespace std::string_view_literals;\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    const json object =\n    {\n        {\"one\", 1}, {\"two\", 2}, {\"three\", 2.9}\n    };\n\n    // output element with key \"two\"\n    std::cout << object[\"two\"sv] << '\\n';\n}\n

      Output:

      2\n
      Example: (4) access specified element via JSON Pointer

      The example below shows how values can be read and written using JSON Pointers.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON value\n    json j =\n    {\n        {\"number\", 1}, {\"string\", \"foo\"}, {\"array\", {1, 2}}\n    };\n\n    // read-only access\n\n    // output element with JSON pointer \"/number\"\n    std::cout << j[\"/number\"_json_pointer] << '\\n';\n    // output element with JSON pointer \"/string\"\n    std::cout << j[\"/string\"_json_pointer] << '\\n';\n    // output element with JSON pointer \"/array\"\n    std::cout << j[\"/array\"_json_pointer] << '\\n';\n    // output element with JSON pointer \"/array/1\"\n    std::cout << j[\"/array/1\"_json_pointer] << '\\n';\n\n    // writing access\n\n    // change the string\n    j[\"/string\"_json_pointer] = \"bar\";\n    // output the changed string\n    std::cout << j[\"string\"] << '\\n';\n\n    // \"change\" a nonexisting object entry\n    j[\"/boolean\"_json_pointer] = true;\n    // output the changed object\n    std::cout << j << '\\n';\n\n    // change an array element\n    j[\"/array/1\"_json_pointer] = 21;\n    // \"change\" an array element with nonexisting index\n    j[\"/array/4\"_json_pointer] = 44;\n    // output the changed array\n    std::cout << j[\"array\"] << '\\n';\n\n    // \"change\" the array element past the end\n    j[\"/array/-\"_json_pointer] = 55;\n    // output the changed array\n    std::cout << j[\"array\"] << '\\n';\n}\n

      Output:

      1\n\"foo\"\n[1,2]\n2\n\"bar\"\n{\"array\":[1,2],\"boolean\":true,\"number\":1,\"string\":\"bar\"}\n[1,21,null,null,44]\n[1,21,null,null,44,55]\n
      Example: (4) access specified element via JSON Pointer (const)

      The example below shows how values can be read using JSON Pointers.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON value\n    const json j =\n    {\n        {\"number\", 1}, {\"string\", \"foo\"}, {\"array\", {1, 2}}\n    };\n\n    // read-only access\n\n    // output element with JSON pointer \"/number\"\n    std::cout << j[\"/number\"_json_pointer] << '\\n';\n    // output element with JSON pointer \"/string\"\n    std::cout << j[\"/string\"_json_pointer] << '\\n';\n    // output element with JSON pointer \"/array\"\n    std::cout << j[\"/array\"_json_pointer] << '\\n';\n    // output element with JSON pointer \"/array/1\"\n    std::cout << j[\"/array/1\"_json_pointer] << '\\n';\n}\n

      Output:

      1\n\"foo\"\n[1,2]\n2\n
      "},{"location":"api/basic_json/operator%5B%5D/#see-also","title":"See also","text":"
      • documentation on unchecked access
      • documentation on runtime assertions
      • see at for access by reference with range checking
      • see value for access with default value
      "},{"location":"api/basic_json/operator%5B%5D/#version-history","title":"Version history","text":"
      1. Added in version 1.0.0.
      2. Added in version 1.0.0. Added overloads for T* key in version 1.1.0. Removed overloads for T* key (replaced by 3) in version 3.11.0.
      3. Added in version 3.11.0.
      4. Added in version 2.0.0.
      "},{"location":"api/basic_json/operator_ValueType/","title":"nlohmann::basic_json::operator ValueType","text":"
      template<typename ValueType>\nJSON_EXPLICIT operator ValueType() const;\n

      Implicit type conversion between the JSON value and a compatible value. The call is realized by calling get(). See Notes for the meaning of JSON_EXPLICIT.

      "},{"location":"api/basic_json/operator_ValueType/#template-parameters","title":"Template parameters","text":"ValueType the value type to return"},{"location":"api/basic_json/operator_ValueType/#return-value","title":"Return value","text":"

      copy of the JSON value, converted to ValueType

      "},{"location":"api/basic_json/operator_ValueType/#exceptions","title":"Exceptions","text":"

      Depends on what json_serializer<ValueType> from_json() method throws

      "},{"location":"api/basic_json/operator_ValueType/#complexity","title":"Complexity","text":"

      Linear in the size of the JSON value.

      "},{"location":"api/basic_json/operator_ValueType/#notes","title":"Notes","text":"

      Definition of JSON_EXPLICIT

      By default JSON_EXPLICIT is defined to the empty string, so the signature is:

      template<typename ValueType>\noperator ValueType() const;\n

      If JSON_USE_IMPLICIT_CONVERSIONS is set to 0, JSON_EXPLICIT is defined to explicit:

      template<typename ValueType>\nexplicit operator ValueType() const;\n

      That is, implicit conversions can be switched off by defining JSON_USE_IMPLICIT_CONVERSIONS to 0.

      Future behavior change

      Implicit conversions will be switched off by default in the next major release of the library. That is, JSON_EXPLICIT will be set to explicit by default.

      You can prepare existing code by already defining JSON_USE_IMPLICIT_CONVERSIONS to 0 and replace any implicit conversions with calls to get.

      "},{"location":"api/basic_json/operator_ValueType/#examples","title":"Examples","text":"Example

      The example below shows several conversions from JSON values to other types. There are a few things to note: (1) Floating-point numbers can be converted to integers, (2) A JSON array can be converted to a standard std::vector<short>, (3) A JSON object can be converted to C++ associative containers such as std::unordered_map<std::string, json>.

      #include <iostream>\n#include <unordered_map>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON value with different types\n    json json_types =\n    {\n        {\"boolean\", true},\n        {\n            \"number\", {\n                {\"integer\", 42},\n                {\"floating-point\", 17.23}\n            }\n        },\n        {\"string\", \"Hello, world!\"},\n        {\"array\", {1, 2, 3, 4, 5}},\n        {\"null\", nullptr}\n    };\n\n    // use implicit conversions\n    bool v1 = json_types[\"boolean\"];\n    int v2 = json_types[\"number\"][\"integer\"];\n    short v3 = json_types[\"number\"][\"integer\"];\n    float v4 = json_types[\"number\"][\"floating-point\"];\n    int v5 = json_types[\"number\"][\"floating-point\"];\n    std::string v6 = json_types[\"string\"];\n    std::vector<short> v7 = json_types[\"array\"];\n    std::unordered_map<std::string, json> v8 = json_types;\n\n    // print the conversion results\n    std::cout << v1 << '\\n';\n    std::cout << v2 << ' ' << v3 << '\\n';\n    std::cout << v4 << ' ' << v5 << '\\n';\n    std::cout << v6 << '\\n';\n\n    for (auto i : v7)\n    {\n        std::cout << i << ' ';\n    }\n    std::cout << \"\\n\\n\";\n\n    for (auto i : v8)\n    {\n        std::cout << i.first << \": \" << i.second << '\\n';\n    }\n\n    // example for an exception\n    try\n    {\n        bool v1 = json_types[\"string\"];\n    }\n    catch (const json::type_error& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n}\n

      Output:

      1\n42 42\n17.23 17\nHello, world!\n1 2 3 4 5 \n\nstring: \"Hello, world!\"\nnumber: {\"floating-point\":17.23,\"integer\":42}\nnull: null\nboolean: true\narray: [1,2,3,4,5]\n[json.exception.type_error.302] type must be boolean, but is string\n
      "},{"location":"api/basic_json/operator_ValueType/#version-history","title":"Version history","text":"
      • Since version 1.0.0.
      • Macros JSON_EXPLICIT/JSON_USE_IMPLICIT_CONVERSIONS added in version 3.9.0.
      "},{"location":"api/basic_json/operator_eq/","title":"nlohmann::basic_json::operator==","text":"
      // until C++20\nbool operator==(const_reference lhs, const_reference rhs) noexcept;   // (1)\n\ntemplate<typename ScalarType>\nbool operator==(const_reference lhs, const ScalarType rhs) noexcept;  // (2)\n\ntemplate<typename ScalarType>\nbool operator==(ScalarType lhs, const const_reference rhs) noexcept;  // (2)\n\n// since C++20\nclass basic_json {\n    bool operator==(const_reference rhs) const noexcept;              // (1)\n\n    template<typename ScalarType>\n    bool operator==(ScalarType rhs) const noexcept;                   // (2)\n};\n
      1. Compares two JSON values for equality according to the following rules:

        • Two JSON values are equal if (1) neither value is discarded, or (2) they are of the same type and their stored values are the same according to their respective operator==.
        • Integer and floating-point numbers are automatically converted before comparison.
      2. Compares a JSON value and a scalar or a scalar and a JSON value for equality by converting the scalar to a JSON value and comparing both JSON values according to 1.

      "},{"location":"api/basic_json/operator_eq/#template-parameters","title":"Template parameters","text":"ScalarType a scalar type according to std::is_scalar<ScalarType>::value"},{"location":"api/basic_json/operator_eq/#parameters","title":"Parameters","text":"lhs (in) first value to consider rhs (in) second value to consider"},{"location":"api/basic_json/operator_eq/#return-value","title":"Return value","text":"

      whether the values lhs/*this and rhs are equal

      "},{"location":"api/basic_json/operator_eq/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this function never throws exceptions.

      "},{"location":"api/basic_json/operator_eq/#complexity","title":"Complexity","text":"

      Linear.

      "},{"location":"api/basic_json/operator_eq/#notes","title":"Notes","text":"

      Comparing special values

      • NaN values are unordered within the domain of numbers. The following comparisons all yield false:
        1. Comparing a NaN with itself.
        2. Comparing a NaN with another NaN.
        3. Comparing a NaN and any other number.
      • JSON null values are all equal.
      • Discarded values never compare equal to themselves.

      Comparing floating-point numbers

      Floating-point numbers inside JSON values numbers are compared with json::number_float_t::operator== which is double::operator== by default. To compare floating-point while respecting an epsilon, an alternative comparison function could be used, for instance

      template<typename T, typename = typename std::enable_if<std::is_floating_point<T>::value, T>::type>\ninline bool is_same(T a, T b, T epsilon = std::numeric_limits<T>::epsilon()) noexcept\n{\n    return std::abs(a - b) <= epsilon;\n}\n

      Or you can self-defined operator equal function like this:

      bool my_equal(const_reference lhs, const_reference rhs)\n{\n    const auto lhs_type lhs.type();\n    const auto rhs_type rhs.type();\n    if (lhs_type == rhs_type)\n    {\n        switch(lhs_type)\n            // self_defined case\n            case value_t::number_float:\n                return std::abs(lhs - rhs) <= std::numeric_limits<float>::epsilon();\n            // other cases remain the same with the original\n            ...\n    }\n...\n}\n

      Comparing different basic_json specializations

      Comparing different basic_json specializations can have surprising effects. For instance, the result of comparing the JSON objects

      {\n   \"version\": 1,\n   \"type\": \"integer\"\n}\n

      and

      {\n   \"type\": \"integer\",\n   \"version\": 1\n}\n

      depends on whether nlohmann::json or nlohmann::ordered_json is used:

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    nlohmann::json uj1 = {{\"version\", 1}, {\"type\", \"integer\"}};\n    nlohmann::json uj2 = {{\"type\", \"integer\"}, {\"version\", 1}};\n\n    nlohmann::ordered_json oj1 = {{\"version\", 1}, {\"type\", \"integer\"}};\n    nlohmann::ordered_json oj2 = {{\"type\", \"integer\"}, {\"version\", 1}};\n\n    std::cout << std::boolalpha << (uj1 == uj2) << '\\n' << (oj1 == oj2) << std::endl;\n}\n

      Output:

      true\nfalse\n
      "},{"location":"api/basic_json/operator_eq/#examples","title":"Examples","text":"Example

      The example demonstrates comparing several JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create several JSON values\n    json array_1 = {1, 2, 3};\n    json array_2 = {1, 2, 4};\n    json object_1 = {{\"A\", \"a\"}, {\"B\", \"b\"}};\n    json object_2 = {{\"B\", \"b\"}, {\"A\", \"a\"}};\n    json number_1 = 17;\n    json number_2 = 17.000000000000001L;\n    json string_1 = \"foo\";\n    json string_2 = \"bar\";\n\n    // output values and comparisons\n    std::cout << std::boolalpha;\n    std::cout << array_1 << \" == \" << array_2 << \" \" << (array_1 == array_2) << '\\n';\n    std::cout << object_1 << \" == \" << object_2 << \" \" << (object_1 == object_2) << '\\n';\n    std::cout << number_1 << \" == \" << number_2 << \" \" << (number_1 == number_2) << '\\n';\n    std::cout << string_1 << \" == \" << string_2 << \" \" << (string_1 == string_2) << '\\n';\n}\n

      Output:

      [1,2,3] == [1,2,4] false\n{\"A\":\"a\",\"B\":\"b\"} == {\"A\":\"a\",\"B\":\"b\"} true\n17 == 17.0 true\n\"foo\" == \"bar\" false\n
      Example

      The example demonstrates comparing several JSON types against the null pointer (JSON null).

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create several JSON values\n    json array = {1, 2, 3};\n    json object = {{\"A\", \"a\"}, {\"B\", \"b\"}};\n    json number = 17;\n    json string = \"foo\";\n    json null;\n\n    // output values and comparisons\n    std::cout << std::boolalpha;\n    std::cout << array << \" == nullptr \" << (array == nullptr) << '\\n';\n    std::cout << object << \" == nullptr \" << (object == nullptr) << '\\n';\n    std::cout << number << \" == nullptr \" << (number == nullptr) << '\\n';\n    std::cout << string << \" == nullptr \" << (string == nullptr) << '\\n';\n    std::cout << null << \" == nullptr \" << (null == nullptr) << '\\n';\n}\n

      Output:

      [1,2,3] == nullptr false\n{\"A\":\"a\",\"B\":\"b\"} == nullptr false\n17 == nullptr false\n\"foo\" == nullptr false\nnull == nullptr true\n
      "},{"location":"api/basic_json/operator_eq/#version-history","title":"Version history","text":"
      1. Added in version 1.0.0. Added C++20 member functions in version 3.11.0.
      2. Added in version 1.0.0. Added C++20 member functions in version 3.11.0.
      "},{"location":"api/basic_json/operator_ge/","title":"nlohmann::basic_json::operator>=","text":"
      // until C++20\nbool operator>=(const_reference lhs, const_reference rhs) noexcept;   // (1)\n\ntemplate<typename ScalarType>\nbool operator>=(const_reference lhs, const ScalarType rhs) noexcept;  // (2)\n\ntemplate<typename ScalarType>\nbool operator>=(ScalarType lhs, const const_reference rhs) noexcept;  // (2)\n
      1. Compares whether one JSON value lhs is greater than or equal to another JSON value rhs according to the following rules:

        • The comparison always yields false if (1) either operand is discarded, or (2) either operand is NaN and the other operand is either NaN or any other number.
        • Otherwise, returns the result of !(lhs < rhs) (see operator<).
      2. Compares whether a JSON value is greater than or equal to a scalar or a scalar is greater than or equal to a JSON value by converting the scalar to a JSON value and comparing both JSON values according to 1.

      "},{"location":"api/basic_json/operator_ge/#template-parameters","title":"Template parameters","text":"ScalarType a scalar type according to std::is_scalar<ScalarType>::value"},{"location":"api/basic_json/operator_ge/#parameters","title":"Parameters","text":"lhs (in) first value to consider rhs (in) second value to consider"},{"location":"api/basic_json/operator_ge/#return-value","title":"Return value","text":"

      whether lhs is less than or equal to rhs

      "},{"location":"api/basic_json/operator_ge/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this function never throws exceptions.

      "},{"location":"api/basic_json/operator_ge/#complexity","title":"Complexity","text":"

      Linear.

      "},{"location":"api/basic_json/operator_ge/#notes","title":"Notes","text":"

      Comparing NaN

      NaN values are unordered within the domain of numbers. The following comparisons all yield false: 1. Comparing a NaN with itself. 2. Comparing a NaN with another NaN. 3. Comparing a NaN and any other number.

      Operator overload resolution

      Since C++20 overload resolution will consider the rewritten candidate generated from operator<=>.

      "},{"location":"api/basic_json/operator_ge/#examples","title":"Examples","text":"Example

      The example demonstrates comparing several JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create several JSON values\n    json array_1 = {1, 2, 3};\n    json array_2 = {1, 2, 4};\n    json object_1 = {{\"A\", \"a\"}, {\"B\", \"b\"}};\n    json object_2 = {{\"B\", \"b\"}, {\"A\", \"a\"}};\n    json number_1 = 17;\n    json number_2 = 17.0000000000001L;\n    json string_1 = \"foo\";\n    json string_2 = \"bar\";\n\n    // output values and comparisons\n    std::cout << std::boolalpha;\n    std::cout << array_1 << \" >= \" << array_2 << \" \" << (array_1 >= array_2) << '\\n';\n    std::cout << object_1 << \" >= \" << object_2 << \" \" << (object_1 >= object_2) << '\\n';\n    std::cout << number_1 << \" >= \" << number_2 << \" \" << (number_1 >= number_2) << '\\n';\n    std::cout << string_1 << \" >= \" << string_2 << \" \" << (string_1 >= string_2) << '\\n';\n}\n

      Output:

      [1,2,3] >= [1,2,4] false\n{\"A\":\"a\",\"B\":\"b\"} >= {\"A\":\"a\",\"B\":\"b\"} true\n17 >= 17.0000000000001 false\n\"foo\" >= \"bar\" true\n
      "},{"location":"api/basic_json/operator_ge/#see-also","title":"See also","text":"
      • operator<=> comparison: 3-way
      "},{"location":"api/basic_json/operator_ge/#version-history","title":"Version history","text":"
      1. Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.
      2. Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.
      "},{"location":"api/basic_json/operator_gt/","title":"nlohmann::basic_json::operator>","text":"
      // until C++20\nbool operator>(const_reference lhs, const_reference rhs) noexcept;   // (1)\n\ntemplate<typename ScalarType>\nbool operator>(const_reference lhs, const ScalarType rhs) noexcept;  // (2)\n\ntemplate<typename ScalarType>\nbool operator>(ScalarType lhs, const const_reference rhs) noexcept;  // (2)\n
      1. Compares whether one JSON value lhs is greater than another JSON value rhs according to the following rules:

        • The comparison always yields false if (1) either operand is discarded, or (2) either operand is NaN and the other operand is either NaN or any other number.
        • Otherwise, returns the result of !(lhs <= rhs) (see operator<=).
      2. Compares whether a JSON value is greater than a scalar or a scalar is greater than a JSON value by converting the scalar to a JSON value and comparing both JSON values according to 1.

      "},{"location":"api/basic_json/operator_gt/#template-parameters","title":"Template parameters","text":"ScalarType a scalar type according to std::is_scalar<ScalarType>::value"},{"location":"api/basic_json/operator_gt/#parameters","title":"Parameters","text":"lhs (in) first value to consider rhs (in) second value to consider"},{"location":"api/basic_json/operator_gt/#return-value","title":"Return value","text":"

      whether lhs is greater than rhs

      "},{"location":"api/basic_json/operator_gt/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this function never throws exceptions.

      "},{"location":"api/basic_json/operator_gt/#complexity","title":"Complexity","text":"

      Linear.

      "},{"location":"api/basic_json/operator_gt/#notes","title":"Notes","text":"

      Comparing NaN

      NaN values are unordered within the domain of numbers. The following comparisons all yield false: 1. Comparing a NaN with itself. 2. Comparing a NaN with another NaN. 3. Comparing a NaN and any other number.

      Operator overload resolution

      Since C++20 overload resolution will consider the rewritten candidate generated from operator<=>.

      "},{"location":"api/basic_json/operator_gt/#examples","title":"Examples","text":"Example

      The example demonstrates comparing several JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create several JSON values\n    json array_1 = {1, 2, 3};\n    json array_2 = {1, 2, 4};\n    json object_1 = {{\"A\", \"a\"}, {\"B\", \"b\"}};\n    json object_2 = {{\"B\", \"b\"}, {\"A\", \"a\"}};\n    json number_1 = 17;\n    json number_2 = 17.0000000000001L;\n    json string_1 = \"foo\";\n    json string_2 = \"bar\";\n\n    // output values and comparisons\n    std::cout << std::boolalpha;\n    std::cout << array_1 << \" > \" << array_2 << \" \" << (array_1 > array_2) << '\\n';\n    std::cout << object_1 << \" > \" << object_2 << \" \" << (object_1 > object_2) << '\\n';\n    std::cout << number_1 << \" > \" << number_2 << \" \" << (number_1 > number_2) << '\\n';\n    std::cout << string_1 << \" > \" << string_2 << \" \" << (string_1 > string_2) << '\\n';\n}\n

      Output:

      [1,2,3] > [1,2,4] false\n{\"A\":\"a\",\"B\":\"b\"} > {\"A\":\"a\",\"B\":\"b\"} false\n17 > 17.0000000000001 false\n\"foo\" > \"bar\" true\n
      "},{"location":"api/basic_json/operator_gt/#see-also","title":"See also","text":"
      • operator<=> comparison: 3-way
      "},{"location":"api/basic_json/operator_gt/#version-history","title":"Version history","text":"
      1. Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.
      2. Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.
      "},{"location":"api/basic_json/operator_le/","title":"nlohmann::basic_json::operator<=","text":"
      // until C++20\nbool operator<=(const_reference lhs, const_reference rhs) noexcept;   // (1)\n\ntemplate<typename ScalarType>\nbool operator<=(const_reference lhs, const ScalarType rhs) noexcept;  // (2)\n\ntemplate<typename ScalarType>\nbool operator<=(ScalarType lhs, const const_reference rhs) noexcept;  // (2)\n
      1. Compares whether one JSON value lhs is less than or equal to another JSON value rhs according to the following rules:

        • The comparison always yields false if (1) either operand is discarded, or (2) either operand is NaN and the other operand is either NaN or any other number.
        • Otherwise, returns the result of !(rhs < lhs) (see operator<).
      2. Compares whether a JSON value is less than or equal to a scalar or a scalar is less than or equal to a JSON value by converting the scalar to a JSON value and comparing both JSON values according to 1.

      "},{"location":"api/basic_json/operator_le/#template-parameters","title":"Template parameters","text":"ScalarType a scalar type according to std::is_scalar<ScalarType>::value"},{"location":"api/basic_json/operator_le/#parameters","title":"Parameters","text":"lhs (in) first value to consider rhs (in) second value to consider"},{"location":"api/basic_json/operator_le/#return-value","title":"Return value","text":"

      whether lhs is less than or equal to rhs

      "},{"location":"api/basic_json/operator_le/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this function never throws exceptions.

      "},{"location":"api/basic_json/operator_le/#complexity","title":"Complexity","text":"

      Linear.

      "},{"location":"api/basic_json/operator_le/#notes","title":"Notes","text":"

      Comparing NaN

      NaN values are unordered within the domain of numbers. The following comparisons all yield false: 1. Comparing a NaN with itself. 2. Comparing a NaN with another NaN. 3. Comparing a NaN and any other number.

      Operator overload resolution

      Since C++20 overload resolution will consider the rewritten candidate generated from operator<=>.

      "},{"location":"api/basic_json/operator_le/#examples","title":"Examples","text":"Example

      The example demonstrates comparing several JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create several JSON values\n    json array_1 = {1, 2, 3};\n    json array_2 = {1, 2, 4};\n    json object_1 = {{\"A\", \"a\"}, {\"B\", \"b\"}};\n    json object_2 = {{\"B\", \"b\"}, {\"A\", \"a\"}};\n    json number_1 = 17;\n    json number_2 = 17.0000000000001L;\n    json string_1 = \"foo\";\n    json string_2 = \"bar\";\n\n    // output values and comparisons\n    std::cout << std::boolalpha;\n    std::cout << array_1 << \" <= \" << array_2 << \" \" << (array_1 <= array_2) << '\\n';\n    std::cout << object_1 << \" <= \" << object_2 << \" \" << (object_1 <= object_2) << '\\n';\n    std::cout << number_1 << \" <= \" << number_2 << \" \" << (number_1 <= number_2) << '\\n';\n    std::cout << string_1 << \" <= \" << string_2 << \" \" << (string_1 <= string_2) << '\\n';\n}\n

      Output:

      [1,2,3] <= [1,2,4] true\n{\"A\":\"a\",\"B\":\"b\"} <= {\"A\":\"a\",\"B\":\"b\"} true\n17 <= 17.0000000000001 true\n\"foo\" <= \"bar\" false\n
      "},{"location":"api/basic_json/operator_le/#see-also","title":"See also","text":"
      • operator<=> comparison: 3-way
      "},{"location":"api/basic_json/operator_le/#version-history","title":"Version history","text":"
      1. Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.
      2. Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.
      "},{"location":"api/basic_json/operator_lt/","title":"nlohmann::basic_json::operator<","text":"
      // until C++20\nbool operator<(const_reference lhs, const_reference rhs) noexcept;   // (1)\n\ntemplate<typename ScalarType>\nbool operator<(const_reference lhs, const ScalarType rhs) noexcept;  // (2)\n\ntemplate<typename ScalarType>\nbool operator<(ScalarType lhs, const const_reference rhs) noexcept;  // (2)\n
      1. Compares whether one JSON value lhs is less than another JSON value rhs according to the following rules:

        • If either operand is discarded, the comparison yields false.
        • If both operands have the same type, the values are compared using their respective operator<.
        • Integer and floating-point numbers are automatically converted before comparison.
        • In case lhs and rhs have different types, the values are ignored and the order of the types is considered, which is:
          1. null
          2. boolean
          3. number (all types)
          4. object
          5. array
          6. string
          7. binary For instance, any boolean value is considered less than any string.
      2. Compares whether a JSON value is less than a scalar or a scalar is less than a JSON value by converting the scalar to a JSON value and comparing both JSON values according to 1.

      "},{"location":"api/basic_json/operator_lt/#template-parameters","title":"Template parameters","text":"ScalarType a scalar type according to std::is_scalar<ScalarType>::value"},{"location":"api/basic_json/operator_lt/#parameters","title":"Parameters","text":"lhs (in) first value to consider rhs (in) second value to consider"},{"location":"api/basic_json/operator_lt/#return-value","title":"Return value","text":"

      whether lhs is less than rhs

      "},{"location":"api/basic_json/operator_lt/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this function never throws exceptions.

      "},{"location":"api/basic_json/operator_lt/#complexity","title":"Complexity","text":"

      Linear.

      "},{"location":"api/basic_json/operator_lt/#notes","title":"Notes","text":"

      Comparing NaN

      NaN values are unordered within the domain of numbers. The following comparisons all yield false: 1. Comparing a NaN with itself. 2. Comparing a NaN with another NaN. 3. Comparing a NaN and any other number.

      Operator overload resolution

      Since C++20 overload resolution will consider the rewritten candidate generated from operator<=>.

      "},{"location":"api/basic_json/operator_lt/#examples","title":"Examples","text":"Example

      The example demonstrates comparing several JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create several JSON values\n    json array_1 = {1, 2, 3};\n    json array_2 = {1, 2, 4};\n    json object_1 = {{\"A\", \"a\"}, {\"B\", \"b\"}};\n    json object_2 = {{\"B\", \"b\"}, {\"A\", \"a\"}};\n    json number_1 = 17;\n    json number_2 = 17.0000000000001L;\n    json string_1 = \"foo\";\n    json string_2 = \"bar\";\n\n    // output values and comparisons\n    std::cout << std::boolalpha;\n    std::cout << array_1 << \" == \" << array_2 << \" \" << (array_1 < array_2) << '\\n';\n    std::cout << object_1 << \" == \" << object_2 << \" \" << (object_1 < object_2) << '\\n';\n    std::cout << number_1 << \" == \" << number_2 << \" \" << (number_1 < number_2) << '\\n';\n    std::cout << string_1 << \" == \" << string_2 << \" \" << (string_1 < string_2) << '\\n';\n}\n

      Output:

      [1,2,3] == [1,2,4] true\n{\"A\":\"a\",\"B\":\"b\"} == {\"A\":\"a\",\"B\":\"b\"} false\n17 == 17.0000000000001 true\n\"foo\" == \"bar\" false\n
      "},{"location":"api/basic_json/operator_lt/#see-also","title":"See also","text":"
      • operator<=> comparison: 3-way
      "},{"location":"api/basic_json/operator_lt/#version-history","title":"Version history","text":"
      1. Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.
      2. Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.
      "},{"location":"api/basic_json/operator_ne/","title":"nlohmann::basic_json::operator!=","text":"
      // until C++20\nbool operator!=(const_reference lhs, const_reference rhs) noexcept;   // (1)\n\ntemplate<typename ScalarType>\nbool operator!=(const_reference lhs, const ScalarType rhs) noexcept;  // (2)\n\ntemplate<typename ScalarType>\nbool operator!=(ScalarType lhs, const const_reference rhs) noexcept;  // (2)\n\n// since C++20\nclass basic_json {\n    bool operator!=(const_reference rhs) const noexcept;              // (1)\n\n    template<typename ScalarType>\n    bool operator!=(ScalarType rhs) const noexcept;                   // (2)\n};\n
      1. Compares two JSON values for inequality according to the following rules:

        • The comparison always yields false if (1) either operand is discarded, or (2) either operand is NaN and the other operand is either NaN or any other number.
        • Otherwise, returns the result of !(lhs == rhs) (until C++20) or !(*this == rhs) (since C++20).
      2. Compares a JSON value and a scalar or a scalar and a JSON value for inequality by converting the scalar to a JSON value and comparing both JSON values according to 1.

      "},{"location":"api/basic_json/operator_ne/#template-parameters","title":"Template parameters","text":"ScalarType a scalar type according to std::is_scalar<ScalarType>::value"},{"location":"api/basic_json/operator_ne/#parameters","title":"Parameters","text":"lhs (in) first value to consider rhs (in) second value to consider"},{"location":"api/basic_json/operator_ne/#return-value","title":"Return value","text":"

      whether the values lhs/*this and rhs are not equal

      "},{"location":"api/basic_json/operator_ne/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this function never throws exceptions.

      "},{"location":"api/basic_json/operator_ne/#complexity","title":"Complexity","text":"

      Linear.

      "},{"location":"api/basic_json/operator_ne/#notes","title":"Notes","text":"

      Comparing NaN

      NaN values are unordered within the domain of numbers. The following comparisons all yield false: 1. Comparing a NaN with itself. 2. Comparing a NaN with another NaN. 3. Comparing a NaN and any other number.

      "},{"location":"api/basic_json/operator_ne/#examples","title":"Examples","text":"Example

      The example demonstrates comparing several JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create several JSON values\n    json array_1 = {1, 2, 3};\n    json array_2 = {1, 2, 4};\n    json object_1 = {{\"A\", \"a\"}, {\"B\", \"b\"}};\n    json object_2 = {{\"B\", \"b\"}, {\"A\", \"a\"}};\n    json number_1 = 17;\n    json number_2 = 17.000000000000001L;\n    json string_1 = \"foo\";\n    json string_2 = \"bar\";\n\n    // output values and comparisons\n    std::cout << std::boolalpha;\n    std::cout << array_1 << \" != \" << array_2 << \" \" << (array_1 != array_2) << '\\n';\n    std::cout << object_1 << \" != \" << object_2 << \" \" << (object_1 != object_2) << '\\n';\n    std::cout << number_1 << \" != \" << number_2 << \" \" << (number_1 != number_2) << '\\n';\n    std::cout << string_1 << \" != \" << string_2 << \" \" << (string_1 != string_2) << '\\n';\n}\n

      Output:

      [1,2,3] != [1,2,4] true\n{\"A\":\"a\",\"B\":\"b\"} != {\"A\":\"a\",\"B\":\"b\"} false\n17 != 17.0 false\n\"foo\" != \"bar\" true\n
      Example

      The example demonstrates comparing several JSON types against the null pointer (JSON null).

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create several JSON values\n    json array = {1, 2, 3};\n    json object = {{\"A\", \"a\"}, {\"B\", \"b\"}};\n    json number = 17;\n    json string = \"foo\";\n    json null;\n\n    // output values and comparisons\n    std::cout << std::boolalpha;\n    std::cout << array << \" != nullptr \" << (array != nullptr) << '\\n';\n    std::cout << object << \" != nullptr \" << (object != nullptr) << '\\n';\n    std::cout << number << \" != nullptr \" << (number != nullptr) << '\\n';\n    std::cout << string << \" != nullptr \" << (string != nullptr) << '\\n';\n    std::cout << null << \" != nullptr \" << (null != nullptr) << '\\n';\n}\n

      Output:

      [1,2,3] != nullptr true\n{\"A\":\"a\",\"B\":\"b\"} != nullptr true\n17 != nullptr true\n\"foo\" != nullptr true\nnull != nullptr false\n
      "},{"location":"api/basic_json/operator_ne/#version-history","title":"Version history","text":"
      1. Added in version 1.0.0. Added C++20 member functions in version 3.11.0.
      2. Added in version 1.0.0. Added C++20 member functions in version 3.11.0.
      "},{"location":"api/basic_json/operator_spaceship/","title":"nlohmann::basic_json::operator<=>","text":"
      // since C++20\nclass basic_json {\n    std::partial_ordering operator<=>(const_reference rhs) const noexcept;  // (1)\n\n    template<typename ScalarType>\n    std::partial_ordering operator<=>(const ScalarType rhs) const noexcept; // (2)\n};\n
      1. 3-way compares two JSON values producing a result of type std::partial_ordering according to the following rules:

        • Two JSON values compare with a result of std::partial_ordering::unordered if either value is discarded.
        • If both JSON values are of the same type, the result is produced by 3-way comparing their stored values using their respective operator<=>.
        • Integer and floating-point numbers are converted to their common type and then 3-way compared using their respective operator<=>. For instance, comparing an integer and a floating-point value will 3-way compare the first value converted to floating-point with the second value.
        • Otherwise, yields a result by comparing the type (see value_t).
      2. 3-way compares a JSON value and a scalar or a scalar and a JSON value by converting the scalar to a JSON value and 3-way comparing both JSON values (see 1).

      "},{"location":"api/basic_json/operator_spaceship/#template-parameters","title":"Template parameters","text":"ScalarType a scalar type according to std::is_scalar<ScalarType>::value"},{"location":"api/basic_json/operator_spaceship/#parameters","title":"Parameters","text":"rhs (in) second value to consider"},{"location":"api/basic_json/operator_spaceship/#return-value","title":"Return value","text":"

      the std::partial_ordering of the 3-way comparison of *this and rhs

      "},{"location":"api/basic_json/operator_spaceship/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this function never throws exceptions.

      "},{"location":"api/basic_json/operator_spaceship/#complexity","title":"Complexity","text":"

      Linear.

      "},{"location":"api/basic_json/operator_spaceship/#notes","title":"Notes","text":"

      Comparing NaN

      • NaN values are unordered within the domain of numbers. The following comparisons all yield std::partial_ordering::unordered:
        1. Comparing a NaN with itself.
        2. Comparing a NaN with another NaN.
        3. Comparing a NaN and any other number.
      "},{"location":"api/basic_json/operator_spaceship/#examples","title":"Examples","text":"Example: (1) comparing JSON values

      The example demonstrates comparing several JSON values.

      #include <compare>\n#include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nconst char* to_string(const std::partial_ordering& po)\n{\n    if (std::is_lt(po))\n    {\n        return \"less\";\n    }\n    else if (std::is_gt(po))\n    {\n        return \"greater\";\n    }\n    else if (std::is_eq(po))\n    {\n        return \"equivalent\";\n    }\n    return \"unordered\";\n}\n\nint main()\n{\n    // create several JSON values\n    json array_1 = {1, 2, 3};\n    json array_2 = {1, 2, 4};\n    json object_1 = {{\"A\", \"a\"}, {\"B\", \"b\"}};\n    json object_2 = {{\"B\", \"b\"}, {\"A\", \"a\"}};\n    json number = 17;\n    json string = \"foo\";\n    json discarded = json(json::value_t::discarded);\n\n    // output values and comparisons\n    std::cout << array_1 << \" <=> \" << array_2 << \" := \" << to_string(array_1 <=> array_2) << '\\n'; // *NOPAD*\n    std::cout << object_1 << \" <=> \" << object_2 << \" := \" << to_string(object_1 <=> object_2) << '\\n'; // *NOPAD*\n    std::cout << string << \" <=> \" << number << \" := \" << to_string(string <=> number) << '\\n'; // *NOPAD*\n    std::cout << string << \" <=> \" << discarded << \" := \" << to_string(string <=> discarded) << '\\n'; // *NOPAD*\n}\n

      Output:

      [1,2,3] <=> [1,2,4] := less\n{\"A\":\"a\",\"B\":\"b\"} <=> {\"A\":\"a\",\"B\":\"b\"} := equivalent\n\"foo\" <=> 17 := greater\n\"foo\" <=> <discarded> := unordered\n
      Example: (2) comparing JSON values and scalars

      The example demonstrates comparing several JSON values and scalars.

      #include <compare>\n#include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nconst char* to_string(const std::partial_ordering& po)\n{\n    if (std::is_lt(po))\n    {\n        return \"less\";\n    }\n    else if (std::is_gt(po))\n    {\n        return \"greater\";\n    }\n    else if (std::is_eq(po))\n    {\n        return \"equivalent\";\n    }\n    return \"unordered\";\n}\n\nint main()\n{\n    using float_limits = std::numeric_limits<json::number_float_t>;\n    constexpr auto nan = float_limits::quiet_NaN();\n\n    // create several JSON values\n    json boolean = false;\n    json number = 17;\n    json string = \"17\";\n\n    // output values and comparisons\n    std::cout << std::boolalpha << std::fixed;\n    std::cout << boolean << \" <=> \" << true << \" := \" << to_string(boolean <=> true) << '\\n'; // *NOPAD*\n    std::cout << number << \" <=> \" << 17.0 << \" := \" << to_string(number <=> 17.0) << '\\n'; // *NOPAD*\n    std::cout << number << \" <=> \" << nan << \" := \" << to_string(number <=> nan) << '\\n'; // *NOPAD*\n    std::cout << string << \" <=> \" << 17 << \" := \" << to_string(string <=> 17) << '\\n'; // *NOPAD*\n}\n

      Output:

      false <=> true := less\n17 <=> 17.000000 := equivalent\n17 <=> nan := unordered\n\"17\" <=> 17 := greater\n
      "},{"location":"api/basic_json/operator_spaceship/#see-also","title":"See also","text":"
      • operator== - comparison: equal
      • operator!= - comparison: not equal
      • operator< - comparison: less than
      • operator<= - comparison: less than or equal
      • operator> - comparison: greater than
      • operator>= - comparison: greater than or equal
      "},{"location":"api/basic_json/operator_spaceship/#version-history","title":"Version history","text":"
      1. Added in version 3.11.0.
      2. Added in version 3.11.0.
      "},{"location":"api/basic_json/operator_value_t/","title":"nlohmann::basic_json::operator value_t","text":"
      constexpr operator value_t() const noexcept;\n

      Return the type of the JSON value as a value from the value_t enumeration.

      "},{"location":"api/basic_json/operator_value_t/#return-value","title":"Return value","text":"

      the type of the JSON value

      Value type return value null value_t::null boolean value_t::boolean string value_t::string number (integer) value_t::number_integer number (unsigned integer) value_t::number_unsigned number (floating-point) value_t::number_float object value_t::object array value_t::array binary value_t::binary discarded value_t::discarded"},{"location":"api/basic_json/operator_value_t/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/operator_value_t/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/operator_value_t/#examples","title":"Examples","text":"Example

      The following code exemplifies operator value_t() for all JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = -17;\n    json j_number_unsigned = 42u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n\n    // call operator value_t()\n    json::value_t t_null = j_null;\n    json::value_t t_boolean = j_boolean;\n    json::value_t t_number_integer = j_number_integer;\n    json::value_t t_number_unsigned = j_number_unsigned;\n    json::value_t t_number_float = j_number_float;\n    json::value_t t_object = j_object;\n    json::value_t t_array = j_array;\n    json::value_t t_string = j_string;\n\n    // print types\n    std::cout << std::boolalpha;\n    std::cout << (t_null == json::value_t::null) << '\\n';\n    std::cout << (t_boolean == json::value_t::boolean) << '\\n';\n    std::cout << (t_number_integer == json::value_t::number_integer) << '\\n';\n    std::cout << (t_number_unsigned == json::value_t::number_unsigned) << '\\n';\n    std::cout << (t_number_float == json::value_t::number_float) << '\\n';\n    std::cout << (t_object == json::value_t::object) << '\\n';\n    std::cout << (t_array == json::value_t::array) << '\\n';\n    std::cout << (t_string == json::value_t::string) << '\\n';\n}\n

      Output:

      true\ntrue\ntrue\ntrue\ntrue\ntrue\ntrue\ntrue\n
      "},{"location":"api/basic_json/operator_value_t/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      • Added unsigned integer type in version 2.0.0.
      • Added binary type in version 3.8.0.
      "},{"location":"api/basic_json/other_error/","title":"nlohmann::basic_json::other_error","text":"
      class other_error : public exception;\n

      This exception is thrown in case of errors that cannot be classified with the other exception types.

      Exceptions have ids 5xx (see list of other errors).

      classDiagram\n  direction LR\n\n    class std_exception [\"std::exception\"] {\n        <<interface>>\n    }\n\n    class json_exception [\"basic_json::exception\"] {\n        +const int id\n        +const char* what() const\n    }\n\n    class json_parse_error [\"basic_json::parse_error\"] {\n        +const std::size_t byte\n    }\n\n    class json_invalid_iterator [\"basic_json::invalid_iterator\"]\n    class json_type_error [\"basic_json::type_error\"]\n    class json_out_of_range [\"basic_json::out_of_range\"]\n    class json_other_error [\"basic_json::other_error\"]\n\n    std_exception <|-- json_exception\n    json_exception <|-- json_parse_error\n    json_exception <|-- json_invalid_iterator\n    json_exception <|-- json_type_error\n    json_exception <|-- json_out_of_range\n    json_exception <|-- json_other_error\n\n    style json_other_error fill:#CCCCFF
      "},{"location":"api/basic_json/other_error/#member-functions","title":"Member functions","text":"
      • what - returns explanatory string
      "},{"location":"api/basic_json/other_error/#member-variables","title":"Member variables","text":"
      • id - the id of the exception
      "},{"location":"api/basic_json/other_error/#examples","title":"Examples","text":"Example

      The following code shows how a other_error exception can be caught.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    try\n    {\n        // executing a failing JSON Patch operation\n        json value = R\"({\n            \"best_biscuit\": {\n                \"name\": \"Oreo\"\n            }\n        })\"_json;\n        json patch = R\"([{\n            \"op\": \"test\",\n            \"path\": \"/best_biscuit/name\",\n            \"value\": \"Choco Leibniz\"\n        }])\"_json;\n        value.patch(patch);\n    }\n    catch (const json::other_error& e)\n    {\n        // output exception information\n        std::cout << \"message: \" << e.what() << '\\n'\n                  << \"exception id: \" << e.id << std::endl;\n    }\n}\n

      Output:

      message: [json.exception.other_error.501] unsuccessful: {\"op\":\"test\",\"path\":\"/best_biscuit/name\",\"value\":\"Choco Leibniz\"}\nexception id: 501\n
      "},{"location":"api/basic_json/other_error/#see-also","title":"See also","text":"
      • List of other errors
      • parse_error for exceptions indicating a parse error
      • invalid_iterator for exceptions indicating errors with iterators
      • type_error for exceptions indicating executing a member function with a wrong type
      • out_of_range for exceptions indicating access out of the defined range
      "},{"location":"api/basic_json/other_error/#version-history","title":"Version history","text":"
      • Since version 3.0.0.
      "},{"location":"api/basic_json/out_of_range/","title":"nlohmann::basic_json::out_of_range","text":"
      class out_of_range : public exception;\n

      This exception is thrown in case a library function is called on an input parameter that exceeds the expected range, for instance in case of array indices or nonexisting object keys.

      Exceptions have ids 4xx (see list of out-of-range errors).

      classDiagram\n  direction LR\n\n    class std_exception [\"std::exception\"] {\n        <<interface>>\n    }\n\n    class json_exception [\"basic_json::exception\"] {\n        +const int id\n        +const char* what() const\n    }\n\n    class json_parse_error [\"basic_json::parse_error\"] {\n        +const std::size_t byte\n    }\n\n    class json_invalid_iterator [\"basic_json::invalid_iterator\"]\n    class json_type_error [\"basic_json::type_error\"]\n    class json_out_of_range [\"basic_json::out_of_range\"]\n    class json_other_error [\"basic_json::other_error\"]\n\n    std_exception <|-- json_exception\n    json_exception <|-- json_parse_error\n    json_exception <|-- json_invalid_iterator\n    json_exception <|-- json_type_error\n    json_exception <|-- json_out_of_range\n    json_exception <|-- json_other_error\n\n    style json_out_of_range fill:#CCCCFF
      "},{"location":"api/basic_json/out_of_range/#member-functions","title":"Member functions","text":"
      • what - returns explanatory string
      "},{"location":"api/basic_json/out_of_range/#member-variables","title":"Member variables","text":"
      • id - the id of the exception
      "},{"location":"api/basic_json/out_of_range/#examples","title":"Examples","text":"Example

      The following code shows how a out_of_range exception can be caught.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    try\n    {\n        // calling at() for an invalid index\n        json j = {1, 2, 3, 4};\n        j.at(4) = 10;\n    }\n    catch (const json::out_of_range& e)\n    {\n        // output exception information\n        std::cout << \"message: \" << e.what() << '\\n'\n                  << \"exception id: \" << e.id << std::endl;\n    }\n}\n

      Output:

      message: [json.exception.out_of_range.401] array index 4 is out of range\nexception id: 401\n
      "},{"location":"api/basic_json/out_of_range/#see-also","title":"See also","text":"
      • List of out-of-range errors
      • parse_error for exceptions indicating a parse error
      • invalid_iterator for exceptions indicating errors with iterators
      • type_error for exceptions indicating executing a member function with a wrong type
      • other_error for exceptions indicating other library errors
      "},{"location":"api/basic_json/out_of_range/#version-history","title":"Version history","text":"
      • Since version 3.0.0.
      "},{"location":"api/basic_json/parse/","title":"nlohmann::basic_json::parse","text":"
      // (1)\ntemplate<typename InputType>\nstatic basic_json parse(InputType&& i,\n                        const parser_callback_t cb = nullptr,\n                        const bool allow_exceptions = true,\n                        const bool ignore_comments = false);\n\n// (2)\ntemplate<typename IteratorType>\nstatic basic_json parse(IteratorType first, IteratorType last,\n                        const parser_callback_t cb = nullptr,\n                        const bool allow_exceptions = true,\n                        const bool ignore_comments = false);\n
      1. Deserialize from a compatible input.
      2. Deserialize from a pair of character iterators

        The value_type of the iterator must be an integral type with size of 1, 2 or 4 bytes, which will be interpreted respectively as UTF-8, UTF-16 and UTF-32.

      "},{"location":"api/basic_json/parse/#template-parameters","title":"Template parameters","text":"InputType

      A compatible input, for instance:

      • an std::istream object
      • a FILE pointer (throws if null)
      • a C-style array of characters
      • a pointer to a null-terminated string of single byte characters (throws if null)
      • a std::string
      • an object obj for which begin(obj) and end(obj) produces a valid pair of iterators.
      IteratorType

      a compatible iterator type, for instance.

      • a pair of std::string::iterator or std::vector<std::uint8_t>::iterator
      • a pair of pointers such as ptr and ptr + len
      "},{"location":"api/basic_json/parse/#parameters","title":"Parameters","text":"i (in) Input to parse from. cb (in) a parser callback function of type parser_callback_t which is used to control the deserialization by filtering unwanted values (optional) allow_exceptions (in) whether to throw exceptions in case of a parse error (optional, true by default) ignore_comments (in) whether comments should be ignored and treated like whitespace (true) or yield a parse error (false); (optional, false by default) first (in) iterator to start of character range last (in) iterator to end of character range"},{"location":"api/basic_json/parse/#return-value","title":"Return value","text":"

      Deserialized JSON value; in case of a parse error and allow_exceptions set to false, the return value will be value_t::discarded. The latter can be checked with is_discarded.

      "},{"location":"api/basic_json/parse/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

      "},{"location":"api/basic_json/parse/#exceptions","title":"Exceptions","text":"
      • Throws parse_error.101 in case of an unexpected token, or empty input like a null FILE* or char* pointer.
      • Throws parse_error.102 if to_unicode fails or surrogate error.
      • Throws parse_error.103 if to_unicode fails.
      "},{"location":"api/basic_json/parse/#complexity","title":"Complexity","text":"

      Linear in the length of the input. The parser is a predictive LL(1) parser. The complexity can be higher if the parser callback function cb or reading from (1) the input i or (2) the iterator range [first, last] has a super-linear complexity.

      "},{"location":"api/basic_json/parse/#notes","title":"Notes","text":"

      A UTF-8 byte order mark is silently ignored.

      "},{"location":"api/basic_json/parse/#examples","title":"Examples","text":"Parsing from a character array

      The example below demonstrates the parse() function reading from an array.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // a JSON text\n    char text[] = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, 38793]\n        }\n    }\n    )\";\n\n    // parse and serialize JSON\n    json j_complete = json::parse(text);\n    std::cout << std::setw(4) << j_complete << \"\\n\\n\";\n}\n

      Output:

      {\n    \"Image\": {\n        \"Animated\": false,\n        \"Height\": 600,\n        \"IDs\": [\n            116,\n            943,\n            234,\n            38793\n        ],\n        \"Thumbnail\": {\n            \"Height\": 125,\n            \"Url\": \"http://www.example.com/image/481989943\",\n            \"Width\": 100\n        },\n        \"Title\": \"View from 15th Floor\",\n        \"Width\": 800\n    }\n}\n
      Parsing from a string

      The example below demonstrates the parse() function with and without callback function.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, 38793]\n        }\n    }\n    )\";\n\n    // parse and serialize JSON\n    json j_complete = json::parse(text);\n    std::cout << std::setw(4) << j_complete << \"\\n\\n\";\n\n    // define parser callback\n    json::parser_callback_t cb = [](int depth, json::parse_event_t event, json & parsed)\n    {\n        // skip object elements with key \"Thumbnail\"\n        if (event == json::parse_event_t::key and parsed == json(\"Thumbnail\"))\n        {\n            return false;\n        }\n        else\n        {\n            return true;\n        }\n    };\n\n    // parse (with callback) and serialize JSON\n    json j_filtered = json::parse(text, cb);\n    std::cout << std::setw(4) << j_filtered << '\\n';\n}\n

      Output:

      {\n    \"Image\": {\n        \"Animated\": false,\n        \"Height\": 600,\n        \"IDs\": [\n            116,\n            943,\n            234,\n            38793\n        ],\n        \"Thumbnail\": {\n            \"Height\": 125,\n            \"Url\": \"http://www.example.com/image/481989943\",\n            \"Width\": 100\n        },\n        \"Title\": \"View from 15th Floor\",\n        \"Width\": 800\n    }\n}\n\n{\n    \"Image\": {\n        \"Animated\": false,\n        \"Height\": 600,\n        \"IDs\": [\n            116,\n            943,\n            234,\n            38793\n        ],\n        \"Title\": \"View from 15th Floor\",\n        \"Width\": 800\n    }\n}\n
      Parsing from an input stream

      The example below demonstrates the parse() function with and without callback function.

      #include <iostream>\n#include <iomanip>\n#include <sstream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, 38793]\n        }\n    }\n    )\";\n\n    // fill a stream with JSON text\n    std::stringstream ss;\n    ss << text;\n\n    // parse and serialize JSON\n    json j_complete = json::parse(ss);\n    std::cout << std::setw(4) << j_complete << \"\\n\\n\";\n\n    // define parser callback\n    json::parser_callback_t cb = [](int depth, json::parse_event_t event, json & parsed)\n    {\n        // skip object elements with key \"Thumbnail\"\n        if (event == json::parse_event_t::key and parsed == json(\"Thumbnail\"))\n        {\n            return false;\n        }\n        else\n        {\n            return true;\n        }\n    };\n\n    // fill a stream with JSON text\n    ss.clear();\n    ss << text;\n\n    // parse (with callback) and serialize JSON\n    json j_filtered = json::parse(ss, cb);\n    std::cout << std::setw(4) << j_filtered << '\\n';\n}\n

      Output:

      {\n    \"Image\": {\n        \"Animated\": false,\n        \"Height\": 600,\n        \"IDs\": [\n            116,\n            943,\n            234,\n            38793\n        ],\n        \"Thumbnail\": {\n            \"Height\": 125,\n            \"Url\": \"http://www.example.com/image/481989943\",\n            \"Width\": 100\n        },\n        \"Title\": \"View from 15th Floor\",\n        \"Width\": 800\n    }\n}\n\n{\n    \"Image\": {\n        \"Animated\": false,\n        \"Height\": 600,\n        \"IDs\": [\n            116,\n            943,\n            234,\n            38793\n        ],\n        \"Title\": \"View from 15th Floor\",\n        \"Width\": 800\n    }\n}\n
      Parsing from a contiguous container

      The example below demonstrates the parse() function reading from a contiguous container.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // a JSON text given as std::vector\n    std::vector<std::uint8_t> text = {'[', '1', ',', '2', ',', '3', ']', '\\0'};\n\n    // parse and serialize JSON\n    json j_complete = json::parse(text);\n    std::cout << std::setw(4) << j_complete << \"\\n\\n\";\n}\n

      Output:

      [\n    1,\n    2,\n    3\n]\n
      Parsing from a non null-terminated string

      The example below demonstrates the parse() function reading from a string that is not null-terminated.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // a JSON text given as string that is not null-terminated\n    const char* ptr = \"[1,2,3]another value\";\n\n    // parse and serialize JSON\n    json j_complete = json::parse(ptr, ptr + 7);\n    std::cout << std::setw(4) << j_complete << \"\\n\\n\";\n}\n

      Output:

      [\n    1,\n    2,\n    3\n]\n
      Parsing from an iterator pair

      The example below demonstrates the parse() function reading from an iterator pair.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // a JSON text given an input with other values\n    std::vector<std::uint8_t> input = {'[', '1', ',', '2', ',', '3', ']', 'o', 't', 'h', 'e', 'r'};\n\n    // parse and serialize JSON\n    json j_complete = json::parse(input.begin(), input.begin() + 7);\n    std::cout << std::setw(4) << j_complete << \"\\n\\n\";\n}\n

      Output:

      [\n    1,\n    2,\n    3\n]\n
      Effect of allow_exceptions parameter

      The example below demonstrates the effect of the allow_exceptions parameter in the \u00b4parse()` function.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // an invalid JSON text\n    std::string text = R\"(\n    {\n        \"key\": \"value without closing quotes\n    }\n    )\";\n\n    // parse with exceptions\n    try\n    {\n        json j = json::parse(text);\n    }\n    catch (const json::parse_error& e)\n    {\n        std::cout << e.what() << std::endl;\n    }\n\n    // parse without exceptions\n    json j = json::parse(text, nullptr, false);\n\n    if (j.is_discarded())\n    {\n        std::cout << \"the input is invalid JSON\" << std::endl;\n    }\n    else\n    {\n        std::cout << \"the input is valid JSON: \" << j << std::endl;\n    }\n}\n

      Output:

      [json.exception.parse_error.101] parse error at line 4, column 0: syntax error while parsing value - invalid string: control character U+000A (LF) must be escaped to \\u000A or \\n; last read: '\"value without closing quotes<U+000A>'\nthe input is invalid JSON\n
      "},{"location":"api/basic_json/parse/#see-also","title":"See also","text":"
      • accept - check if the input is valid JSON
      • operator>> - deserialize from stream
      "},{"location":"api/basic_json/parse/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      • Overload for contiguous containers (1) added in version 2.0.3.
      • Ignoring comments via ignore_comments added in version 3.9.0.
      • Changed runtime assertion in case of FILE* null pointers to exception in version 3.11.4.

      Deprecation

      Overload (2) replaces calls to parse with a pair of iterators as their first parameter which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like parse({ptr, ptr+len}, ...); with parse(ptr, ptr+len, ...);.

      You should be warned by your compiler with a -Wdeprecated-declarations warning if you are using a deprecated function.

      "},{"location":"api/basic_json/parse_error/","title":"nlohmann::basic_json::parse_error","text":"
      class parse_error : public exception;\n

      This exception is thrown by the library when a parse error occurs. Parse errors can occur during the deserialization of JSON text, BSON, CBOR, MessagePack, UBJSON, as well as when using JSON Patch.

      Member byte holds the byte index of the last read character in the input file (see note below).

      Exceptions have ids 1xx (see list of parse errors).

      classDiagram\n  direction LR\n\n    class std_exception [\"std::exception\"] {\n        <<interface>>\n    }\n\n    class json_exception [\"basic_json::exception\"] {\n        +const int id\n        +const char* what() const\n    }\n\n    class json_parse_error [\"basic_json::parse_error\"] {\n        +const std::size_t byte\n    }\n\n    class json_invalid_iterator [\"basic_json::invalid_iterator\"]\n    class json_type_error [\"basic_json::type_error\"]\n    class json_out_of_range [\"basic_json::out_of_range\"]\n    class json_other_error [\"basic_json::other_error\"]\n\n    std_exception <|-- json_exception\n    json_exception <|-- json_parse_error\n    json_exception <|-- json_invalid_iterator\n    json_exception <|-- json_type_error\n    json_exception <|-- json_out_of_range\n    json_exception <|-- json_other_error\n\n    style json_parse_error fill:#CCCCFF
      "},{"location":"api/basic_json/parse_error/#member-functions","title":"Member functions","text":"
      • what - returns explanatory string
      "},{"location":"api/basic_json/parse_error/#member-variables","title":"Member variables","text":"
      • id - the id of the exception
      • byte - byte index of the parse error
      "},{"location":"api/basic_json/parse_error/#notes","title":"Notes","text":"

      For an input with n bytes, 1 is the index of the first character and n+1 is the index of the terminating null byte or the end of file. This also holds true when reading a byte vector for binary formats.

      "},{"location":"api/basic_json/parse_error/#examples","title":"Examples","text":"Example

      The following code shows how a parse_error exception can be caught.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    try\n    {\n        // parsing input with a syntax error\n        json::parse(\"[1,2,3,]\");\n    }\n    catch (const json::parse_error& e)\n    {\n        // output exception information\n        std::cout << \"message: \" << e.what() << '\\n'\n                  << \"exception id: \" << e.id << '\\n'\n                  << \"byte position of error: \" << e.byte << std::endl;\n    }\n}\n

      Output:

      message: [json.exception.parse_error.101] parse error at line 1, column 8: syntax error while parsing value - unexpected ']'; expected '[', '{', or a literal\nexception id: 101\nbyte position of error: 8\n
      "},{"location":"api/basic_json/parse_error/#see-also","title":"See also","text":"
      • List of parse errors
      • invalid_iterator for exceptions indicating errors with iterators
      • type_error for exceptions indicating executing a member function with a wrong type
      • out_of_range for exceptions indicating access out of the defined range
      • other_error for exceptions indicating other library errors
      "},{"location":"api/basic_json/parse_error/#version-history","title":"Version history","text":"
      • Since version 3.0.0.
      "},{"location":"api/basic_json/parse_event_t/","title":"nlohmann::basic_json::parse_event_t","text":"
      enum class parse_event_t : std::uint8_t {\n    object_start,\n    object_end,\n    array_start,\n    array_end,\n    key,\n    value\n};\n

      The parser callback distinguishes the following events:

      • object_start: the parser read { and started to process a JSON object
      • key: the parser read a key of a value in an object
      • object_end: the parser read } and finished processing a JSON object
      • array_start: the parser read [ and started to process a JSON array
      • array_end: the parser read ] and finished processing a JSON array
      • value: the parser finished reading a JSON value
      "},{"location":"api/basic_json/parse_event_t/#examples","title":"Examples","text":""},{"location":"api/basic_json/parse_event_t/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/parser_callback_t/","title":"nlohmann::basic_json::parser_callback_t","text":"
      template<typename BasicJsonType>\nusing parser_callback_t =\n    std::function<bool(int depth, parse_event_t event, BasicJsonType& parsed)>;\n

      With a parser callback function, the result of parsing a JSON text can be influenced. When passed to parse, it is called on certain events (passed as parse_event_t via parameter event) with a set recursion depth depth and context JSON value parsed. The return value of the callback function is a boolean indicating whether the element that emitted the callback shall be kept or not.

      We distinguish six scenarios (determined by the event type) in which the callback function can be called. The following table describes the values of the parameters depth, event, and parsed.

      parameter event description parameter depth parameter parsed parse_event_t::object_start the parser read { and started to process a JSON object depth of the parent of the JSON object a JSON value with type discarded parse_event_t::key the parser read a key of a value in an object depth of the currently parsed JSON object a JSON string containing the key parse_event_t::object_end the parser read } and finished processing a JSON object depth of the parent of the JSON object the parsed JSON object parse_event_t::array_start the parser read [ and started to process a JSON array depth of the parent of the JSON array a JSON value with type discarded parse_event_t::array_end the parser read ] and finished processing a JSON array depth of the parent of the JSON array the parsed JSON array parse_event_t::value the parser finished reading a JSON value depth of the value the parsed JSON value

      Discarding a value (i.e., returning false) has different effects depending on the context in which function was called:

      • Discarded values in structured types are skipped. That is, the parser will behave as if the discarded value was never read.
      • In case a value outside a structured type is skipped, it is replaced with null. This case happens if the top-level element is skipped.
      "},{"location":"api/basic_json/parser_callback_t/#parameters","title":"Parameters","text":"depth (in) the depth of the recursion during parsing event (in) an event of type parse_event_t indicating the context in the callback function has been called parsed (in, out) the current intermediate parse result; note that writing to this value has no effect for parse_event_t::key events"},{"location":"api/basic_json/parser_callback_t/#return-value","title":"Return value","text":"

      Whether the JSON value which called the function during parsing should be kept (true) or not (false). In the latter case, it is either skipped completely or replaced by an empty discarded object.

      "},{"location":"api/basic_json/parser_callback_t/#examples","title":"Examples","text":"Example

      The example below demonstrates the parse() function with and without callback function.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, 38793]\n        }\n    }\n    )\";\n\n    // parse and serialize JSON\n    json j_complete = json::parse(text);\n    std::cout << std::setw(4) << j_complete << \"\\n\\n\";\n\n    // define parser callback\n    json::parser_callback_t cb = [](int depth, json::parse_event_t event, json & parsed)\n    {\n        // skip object elements with key \"Thumbnail\"\n        if (event == json::parse_event_t::key and parsed == json(\"Thumbnail\"))\n        {\n            return false;\n        }\n        else\n        {\n            return true;\n        }\n    };\n\n    // parse (with callback) and serialize JSON\n    json j_filtered = json::parse(text, cb);\n    std::cout << std::setw(4) << j_filtered << '\\n';\n}\n

      Output:

      {\n    \"Image\": {\n        \"Animated\": false,\n        \"Height\": 600,\n        \"IDs\": [\n            116,\n            943,\n            234,\n            38793\n        ],\n        \"Thumbnail\": {\n            \"Height\": 125,\n            \"Url\": \"http://www.example.com/image/481989943\",\n            \"Width\": 100\n        },\n        \"Title\": \"View from 15th Floor\",\n        \"Width\": 800\n    }\n}\n\n{\n    \"Image\": {\n        \"Animated\": false,\n        \"Height\": 600,\n        \"IDs\": [\n            116,\n            943,\n            234,\n            38793\n        ],\n        \"Title\": \"View from 15th Floor\",\n        \"Width\": 800\n    }\n}\n
      "},{"location":"api/basic_json/parser_callback_t/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/patch/","title":"nlohmann::basic_json::patch","text":"
      basic_json patch(const basic_json& json_patch) const;\n

      JSON Patch defines a JSON document structure for expressing a sequence of operations to apply to a JSON document. With this function, a JSON Patch is applied to the current JSON value by executing all operations from the patch.

      "},{"location":"api/basic_json/patch/#parameters","title":"Parameters","text":"json_patch (in) JSON patch document"},{"location":"api/basic_json/patch/#return-value","title":"Return value","text":"

      patched document

      "},{"location":"api/basic_json/patch/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

      "},{"location":"api/basic_json/patch/#exceptions","title":"Exceptions","text":"
      • Throws parse_error.104 if the JSON patch does not consist of an array of objects.
      • Throws parse_error.105 if the JSON patch is malformed (e.g., mandatory attributes are missing); example: \"operation add must have member path\".
      • Throws out_of_range.401 if an array index is out of range.
      • Throws out_of_range.403 if a JSON pointer inside the patch could not be resolved successfully in the current JSON value; example: \"key baz not found\".
      • Throws out_of_range.405 if JSON pointer has no parent (\"add\", \"remove\", \"move\")
      • Throws out_of_range.501 if \"test\" operation was unsuccessful.
      "},{"location":"api/basic_json/patch/#complexity","title":"Complexity","text":"

      Linear in the size of the JSON value and the length of the JSON patch. As usually only a fraction of the JSON value is affected by the patch, the complexity can usually be neglected.

      "},{"location":"api/basic_json/patch/#notes","title":"Notes","text":"

      The application of a patch is atomic: Either all operations succeed and the patched document is returned or an exception is thrown. In any case, the original value is not changed: the patch is applied to a copy of the value.

      "},{"location":"api/basic_json/patch/#examples","title":"Examples","text":"Example

      The following code shows how a JSON patch is applied to a value.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // the original document\n    json doc = R\"(\n        {\n          \"baz\": \"qux\",\n          \"foo\": \"bar\"\n        }\n    )\"_json;\n\n    // the patch\n    json patch = R\"(\n        [\n          { \"op\": \"replace\", \"path\": \"/baz\", \"value\": \"boo\" },\n          { \"op\": \"add\", \"path\": \"/hello\", \"value\": [\"world\"] },\n          { \"op\": \"remove\", \"path\": \"/foo\"}\n        ]\n    )\"_json;\n\n    // apply the patch\n    json patched_doc = doc.patch(patch);\n\n    // output original and patched document\n    std::cout << std::setw(4) << doc << \"\\n\\n\"\n              << std::setw(4) << patched_doc << std::endl;\n}\n

      Output:

      {\n    \"baz\": \"qux\",\n    \"foo\": \"bar\"\n}\n\n{\n    \"baz\": \"boo\",\n    \"hello\": [\n        \"world\"\n    ]\n}\n
      "},{"location":"api/basic_json/patch/#see-also","title":"See also","text":"
      • RFC 6902 (JSON Patch)
      • RFC 6901 (JSON Pointer)
      • patch_inplace applies a JSON Patch without creating a copy of the document
      • merge_patch applies a JSON Merge Patch
      "},{"location":"api/basic_json/patch/#version-history","title":"Version history","text":"
      • Added in version 2.0.0.
      "},{"location":"api/basic_json/patch_inplace/","title":"nlohmann::basic_json::patch_inplace","text":"
      void patch_inplace(const basic_json& json_patch) const;\n

      JSON Patch defines a JSON document structure for expressing a sequence of operations to apply to a JSON document. With this function, a JSON Patch is applied to the current JSON value by executing all operations from the patch. This function applies a JSON patch in place and returns void.

      "},{"location":"api/basic_json/patch_inplace/#parameters","title":"Parameters","text":"json_patch (in) JSON patch document"},{"location":"api/basic_json/patch_inplace/#exception-safety","title":"Exception safety","text":"

      No guarantees, value may be corrupted by an unsuccessful patch operation.

      "},{"location":"api/basic_json/patch_inplace/#exceptions","title":"Exceptions","text":"
      • Throws parse_error.104 if the JSON patch does not consist of an array of objects.
      • Throws parse_error.105 if the JSON patch is malformed (e.g., mandatory attributes are missing); example: \"operation add must have member path\".
      • Throws out_of_range.401 if an array index is out of range.
      • Throws out_of_range.403 if a JSON pointer inside the patch could not be resolved successfully in the current JSON value; example: \"key baz not found\".
      • Throws out_of_range.405 if JSON pointer has no parent (\"add\", \"remove\", \"move\")
      • Throws out_of_range.501 if \"test\" operation was unsuccessful.
      "},{"location":"api/basic_json/patch_inplace/#complexity","title":"Complexity","text":"

      Linear in the size of the JSON value and the length of the JSON patch. As usually only a fraction of the JSON value is affected by the patch, the complexity can usually be neglected.

      "},{"location":"api/basic_json/patch_inplace/#notes","title":"Notes","text":"

      Unlike patch, patch_inplace applies the operation \"in place\" and no copy of the JSON value is created. That makes it faster for large documents by avoiding the copy. However, the JSON value might be corrupted if the function throws an exception.

      "},{"location":"api/basic_json/patch_inplace/#examples","title":"Examples","text":"Example

      The following code shows how a JSON patch is applied to a value.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // the original document\n    json doc = R\"(\n        {\n          \"baz\": \"qux\",\n          \"foo\": \"bar\"\n        }\n    )\"_json;\n\n    // the patch\n    json patch = R\"(\n        [\n          { \"op\": \"replace\", \"path\": \"/baz\", \"value\": \"boo\" },\n          { \"op\": \"add\", \"path\": \"/hello\", \"value\": [\"world\"] },\n          { \"op\": \"remove\", \"path\": \"/foo\"}\n        ]\n    )\"_json;\n\n    // output original document\n    std::cout << \"Before\\n\" << std::setw(4) << doc << std::endl;\n\n    // apply the patch\n    doc.patch_inplace(patch);\n\n    // output patched document\n    std::cout << \"\\nAfter\\n\" << std::setw(4) << doc << std::endl;\n}\n

      Output:

      Before\n{\n    \"baz\": \"qux\",\n    \"foo\": \"bar\"\n}\n\nAfter\n{\n    \"baz\": \"boo\",\n    \"hello\": [\n        \"world\"\n    ]\n}\n
      "},{"location":"api/basic_json/patch_inplace/#see-also","title":"See also","text":"
      • RFC 6902 (JSON Patch)
      • RFC 6901 (JSON Pointer)
      • patch applies a JSON Merge Patch
      • merge_patch applies a JSON Merge Patch
      "},{"location":"api/basic_json/patch_inplace/#version-history","title":"Version history","text":"
      • Added in version 3.11.0.
      "},{"location":"api/basic_json/push_back/","title":"nlohmann::basic_json::push_back","text":"
      // (1)\nvoid push_back(basic_json&& val);\nvoid push_back(const basic_json& val);\n\n// (2)\nvoid push_back(const typename object_t::value_type& val);\n\n// (3)\nvoid push_back(initializer_list_t init);\n
      1. Appends the given element val to the end of the JSON array. If the function is called on a JSON null value, an empty array is created before appending val.

      2. Inserts the given element val to the JSON object. If the function is called on a JSON null value, an empty object is created before inserting val.

      3. This function allows using push_back with an initializer list. In case

        1. the current value is an object,
        2. the initializer list init contains only two elements, and
        3. the first element of init is a string,

        init is converted into an object element and added using push_back(const typename object_t::value_type&). Otherwise, init is converted to a JSON value and added using push_back(basic_json&&).

      "},{"location":"api/basic_json/push_back/#iterator-invalidation","title":"Iterator invalidation","text":"

      For all cases where an element is added to an array, a reallocation can happen, in which case all iterators (including the end() iterator) and all references to the elements are invalidated. Otherwise, only the end() iterator is invalidated.

      For ordered_json, also adding an element to an object can yield a reallocation which again invalidates all iterators and all references.

      "},{"location":"api/basic_json/push_back/#parameters","title":"Parameters","text":"val (in) the value to add to the JSON array/object init (in) an initializer list"},{"location":"api/basic_json/push_back/#exceptions","title":"Exceptions","text":"

      All functions can throw the following exception: - Throws type_error.308 when called on a type other than JSON array or null; example: \"cannot use push_back() with number\"

      "},{"location":"api/basic_json/push_back/#complexity","title":"Complexity","text":"
      1. Amortized constant.
      2. Logarithmic in the size of the container, O(log(size())).
      3. Linear in the size of the initializer list init.
      "},{"location":"api/basic_json/push_back/#notes","title":"Notes","text":"

      (3) This function is required to resolve an ambiguous overload error, because pairs like {\"key\", \"value\"} can be both interpreted as object_t::value_type or std::initializer_list<basic_json>, see #235 for more information.

      "},{"location":"api/basic_json/push_back/#examples","title":"Examples","text":"Example: (1) add element to array

      The example shows how push_back() and += can be used to add elements to a JSON array. Note how the null value was silently converted to a JSON array.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json array = {1, 2, 3, 4, 5};\n    json null;\n\n    // print values\n    std::cout << array << '\\n';\n    std::cout << null << '\\n';\n\n    // add values\n    array.push_back(6);\n    array += 7;\n    null += \"first\";\n    null += \"second\";\n\n    // print values\n    std::cout << array << '\\n';\n    std::cout << null << '\\n';\n}\n

      Output:

      [1,2,3,4,5]\nnull\n[1,2,3,4,5,6,7]\n[\"first\",\"second\"]\n
      Example: (2) add element to object

      The example shows how push_back() and += can be used to add elements to a JSON object. Note how the null value was silently converted to a JSON object.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json object = {{\"one\", 1}, {\"two\", 2}};\n    json null;\n\n    // print values\n    std::cout << object << '\\n';\n    std::cout << null << '\\n';\n\n    // add values\n    object.push_back(json::object_t::value_type(\"three\", 3));\n    object += json::object_t::value_type(\"four\", 4);\n    null += json::object_t::value_type(\"A\", \"a\");\n    null += json::object_t::value_type(\"B\", \"b\");\n\n    // print values\n    std::cout << object << '\\n';\n    std::cout << null << '\\n';\n}\n

      Output:

      {\"one\":1,\"two\":2}\nnull\n{\"four\":4,\"one\":1,\"three\":3,\"two\":2}\n{\"A\":\"a\",\"B\":\"b\"}\n
      Example: (3) add to object from initializer list

      The example shows how initializer lists are treated as objects when possible.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json object = {{\"one\", 1}, {\"two\", 2}};\n    json null;\n\n    // print values\n    std::cout << object << '\\n';\n    std::cout << null << '\\n';\n\n    // add values:\n    object.push_back({\"three\", 3});  // object is extended\n    object += {\"four\", 4};           // object is extended\n    null.push_back({\"five\", 5});     // null is converted to array\n\n    // print values\n    std::cout << object << '\\n';\n    std::cout << null << '\\n';\n\n    // would throw:\n    //object.push_back({1, 2, 3});\n}\n

      Output:

      {\"one\":1,\"two\":2}\nnull\n{\"four\":4,\"one\":1,\"three\":3,\"two\":2}\n[[\"five\",5]]\n
      "},{"location":"api/basic_json/push_back/#see-also","title":"See also","text":"
      • emplace_back add a value to an array
      • operator+= add a value to an array/object
      "},{"location":"api/basic_json/push_back/#version-history","title":"Version history","text":"
      1. Since version 1.0.0.
      2. Since version 1.0.0.
      3. Since version 2.0.0.
      "},{"location":"api/basic_json/rbegin/","title":"nlohmann::basic_json::rbegin","text":"
      reverse_iterator rbegin() noexcept;\nconst_reverse_iterator rbegin() const noexcept;\n

      Returns an iterator to the reverse-beginning; that is, the last element.

      "},{"location":"api/basic_json/rbegin/#return-value","title":"Return value","text":"

      reverse iterator to the first element

      "},{"location":"api/basic_json/rbegin/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/rbegin/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/rbegin/#examples","title":"Examples","text":"Example

      The following code shows an example for rbegin().

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create an array value\n    json array = {1, 2, 3, 4, 5};\n\n    // get an iterator to the reverse-beginning\n    json::reverse_iterator it = array.rbegin();\n\n    // serialize the element that the iterator points to\n    std::cout << *it << '\\n';\n}\n

      Output:

      5\n
      "},{"location":"api/basic_json/rbegin/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/rend/","title":"nlohmann::basic_json::rend","text":"
      reverse_iterator rend() noexcept;\nconst_reverse_iterator rend() const noexcept;\n

      Returns an iterator to the reverse-end; that is, one before the first element. This element acts as a placeholder, attempting to access it results in undefined behavior.

      "},{"location":"api/basic_json/rend/#return-value","title":"Return value","text":"

      reverse iterator to the element following the last element

      "},{"location":"api/basic_json/rend/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/rend/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/rend/#examples","title":"Examples","text":"Example

      The following code shows an example for eend().

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create an array value\n    json array = {1, 2, 3, 4, 5};\n\n    // get an iterator to the reverse-end\n    json::reverse_iterator it = array.rend();\n\n    // increment the iterator to point to the first element\n    --it;\n\n    // serialize the element that the iterator points to\n    std::cout << *it << '\\n';\n}\n

      Output:

      1\n
      "},{"location":"api/basic_json/rend/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/sax_parse/","title":"nlohmann::basic_json::sax_parse","text":"
      // (1)\ntemplate <typename InputType, typename SAX>\nstatic bool sax_parse(InputType&& i,\n                      SAX* sax,\n                      input_format_t format = input_format_t::json,\n                      const bool strict = true,\n                      const bool ignore_comments = false);\n\n// (2)\ntemplate<class IteratorType, class SAX>\nstatic bool sax_parse(IteratorType first, IteratorType last,\n                      SAX* sax,\n                      input_format_t format = input_format_t::json,\n                      const bool strict = true,\n                      const bool ignore_comments = false);\n

      Read from input and generate SAX events

      1. Read from a compatible input.
      2. Read from a pair of character iterators

        The value_type of the iterator must be an integral type with size of 1, 2 or 4 bytes, which will be interpreted respectively as UTF-8, UTF-16 and UTF-32.

      The SAX event lister must follow the interface of json_sax.

      "},{"location":"api/basic_json/sax_parse/#template-parameters","title":"Template parameters","text":"InputType

      A compatible input, for instance:

      • an std::istream object
      • a FILE pointer
      • a C-style array of characters
      • a pointer to a null-terminated string of single byte characters
      • an object obj for which begin(obj) and end(obj) produces a valid pair of iterators.
      IteratorType Description SAX Description"},{"location":"api/basic_json/sax_parse/#parameters","title":"Parameters","text":"i (in) Input to parse from. sax (in) SAX event listener format (in) the format to parse (JSON, CBOR, MessagePack, or UBJSON) (optional, input_format_t::json by default), see input_format_t for more information strict (in) whether the input has to be consumed completely (optional, true by default) ignore_comments (in) whether comments should be ignored and treated like whitespace (true) or yield a parse error (false); (optional, false by default) first (in) iterator to start of character range last (in) iterator to end of character range"},{"location":"api/basic_json/sax_parse/#return-value","title":"Return value","text":"

      return value of the last processed SAX event

      "},{"location":"api/basic_json/sax_parse/#exception-safety","title":"Exception safety","text":""},{"location":"api/basic_json/sax_parse/#complexity","title":"Complexity","text":"

      Linear in the length of the input. The parser is a predictive LL(1) parser. The complexity can be higher if the SAX consumer sax has a super-linear complexity.

      "},{"location":"api/basic_json/sax_parse/#notes","title":"Notes","text":"

      A UTF-8 byte order mark is silently ignored.

      "},{"location":"api/basic_json/sax_parse/#examples","title":"Examples","text":"Example

      The example below demonstrates the sax_parse() function reading from string and processing the events with a user-defined SAX event consumer.

      #include <iostream>\n#include <iomanip>\n#include <sstream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector<std::string> events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t& s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t& val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t& val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t& val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string& last_token, const json::exception& ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &sec);\n\n    // output the recorded events\n    for (auto& event : sec.events)\n    {\n        std::cout << event << \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout << \"\\nresult: \" << std::boolalpha << result << std::endl;\n}\n

      Output:

      start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634<U+000A>        }<U+000A>    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n
      "},{"location":"api/basic_json/sax_parse/#version-history","title":"Version history","text":"
      • Added in version 3.2.0.
      • Ignoring comments via ignore_comments added in version 3.9.0.

      Deprecation

      Overload (2) replaces calls to sax_parse with a pair of iterators as their first parameter which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like sax_parse({ptr, ptr+len}); with sax_parse(ptr, ptr+len);.

      "},{"location":"api/basic_json/size/","title":"nlohmann::basic_json::size","text":"
      size_type size() const noexcept;\n

      Returns the number of elements in a JSON value.

      "},{"location":"api/basic_json/size/#return-value","title":"Return value","text":"

      The return value depends on the different types and is defined as follows:

      Value type return value null 0 boolean 1 string 1 number 1 binary 1 object result of function object_t::size() array result of function array_t::size()"},{"location":"api/basic_json/size/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this function never throws exceptions.

      "},{"location":"api/basic_json/size/#complexity","title":"Complexity","text":"

      Constant, as long as array_t and object_t satisfy the Container concept; that is, their size() functions have constant complexity.

      "},{"location":"api/basic_json/size/#notes","title":"Notes","text":"

      This function does not return the length of a string stored as JSON value -- it returns the number of elements in the JSON value which is 1 in the case of a string.

      "},{"location":"api/basic_json/size/#examples","title":"Examples","text":"Example

      The following code calls size() on the different value types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_object_empty(json::value_t::object);\n    json j_array = {1, 2, 4, 8, 16};\n    json j_array_empty(json::value_t::array);\n    json j_string = \"Hello, world\";\n\n    // call size()\n    std::cout << j_null.size() << '\\n';\n    std::cout << j_boolean.size() << '\\n';\n    std::cout << j_number_integer.size() << '\\n';\n    std::cout << j_number_float.size() << '\\n';\n    std::cout << j_object.size() << '\\n';\n    std::cout << j_object_empty.size() << '\\n';\n    std::cout << j_array.size() << '\\n';\n    std::cout << j_array_empty.size() << '\\n';\n    std::cout << j_string.size() << '\\n';\n}\n

      Output:

      0\n1\n1\n1\n2\n0\n5\n0\n1\n
      "},{"location":"api/basic_json/size/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      • Extended to return 1 for binary types in version 3.8.0.
      "},{"location":"api/basic_json/std_hash/","title":"std::hash<nlohmann::basic_json>","text":"
      namespace std {\n    struct hash<nlohmann::basic_json>;\n}\n

      Return a hash value for a JSON object. The hash function tries to rely on std::hash where possible. Furthermore, the type of the JSON value is taken into account to have different hash values for null, 0, 0U, and false, etc.

      "},{"location":"api/basic_json/std_hash/#examples","title":"Examples","text":"Example

      The example shows how to calculate hash values for different JSON values.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    std::cout << \"hash(null) = \" << std::hash<json> {}(json(nullptr)) << '\\n'\n              << \"hash(false) = \" << std::hash<json> {}(json(false)) << '\\n'\n              << \"hash(0) = \" << std::hash<json> {}(json(0)) << '\\n'\n              << \"hash(0U) = \" << std::hash<json> {}(json(0U)) << '\\n'\n              << \"hash(\\\"\\\") = \" << std::hash<json> {}(json(\"\")) << '\\n'\n              << \"hash({}) = \" << std::hash<json> {}(json::object()) << '\\n'\n              << \"hash([]) = \" << std::hash<json> {}(json::array()) << '\\n'\n              << \"hash({\\\"hello\\\": \\\"world\\\"}) = \" << std::hash<json> {}(\"{\\\"hello\\\": \\\"world\\\"}\"_json)\n              << std::endl;\n}\n

      Output:

      hash(null) = 2654435769\nhash(false) = 2654436030\nhash(0) = 2654436095\nhash(0U) = 2654436156\nhash(\"\") = 6142509191626859748\nhash({}) = 2654435832\nhash([]) = 2654435899\nhash({\"hello\": \"world\"}) = 4469488738203676328\n

      Note the output is platform-dependent.

      "},{"location":"api/basic_json/std_hash/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      • Extended for arbitrary basic_json types in version 3.10.5.
      "},{"location":"api/basic_json/std_swap/","title":"std::swap<basic_json>","text":"
      namespace std {\n    void swap(nlohmann::basic_json& j1, nlohmann::basic_json& j2);\n}\n

      Exchanges the values of two JSON objects.

      "},{"location":"api/basic_json/std_swap/#parameters","title":"Parameters","text":"j1 (in, out) value to be replaced by j2 j2 (in, out) value to be replaced by j1"},{"location":"api/basic_json/std_swap/#possible-implementation","title":"Possible implementation","text":"
      void swap(nlohmann::basic_json& j1, nlohmann::basic_json& j2)\n{\n    j1.swap(j2);\n}\n
      "},{"location":"api/basic_json/std_swap/#examples","title":"Examples","text":"Example

      The following code shows how two values are swapped with std::swap.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j1 = {{\"one\", 1}, {\"two\", 2}};\n    json j2 = {1, 2, 4, 8, 16};\n\n    std::cout << \"j1 = \" << j1 << \" | j2 = \" << j2 << '\\n';\n\n    // swap values\n    std::swap(j1, j2);\n\n    std::cout << \"j1 = \" << j1 << \" | j2 = \" << j2 << std::endl;\n}\n

      Output:

      j1 = {\"one\":1,\"two\":2} | j2 = [1,2,4,8,16]\nj1 = [1,2,4,8,16] | j2 = {\"one\":1,\"two\":2}\n
      "},{"location":"api/basic_json/std_swap/#see-also","title":"See also","text":"
      • swap
      "},{"location":"api/basic_json/std_swap/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      • Extended for arbitrary basic_json types in version 3.10.5.
      "},{"location":"api/basic_json/string_t/","title":"nlohmann::basic_json::string_t","text":"
      using string_t = StringType;\n

      The type used to store JSON strings.

      RFC 8259 describes JSON strings as follows:

      A string is a sequence of zero or more Unicode characters.

      To store objects in C++, a type is defined by the template parameter described below. Unicode values are split by the JSON class into byte-sized characters during deserialization.

      "},{"location":"api/basic_json/string_t/#template-parameters","title":"Template parameters","text":"StringType the container to store strings (e.g., std::string). Note this container is used for keys/names in objects, see object_t."},{"location":"api/basic_json/string_t/#notes","title":"Notes","text":""},{"location":"api/basic_json/string_t/#default-type","title":"Default type","text":"

      With the default values for StringType (std::string), the default value for string_t is std::string.

      "},{"location":"api/basic_json/string_t/#encoding","title":"Encoding","text":"

      Strings are stored in UTF-8 encoding. Therefore, functions like std::string::size() or std::string::length() return the number of bytes in the string rather than the number of characters or glyphs.

      "},{"location":"api/basic_json/string_t/#string-comparison","title":"String comparison","text":"

      RFC 8259 states:

      Software implementations are typically required to test names of object members for equality. Implementations that transform the textual representation into sequences of Unicode code units and then perform the comparison numerically, code unit by code unit, are interoperable in the sense that implementations will agree in all cases on equality or inequality of two strings. For example, implementations that compare strings with escaped characters unconverted may incorrectly find that \"a\\\\b\" and \"a\\u005Cb\" are not equal.

      This implementation is interoperable as it does compare strings code unit by code unit.

      "},{"location":"api/basic_json/string_t/#storage","title":"Storage","text":"

      String values are stored as pointers in a basic_json type. That is, for any access to string values, a pointer of type string_t* must be dereferenced.

      "},{"location":"api/basic_json/string_t/#examples","title":"Examples","text":"Example

      The following code shows that string_t is by default, a typedef to std::string.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout << std::boolalpha << std::is_same<std::string, json::string_t>::value << std::endl;\n}\n

      Output:

      true\n
      "},{"location":"api/basic_json/string_t/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/basic_json/swap/","title":"nlohmann::basic_json::swap","text":"
      // (1)\nvoid swap(reference other) noexcept;\n\n// (2)\nvoid swap(reference left, reference right) noexcept;\n\n// (3)\nvoid swap(array_t& other);\n\n// (4)\nvoid swap(object_t& other);\n\n// (5)\nvoid swap(string_t& other);\n\n// (6)\nvoid swap(binary_t& other);\n\n// (7)\nvoid swap(typename binary_t::container_type& other);\n
      1. Exchanges the contents of the JSON value with those of other. Does not invoke any move, copy, or swap operations on individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated.
      2. Exchanges the contents of the JSON value from left with those of right. Does not invoke any move, copy, or swap operations on individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated. Implemented as a friend function callable via ADL.
      3. Exchanges the contents of a JSON array with those of other. Does not invoke any move, copy, or swap operations on individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated.
      4. Exchanges the contents of a JSON object with those of other. Does not invoke any move, copy, or swap operations on individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated.
      5. Exchanges the contents of a JSON string with those of other. Does not invoke any move, copy, or swap operations on individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated.
      6. Exchanges the contents of a binary value with those of other. Does not invoke any move, copy, or swap operations on individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated.
      7. Exchanges the contents of a binary value with those of other. Does not invoke any move, copy, or swap operations on individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated. Unlike version (6), no binary subtype is involved.
      "},{"location":"api/basic_json/swap/#parameters","title":"Parameters","text":"other (in, out) value to exchange the contents with left (in, out) value to exchange the contents with right (in, out) value to exchange the contents with"},{"location":"api/basic_json/swap/#exceptions","title":"Exceptions","text":"
      1. No-throw guarantee: this function never throws exceptions.
      2. No-throw guarantee: this function never throws exceptions.
      3. Throws type_error.310 if called on JSON values other than arrays; example: \"cannot use swap() with boolean\"
      4. Throws type_error.310 if called on JSON values other than objects; example: \"cannot use swap() with boolean\"
      5. Throws type_error.310 if called on JSON values other than strings; example: \"cannot use swap() with boolean\"
      6. Throws type_error.310 if called on JSON values other than binaries; example: \"cannot use swap() with boolean\"
      7. Throws type_error.310 if called on JSON values other than binaries; example: \"cannot use swap() with boolean\"
      "},{"location":"api/basic_json/swap/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/swap/#examples","title":"Examples","text":"Example: Swap JSON value (1, 2)

      The example below shows how JSON values can be swapped with swap().

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create two JSON values\n    json j1 = {1, 2, 3, 4, 5};\n    json j2 = {{\"pi\", 3.141592653589793}, {\"e\", 2.718281828459045}};\n\n    // swap the values\n    j1.swap(j2);\n\n    // output the values\n    std::cout << \"j1 = \" << j1 << '\\n';\n    std::cout << \"j2 = \" << j2 << '\\n';\n}\n

      Output:

      j1 = {\"e\":2.718281828459045,\"pi\":3.141592653589793}\nj2 = [1,2,3,4,5]\n
      Example: Swap array (3)

      The example below shows how arrays can be swapped with swap().

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON value\n    json value = {{\"array\", {1, 2, 3, 4}}};\n\n    // create an array_t\n    json::array_t array = {\"Snap\", \"Crackle\", \"Pop\"};\n\n    // swap the array stored in the JSON value\n    value[\"array\"].swap(array);\n\n    // output the values\n    std::cout << \"value = \" << value << '\\n';\n    std::cout << \"array = \" << array << '\\n';\n}\n

      Output:

      value = {\"array\":[\"Snap\",\"Crackle\",\"Pop\"]}\narray = [1,2,3,4]\n
      Example: Swap object (4)

      The example below shows how objects can be swapped with swap().

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON value\n    json value = { {\"translation\", {{\"one\", \"eins\"}, {\"two\", \"zwei\"}}} };\n\n    // create an object_t\n    json::object_t object = {{\"cow\", \"Kuh\"}, {\"dog\", \"Hund\"}};\n\n    // swap the object stored in the JSON value\n    value[\"translation\"].swap(object);\n\n    // output the values\n    std::cout << \"value = \" << value << '\\n';\n    std::cout << \"object = \" << object << '\\n';\n}\n

      Output:

      value = {\"translation\":{\"cow\":\"Kuh\",\"dog\":\"Hund\"}}\nobject = {\"one\":\"eins\",\"two\":\"zwei\"}\n
      Example: Swap string (5)

      The example below shows how strings can be swapped with swap().

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON value\n    json value = { \"the good\", \"the bad\", \"the ugly\" };\n\n    // create string_t\n    json::string_t string = \"the fast\";\n\n    // swap the object stored in the JSON value\n    value[1].swap(string);\n\n    // output the values\n    std::cout << \"value = \" << value << '\\n';\n    std::cout << \"string = \" << string << '\\n';\n}\n

      Output:

      value = [\"the good\",\"the fast\",\"the ugly\"]\nstring = the bad\n
      Example: Swap string (6)

      The example below shows how binary values can be swapped with swap().

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a binary value\n    json value = json::binary({1, 2, 3});\n\n    // create a binary_t\n    json::binary_t binary = {{4, 5, 6}};\n\n    // swap the object stored in the JSON value\n    value.swap(binary);\n\n    // output the values\n    std::cout << \"value = \" << value << '\\n';\n    std::cout << \"binary = \" << json(binary) << '\\n';\n}\n

      Output:

      value = {\"bytes\":[4,5,6],\"subtype\":null}\nbinary = {\"bytes\":[1,2,3],\"subtype\":null}\n
      "},{"location":"api/basic_json/swap/#see-also","title":"See also","text":"
      • std::swap<basic_json>
      "},{"location":"api/basic_json/swap/#version-history","title":"Version history","text":"
      1. Since version 1.0.0.
      2. Since version 1.0.0.
      3. Since version 1.0.0.
      4. Since version 1.0.0.
      5. Since version 1.0.0.
      6. Since version 3.8.0.
      7. Since version 3.8.0.
      "},{"location":"api/basic_json/to_bjdata/","title":"nlohmann::basic_json::to_bjdata","text":"
      // (1)\nstatic std::vector<std::uint8_t> to_bjdata(const basic_json& j,\n                                           const bool use_size = false,\n                                           const bool use_type = false);\n\n// (2)\nstatic void to_bjdata(const basic_json& j, detail::output_adapter<std::uint8_t> o,\n                      const bool use_size = false, const bool use_type = false);\nstatic void to_bjdata(const basic_json& j, detail::output_adapter<char> o,\n                      const bool use_size = false, const bool use_type = false);\n

      Serializes a given JSON value j to a byte vector using the BJData (Binary JData) serialization format. BJData aims to be more compact than JSON itself, yet more efficient to parse.

      1. Returns a byte vector containing the BJData serialization.
      2. Writes the BJData serialization to an output adapter.

      The exact mapping and its limitations is described on a dedicated page.

      "},{"location":"api/basic_json/to_bjdata/#parameters","title":"Parameters","text":"j (in) JSON value to serialize o (in) output adapter to write serialization to use_size (in) whether to add size annotations to container types; optional, false by default. use_type (in) whether to add type annotations to container types (must be combined with use_size = true); optional, false by default."},{"location":"api/basic_json/to_bjdata/#return-value","title":"Return value","text":"
      1. BJData serialization as byte vector
      2. (none)
      "},{"location":"api/basic_json/to_bjdata/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

      "},{"location":"api/basic_json/to_bjdata/#complexity","title":"Complexity","text":"

      Linear in the size of the JSON value j.

      "},{"location":"api/basic_json/to_bjdata/#examples","title":"Examples","text":"Example

      The example shows the serialization of a JSON value to a byte vector in BJData format.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\n// function to print BJData's diagnostic format\nvoid print_byte(uint8_t byte)\n{\n    if (32 < byte and byte < 128)\n    {\n        std::cout << (char)byte;\n    }\n    else\n    {\n        std::cout << (int)byte;\n    }\n}\n\nint main()\n{\n    // create a JSON value\n    json j = R\"({\"compact\": true, \"schema\": false})\"_json;\n\n    // serialize it to BJData\n    std::vector<std::uint8_t> v = json::to_bjdata(j);\n\n    // print the vector content\n    for (auto& byte : v)\n    {\n        print_byte(byte);\n    }\n    std::cout << std::endl;\n\n    // create an array of numbers\n    json array = {1, 2, 3, 4, 5, 6, 7, 8};\n\n    // serialize it to BJData using default representation\n    std::vector<std::uint8_t> v_array = json::to_bjdata(array);\n    // serialize it to BJData using size optimization\n    std::vector<std::uint8_t> v_array_size = json::to_bjdata(array, true);\n    // serialize it to BJData using type optimization\n    std::vector<std::uint8_t> v_array_size_and_type = json::to_bjdata(array, true, true);\n\n    // print the vector contents\n    for (auto& byte : v_array)\n    {\n        print_byte(byte);\n    }\n    std::cout << std::endl;\n\n    for (auto& byte : v_array_size)\n    {\n        print_byte(byte);\n    }\n    std::cout << std::endl;\n\n    for (auto& byte : v_array_size_and_type)\n    {\n        print_byte(byte);\n    }\n    std::cout << std::endl;\n}\n

      Output:

      {i7compactTi6schemaF}\n[i1i2i3i4i5i6i7i8]\n[#i8i1i2i3i4i5i6i7i8\n[$i#i812345678\n
      "},{"location":"api/basic_json/to_bjdata/#version-history","title":"Version history","text":"
      • Added in version 3.11.0.
      "},{"location":"api/basic_json/to_bson/","title":"nlohmann::basic_json::to_bson","text":"
      // (1)\nstatic std::vector<std::uint8_t> to_bson(const basic_json& j);\n\n// (2)\nstatic void to_bson(const basic_json& j, detail::output_adapter<std::uint8_t> o);\nstatic void to_bson(const basic_json& j, detail::output_adapter<char> o);\n

      BSON (Binary JSON) is a binary format in which zero or more ordered key/value pairs are stored as a single entity (a so-called document).

      1. Returns a byte vector containing the BSON serialization.
      2. Writes the BSON serialization to an output adapter.

      The exact mapping and its limitations is described on a dedicated page.

      "},{"location":"api/basic_json/to_bson/#parameters","title":"Parameters","text":"j (in) JSON value to serialize o (in) output adapter to write serialization to"},{"location":"api/basic_json/to_bson/#return-value","title":"Return value","text":"
      1. BSON serialization as byte vector
      2. (none)
      "},{"location":"api/basic_json/to_bson/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

      "},{"location":"api/basic_json/to_bson/#complexity","title":"Complexity","text":"

      Linear in the size of the JSON value j.

      "},{"location":"api/basic_json/to_bson/#examples","title":"Examples","text":"Example

      The example shows the serialization of a JSON value to a byte vector in BSON format.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON value\n    json j = R\"({\"compact\": true, \"schema\": 0})\"_json;\n\n    // serialize it to BSON\n    std::vector<std::uint8_t> v = json::to_bson(j);\n\n    // print the vector content\n    for (auto& byte : v)\n    {\n        std::cout << \"0x\" << std::hex << std::setw(2) << std::setfill('0') << (int)byte << \" \";\n    }\n    std::cout << std::endl;\n}\n

      Output:

      0x1b 0x00 0x00 0x00 0x08 0x63 0x6f 0x6d 0x70 0x61 0x63 0x74 0x00 0x01 0x10 0x73 0x63 0x68 0x65 0x6d 0x61 0x00 0x00 0x00 0x00 0x00 0x00 \n
      "},{"location":"api/basic_json/to_bson/#version-history","title":"Version history","text":"
      • Added in version 3.4.0.
      "},{"location":"api/basic_json/to_cbor/","title":"nlohmann::basic_json::to_cbor","text":"
      // (1)\nstatic std::vector<std::uint8_t> to_cbor(const basic_json& j);\n\n// (2)\nstatic void to_cbor(const basic_json& j, detail::output_adapter<std::uint8_t> o);\nstatic void to_cbor(const basic_json& j, detail::output_adapter<char> o);\n

      Serializes a given JSON value j to a byte vector using the CBOR (Concise Binary Object Representation) serialization format. CBOR is a binary serialization format which aims to be more compact than JSON itself, yet more efficient to parse.

      1. Returns a byte vector containing the CBOR serialization.
      2. Writes the CBOR serialization to an output adapter.

      The exact mapping and its limitations is described on a dedicated page.

      "},{"location":"api/basic_json/to_cbor/#parameters","title":"Parameters","text":"j (in) JSON value to serialize o (in) output adapter to write serialization to"},{"location":"api/basic_json/to_cbor/#return-value","title":"Return value","text":"
      1. CBOR serialization as byte vector
      2. (none)
      "},{"location":"api/basic_json/to_cbor/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

      "},{"location":"api/basic_json/to_cbor/#complexity","title":"Complexity","text":"

      Linear in the size of the JSON value j.

      "},{"location":"api/basic_json/to_cbor/#examples","title":"Examples","text":"Example

      The example shows the serialization of a JSON value to a byte vector in CBOR format.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON value\n    json j = R\"({\"compact\": true, \"schema\": 0})\"_json;\n\n    // serialize it to CBOR\n    std::vector<std::uint8_t> v = json::to_cbor(j);\n\n    // print the vector content\n    for (auto& byte : v)\n    {\n        std::cout << \"0x\" << std::hex << std::setw(2) << std::setfill('0') << (int)byte << \" \";\n    }\n    std::cout << std::endl;\n}\n

      Output:

      0xa2 0x67 0x63 0x6f 0x6d 0x70 0x61 0x63 0x74 0xf5 0x66 0x73 0x63 0x68 0x65 0x6d 0x61 0x00 \n
      "},{"location":"api/basic_json/to_cbor/#version-history","title":"Version history","text":"
      • Added in version 2.0.9.
      • Compact representation of floating-point numbers added in version 3.8.0.
      "},{"location":"api/basic_json/to_msgpack/","title":"nlohmann::basic_json::to_msgpack","text":"
      // (1)\nstatic std::vector<std::uint8_t> to_msgpack(const basic_json& j);\n\n// (2)\nstatic void to_msgpack(const basic_json& j, detail::output_adapter<std::uint8_t> o);\nstatic void to_msgpack(const basic_json& j, detail::output_adapter<char> o);\n

      Serializes a given JSON value j to a byte vector using the MessagePack serialization format. MessagePack is a binary serialization format which aims to be more compact than JSON itself, yet more efficient to parse.

      1. Returns a byte vector containing the MessagePack serialization.
      2. Writes the MessagePack serialization to an output adapter.

      The exact mapping and its limitations is described on a dedicated page.

      "},{"location":"api/basic_json/to_msgpack/#parameters","title":"Parameters","text":"j (in) JSON value to serialize o (in) output adapter to write serialization to"},{"location":"api/basic_json/to_msgpack/#return-value","title":"Return value","text":"
      1. MessagePack serialization as byte vector
      2. (none)
      "},{"location":"api/basic_json/to_msgpack/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

      "},{"location":"api/basic_json/to_msgpack/#complexity","title":"Complexity","text":"

      Linear in the size of the JSON value j.

      "},{"location":"api/basic_json/to_msgpack/#examples","title":"Examples","text":"Example

      The example shows the serialization of a JSON value to a byte vector in MessagePack format.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON value\n    json j = R\"({\"compact\": true, \"schema\": 0})\"_json;\n\n    // serialize it to MessagePack\n    std::vector<std::uint8_t> v = json::to_msgpack(j);\n\n    // print the vector content\n    for (auto& byte : v)\n    {\n        std::cout << \"0x\" << std::hex << std::setw(2) << std::setfill('0') << (int)byte << \" \";\n    }\n    std::cout << std::endl;\n}\n

      Output:

      0x82 0xa7 0x63 0x6f 0x6d 0x70 0x61 0x63 0x74 0xc3 0xa6 0x73 0x63 0x68 0x65 0x6d 0x61 0x00 \n
      "},{"location":"api/basic_json/to_msgpack/#version-history","title":"Version history","text":"
      • Added in version 2.0.9.
      "},{"location":"api/basic_json/to_string/","title":"to_string(basic_json)","text":"
      template <typename BasicJsonType>\nstd::string to_string(const BasicJsonType& j);\n

      This function implements a user-defined to_string for JSON objects.

      "},{"location":"api/basic_json/to_string/#template-parameters","title":"Template parameters","text":"BasicJsonType a specialization of basic_json"},{"location":"api/basic_json/to_string/#return-value","title":"Return value","text":"

      string containing the serialization of the JSON value

      "},{"location":"api/basic_json/to_string/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes to any JSON value.

      "},{"location":"api/basic_json/to_string/#exceptions","title":"Exceptions","text":"

      Throws type_error.316 if a string stored inside the JSON value is not UTF-8 encoded

      "},{"location":"api/basic_json/to_string/#complexity","title":"Complexity","text":"

      Linear.

      "},{"location":"api/basic_json/to_string/#possible-implementation","title":"Possible implementation","text":"
      template <typename BasicJsonType>\nstd::string to_string(const BasicJsonType& j)\n{\n    return j.dump();\n}\n
      "},{"location":"api/basic_json/to_string/#examples","title":"Examples","text":"Example

      The following code shows how the library's to_string() function integrates with others, allowing argument-dependent lookup.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing std::to_string;\n\nint main()\n{\n    // create values\n    json j = {{\"one\", 1}, {\"two\", 2}};\n    int i = 42;\n\n    // use ADL to select best to_string function\n    auto j_str = to_string(j);  // calling nlohmann::to_string\n    auto i_str = to_string(i);  // calling std::to_string\n\n    // serialize without indentation\n    std::cout << j_str << \"\\n\\n\"\n              << i_str << std::endl;\n}\n

      Output:

      {\"one\":1,\"two\":2}\n\n42\n
      "},{"location":"api/basic_json/to_string/#see-also","title":"See also","text":"
      • dump
      "},{"location":"api/basic_json/to_string/#version-history","title":"Version history","text":"

      Added in version 3.7.0.

      "},{"location":"api/basic_json/to_ubjson/","title":"nlohmann::basic_json::to_ubjson","text":"
      // (1)\nstatic std::vector<std::uint8_t> to_ubjson(const basic_json& j,\n                                           const bool use_size = false,\n                                           const bool use_type = false);\n\n// (2)\nstatic void to_ubjson(const basic_json& j, detail::output_adapter<std::uint8_t> o,\n                      const bool use_size = false, const bool use_type = false);\nstatic void to_ubjson(const basic_json& j, detail::output_adapter<char> o,\n                      const bool use_size = false, const bool use_type = false);\n

      Serializes a given JSON value j to a byte vector using the UBJSON (Universal Binary JSON) serialization format. UBJSON aims to be more compact than JSON itself, yet more efficient to parse.

      1. Returns a byte vector containing the UBJSON serialization.
      2. Writes the UBJSON serialization to an output adapter.

      The exact mapping and its limitations is described on a dedicated page.

      "},{"location":"api/basic_json/to_ubjson/#parameters","title":"Parameters","text":"j (in) JSON value to serialize o (in) output adapter to write serialization to use_size (in) whether to add size annotations to container types; optional, false by default. use_type (in) whether to add type annotations to container types (must be combined with use_size = true); optional, false by default."},{"location":"api/basic_json/to_ubjson/#return-value","title":"Return value","text":"
      1. UBJSON serialization as byte vector
      2. (none)
      "},{"location":"api/basic_json/to_ubjson/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

      "},{"location":"api/basic_json/to_ubjson/#complexity","title":"Complexity","text":"

      Linear in the size of the JSON value j.

      "},{"location":"api/basic_json/to_ubjson/#examples","title":"Examples","text":"Example

      The example shows the serialization of a JSON value to a byte vector in UBJSON format.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\n// function to print UBJSON's diagnostic format\nvoid print_byte(uint8_t byte)\n{\n    if (32 < byte and byte < 128)\n    {\n        std::cout << (char)byte;\n    }\n    else\n    {\n        std::cout << (int)byte;\n    }\n}\n\nint main()\n{\n    // create a JSON value\n    json j = R\"({\"compact\": true, \"schema\": false})\"_json;\n\n    // serialize it to UBJSON\n    std::vector<std::uint8_t> v = json::to_ubjson(j);\n\n    // print the vector content\n    for (auto& byte : v)\n    {\n        print_byte(byte);\n    }\n    std::cout << std::endl;\n\n    // create an array of numbers\n    json array = {1, 2, 3, 4, 5, 6, 7, 8};\n\n    // serialize it to UBJSON using default representation\n    std::vector<std::uint8_t> v_array = json::to_ubjson(array);\n    // serialize it to UBJSON using size optimization\n    std::vector<std::uint8_t> v_array_size = json::to_ubjson(array, true);\n    // serialize it to UBJSON using type optimization\n    std::vector<std::uint8_t> v_array_size_and_type = json::to_ubjson(array, true, true);\n\n    // print the vector contents\n    for (auto& byte : v_array)\n    {\n        print_byte(byte);\n    }\n    std::cout << std::endl;\n\n    for (auto& byte : v_array_size)\n    {\n        print_byte(byte);\n    }\n    std::cout << std::endl;\n\n    for (auto& byte : v_array_size_and_type)\n    {\n        print_byte(byte);\n    }\n    std::cout << std::endl;\n}\n

      Output:

      {i7compactTi6schemaF}\n[i1i2i3i4i5i6i7i8]\n[#i8i1i2i3i4i5i6i7i8\n[$i#i812345678\n
      "},{"location":"api/basic_json/to_ubjson/#version-history","title":"Version history","text":"
      • Added in version 3.1.0.
      "},{"location":"api/basic_json/type/","title":"nlohmann::basic_json::type","text":"
      constexpr value_t type() const noexcept;\n

      Return the type of the JSON value as a value from the value_t enumeration.

      "},{"location":"api/basic_json/type/#return-value","title":"Return value","text":"

      the type of the JSON value

      Value type return value null value_t::null boolean value_t::boolean string value_t::string number (integer) value_t::number_integer number (unsigned integer) value_t::number_unsigned number (floating-point) value_t::number_float object value_t::object array value_t::array binary value_t::binary discarded value_t::discarded"},{"location":"api/basic_json/type/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/type/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/type/#examples","title":"Examples","text":"Example

      The following code exemplifies type() for all JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = -17;\n    json j_number_unsigned = 42u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n\n    // call type()\n    std::cout << std::boolalpha;\n    std::cout << (j_null.type() == json::value_t::null) << '\\n';\n    std::cout << (j_boolean.type() == json::value_t::boolean) << '\\n';\n    std::cout << (j_number_integer.type() == json::value_t::number_integer) << '\\n';\n    std::cout << (j_number_unsigned.type() == json::value_t::number_unsigned) << '\\n';\n    std::cout << (j_number_float.type() == json::value_t::number_float) << '\\n';\n    std::cout << (j_object.type() == json::value_t::object) << '\\n';\n    std::cout << (j_array.type() == json::value_t::array) << '\\n';\n    std::cout << (j_string.type() == json::value_t::string) << '\\n';\n}\n

      Output:

      true\ntrue\ntrue\ntrue\ntrue\ntrue\ntrue\ntrue\n
      "},{"location":"api/basic_json/type/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      • Added unsigned integer type in version 2.0.0.
      • Added binary type in version 3.8.0.
      "},{"location":"api/basic_json/type_error/","title":"nlohmann::basic_json::type_error","text":"
      class type_error : public exception;\n

      This exception is thrown in case of a type error; that is, a library function is executed on a JSON value whose type does not match the expected semantics.

      Exceptions have ids 3xx (see list of type errors).

      classDiagram\n  direction LR\n\n    class std_exception [\"std::exception\"] {\n        <<interface>>\n    }\n\n    class json_exception [\"basic_json::exception\"] {\n        +const int id\n        +const char* what() const\n    }\n\n    class json_parse_error [\"basic_json::parse_error\"] {\n        +const std::size_t byte\n    }\n\n    class json_invalid_iterator [\"basic_json::invalid_iterator\"]\n    class json_type_error [\"basic_json::type_error\"]\n    class json_out_of_range [\"basic_json::out_of_range\"]\n    class json_other_error [\"basic_json::other_error\"]\n\n    std_exception <|-- json_exception\n    json_exception <|-- json_parse_error\n    json_exception <|-- json_invalid_iterator\n    json_exception <|-- json_type_error\n    json_exception <|-- json_out_of_range\n    json_exception <|-- json_other_error\n\n    style json_type_error fill:#CCCCFF
      "},{"location":"api/basic_json/type_error/#member-functions","title":"Member functions","text":"
      • what - returns explanatory string
      "},{"location":"api/basic_json/type_error/#member-variables","title":"Member variables","text":"
      • id - the id of the exception
      "},{"location":"api/basic_json/type_error/#examples","title":"Examples","text":"Example

      The following code shows how a type_error exception can be caught.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    try\n    {\n        // calling push_back() on a string value\n        json j = \"string\";\n        j.push_back(\"another string\");\n    }\n    catch (const json::type_error& e)\n    {\n        // output exception information\n        std::cout << \"message: \" << e.what() << '\\n'\n                  << \"exception id: \" << e.id << std::endl;\n    }\n}\n

      Output:

      message: [json.exception.type_error.308] cannot use push_back() with string\nexception id: 308\n
      "},{"location":"api/basic_json/type_error/#see-also","title":"See also","text":"
      • List of type errors
      • parse_error for exceptions indicating a parse error
      • invalid_iterator for exceptions indicating errors with iterators
      • out_of_range for exceptions indicating access out of the defined range
      • other_error for exceptions indicating other library errors
      "},{"location":"api/basic_json/type_error/#version-history","title":"Version history","text":"
      • Since version 3.0.0.
      "},{"location":"api/basic_json/type_name/","title":"nlohmann::basic_json::type_name","text":"
      const char* type_name() const noexcept;\n

      Returns the type name as string to be used in error messages -- usually to indicate that a function was called on a wrong JSON type.

      "},{"location":"api/basic_json/type_name/#return-value","title":"Return value","text":"

      a string representation of the type (value_t):

      Value type return value null \"null\" boolean \"boolean\" string \"string\" number (integer, unsigned integer, floating-point) \"number\" object \"object\" array \"array\" binary \"binary\" discarded \"discarded\""},{"location":"api/basic_json/type_name/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/type_name/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/basic_json/type_name/#examples","title":"Examples","text":"Example

      The following code exemplifies type_name() for all JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = -17;\n    json j_number_unsigned = 42u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n\n    // call type_name()\n    std::cout << j_null << \" is a \" << j_null.type_name() << '\\n';\n    std::cout << j_boolean << \" is a \" << j_boolean.type_name() << '\\n';\n    std::cout << j_number_integer << \" is a \" << j_number_integer.type_name() << '\\n';\n    std::cout << j_number_unsigned << \" is a \" << j_number_unsigned.type_name() << '\\n';\n    std::cout << j_number_float << \" is a \" << j_number_float.type_name() << '\\n';\n    std::cout << j_object << \" is an \" << j_object.type_name() << '\\n';\n    std::cout << j_array << \" is an \" << j_array.type_name() << '\\n';\n    std::cout << j_string << \" is a \" << j_string.type_name() << '\\n';\n}\n

      Output:

      null is a null\ntrue is a boolean\n-17 is a number\n42 is a number\n23.42 is a number\n{\"one\":1,\"two\":2} is an object\n[1,2,4,8,16] is an array\n\"Hello, world\" is a string\n
      "},{"location":"api/basic_json/type_name/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      • Part of the public API version since 2.1.0.
      • Changed return value to const char* and added noexcept in version 3.0.0.
      • Added support for binary type in version 3.8.0.
      "},{"location":"api/basic_json/unflatten/","title":"nlohmann::basic_json::unflatten","text":"
      basic_json unflatten() const;\n

      The function restores the arbitrary nesting of a JSON value that has been flattened before using the flatten() function. The JSON value must meet certain constraints:

      1. The value must be an object.
      2. The keys must be JSON pointers (see RFC 6901)
      3. The mapped values must be primitive JSON types.
      "},{"location":"api/basic_json/unflatten/#return-value","title":"Return value","text":"

      the original JSON from a flattened version

      "},{"location":"api/basic_json/unflatten/#exception-safety","title":"Exception safety","text":"

      Strong exception safety: if an exception occurs, the original value stays intact.

      "},{"location":"api/basic_json/unflatten/#exceptions","title":"Exceptions","text":"

      The function can throw the following exceptions:

      • Throws type_error.314 if value is not an object
      • Throws type_error.315 if object values are not primitive
      "},{"location":"api/basic_json/unflatten/#complexity","title":"Complexity","text":"

      Linear in the size the JSON value.

      "},{"location":"api/basic_json/unflatten/#notes","title":"Notes","text":"

      Empty objects and arrays are flattened by flatten() to null values and can not unflattened to their original type. Apart from this example, for a JSON value j, the following is always true: j == j.flatten().unflatten().

      "},{"location":"api/basic_json/unflatten/#examples","title":"Examples","text":"Example

      The following code shows how a flattened JSON object is unflattened into the original nested JSON object.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON value\n    json j_flattened =\n    {\n        {\"/answer/everything\", 42},\n        {\"/happy\", true},\n        {\"/list/0\", 1},\n        {\"/list/1\", 0},\n        {\"/list/2\", 2},\n        {\"/name\", \"Niels\"},\n        {\"/nothing\", nullptr},\n        {\"/object/currency\", \"USD\"},\n        {\"/object/value\", 42.99},\n        {\"/pi\", 3.141}\n    };\n\n    // call unflatten()\n    std::cout << std::setw(4) << j_flattened.unflatten() << '\\n';\n}\n

      Output:

      {\n    \"answer\": {\n        \"everything\": 42\n    },\n    \"happy\": true,\n    \"list\": [\n        1,\n        0,\n        2\n    ],\n    \"name\": \"Niels\",\n    \"nothing\": null,\n    \"object\": {\n        \"currency\": \"USD\",\n        \"value\": 42.99\n    },\n    \"pi\": 3.141\n}\n
      "},{"location":"api/basic_json/unflatten/#see-also","title":"See also","text":"
      • flatten the reverse function
      "},{"location":"api/basic_json/unflatten/#version-history","title":"Version history","text":"
      • Added in version 2.0.0.
      "},{"location":"api/basic_json/update/","title":"nlohmann::basic_json::update","text":"
      // (1)\nvoid update(const_reference j, bool merge_objects = false);\n\n// (2)\nvoid update(const_iterator first, const_iterator last, bool merge_objects = false);\n
      1. Inserts all values from JSON object j.
      2. Inserts all values from range [first, last)

      When merge_objects is false (default), existing keys are overwritten. When merge_objects is true, recursively merges objects with common keys.

      The function is motivated by Python's dict.update function.

      "},{"location":"api/basic_json/update/#iterator-invalidation","title":"Iterator invalidation","text":"

      For ordered_json, adding a value to an object can yield a reallocation, in which case all iterators (including the end() iterator) and all references to the elements are invalidated.

      "},{"location":"api/basic_json/update/#parameters","title":"Parameters","text":"j (in) JSON object to read values from merge_objects (in) when true, existing keys are not overwritten, but contents of objects are merged recursively (default: false) first (in) begin of the range of elements to insert last (in) end of the range of elements to insert"},{"location":"api/basic_json/update/#exceptions","title":"Exceptions","text":"
      1. The function can throw the following exceptions:
        • Throws type_error.312 if called on JSON values other than objects; example: \"cannot use update() with string\"
      2. The function can throw the following exceptions:
        • Throws type_error.312 if called on JSON values other than objects; example: \"cannot use update() with string\"
        • Throws invalid_iterator.202 if called on an iterator which does not belong to the current JSON value; example: \"iterator does not fit current value\"
        • Throws invalid_iterator.210 if first and last do not belong to the same JSON value; example: \"iterators do not fit\"
      "},{"location":"api/basic_json/update/#complexity","title":"Complexity","text":"
      1. O(N*log(size() + N)), where N is the number of elements to insert.
      2. O(N*log(size() + N)), where N is the number of elements to insert.
      "},{"location":"api/basic_json/update/#examples","title":"Examples","text":"Example

      The example shows how update() is used.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create two JSON objects\n    json o1 = R\"( {\"color\": \"red\", \"price\": 17.99, \"names\": {\"de\": \"Flugzeug\"}} )\"_json;\n    json o2 = R\"( {\"color\": \"blue\", \"speed\": 100, \"names\": {\"en\": \"plane\"}} )\"_json;\n    json o3 = o1;\n\n    // add all keys from o2 to o1 (updating \"color\", replacing \"names\")\n    o1.update(o2);\n\n    // add all keys from o2 to o1 (updating \"color\", merging \"names\")\n    o3.update(o2, true);\n\n    // output updated object o1 and o3\n    std::cout << std::setw(2) << o1 << '\\n';\n    std::cout << std::setw(2) << o3 << '\\n';\n}\n

      Output:

      {\n  \"color\": \"blue\",\n  \"names\": {\n    \"en\": \"plane\"\n  },\n  \"price\": 17.99,\n  \"speed\": 100\n}\n{\n  \"color\": \"blue\",\n  \"names\": {\n    \"de\": \"Flugzeug\",\n    \"en\": \"plane\"\n  },\n  \"price\": 17.99,\n  \"speed\": 100\n}\n
      Example

      The example shows how update() is used.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create two JSON objects\n    json o1 = R\"( {\"color\": \"red\", \"price\": 17.99, \"names\": {\"de\": \"Flugzeug\"}} )\"_json;\n    json o2 = R\"( {\"color\": \"blue\", \"speed\": 100, \"names\": {\"en\": \"plane\"}} )\"_json;\n    json o3 = o1;\n\n    // add all keys from o2 to o1 (updating \"color\", replacing \"names\")\n    o1.update(o2.begin(), o2.end());\n\n    // add all keys from o2 to o1 (updating \"color\", merging \"names\")\n    o3.update(o2.begin(), o2.end(), true);\n\n    // output updated object o1 and o3\n    std::cout << std::setw(2) << o1 << '\\n';\n    std::cout << std::setw(2) << o3 << '\\n';\n}\n

      Output:

      {\n  \"color\": \"blue\",\n  \"names\": {\n    \"en\": \"plane\"\n  },\n  \"price\": 17.99,\n  \"speed\": 100\n}\n{\n  \"color\": \"blue\",\n  \"names\": {\n    \"de\": \"Flugzeug\",\n    \"en\": \"plane\"\n  },\n  \"price\": 17.99,\n  \"speed\": 100\n}\n
      Example

      One common use case for this function is the handling of user settings. Assume your application can be configured in some aspects:

      {\n    \"color\": \"red\",\n    \"active\": true,\n    \"name\": {\"de\": \"Maus\", \"en\": \"mouse\"}\n}\n

      The user may override the default settings selectively:

      {\n    \"color\": \"blue\",\n    \"name\": {\"es\": \"rat\u00f3n\"},\n}\n

      Then update manages the merging of default settings and user settings:

      auto user_settings = json::parse(\"config.json\");\nauto effective_settings = get_default_settings();\neffective_settings.update(user_settings);\n

      Now effective_settings contains the default settings, but those keys set by the user are overwritten:

      {\n    \"color\": \"blue\",\n    \"active\": true,\n    \"name\": {\"es\": \"rat\u00f3n\"}\n}\n

      Note existing keys were just overwritten. To merge objects, merge_objects setting should be set to true:

      auto user_settings = json::parse(\"config.json\");\nauto effective_settings = get_default_settings();\neffective_settings.update(user_settings, true);\n
      {\n    \"color\": \"blue\",\n    \"active\": true,\n    \"name\": {\"de\": \"Maus\", \"en\": \"mouse\", \"es\": \"rat\u00f3n\"}\n}\n
      "},{"location":"api/basic_json/update/#version-history","title":"Version history","text":"
      • Added in version 3.0.0.
      • Added merge_objects parameter in 3.10.5.
      "},{"location":"api/basic_json/value/","title":"nlohmann::basic_json::value","text":"
      // (1)\ntemplate<class ValueType>\nValueType value(const typename object_t::key_type& key,\n                ValueType&& default_value) const;\n\n// (2)\ntemplate<class ValueType, class KeyType>\nValueType value(KeyType&& key,\n                ValueType&& default_value) const;\n\n// (3)\ntemplate<class ValueType>\nValueType value(const json_pointer& ptr,\n                const ValueType& default_value) const;\n
      1. Returns either a copy of an object's element at the specified key key or a given default value if no element with key key exists.

        The function is basically equivalent to executing

        try {\n   return at(key);\n} catch(out_of_range) {\n   return default_value;\n}\n

      2. See 1. This overload is only available if KeyType is comparable with typename object_t::key_type and typename object_comparator_t::is_transparent denotes a type.

      3. Returns either a copy of an object's element at the specified JSON pointer ptr or a given default value if no value at ptr exists.

        The function is basically equivalent to executing

        try {\n   return at(ptr);\n} catch(out_of_range) {\n   return default_value;\n}\n

      Differences to at and operator[]

      • Unlike at, this function does not throw if the given key/ptr was not found.
      • Unlike operator[], this function does not implicitly add an element to the position defined by key/ptr key. This function is furthermore also applicable to const objects.
      "},{"location":"api/basic_json/value/#template-parameters","title":"Template parameters","text":"KeyType A type for an object key other than json_pointer that is comparable with string_t using object_comparator_t. This can also be a string view (C++17). ValueType type compatible to JSON values, for instance int for JSON integer numbers, bool for JSON booleans, or std::vector types for JSON arrays. Note the type of the expected value at key/ptr and the default value default_value must be compatible."},{"location":"api/basic_json/value/#parameters","title":"Parameters","text":"key (in) key of the element to access default_value (in) the value to return if key/ptr found no value ptr (in) a JSON pointer to the element to access"},{"location":"api/basic_json/value/#return-value","title":"Return value","text":"
      1. copy of the element at key key or default_value if key is not found
      2. copy of the element at key key or default_value if key is not found
      3. copy of the element at JSON Pointer ptr or default_value if no value for ptr is found
      "},{"location":"api/basic_json/value/#exception-safety","title":"Exception safety","text":"

      Strong guarantee: if an exception is thrown, there are no changes to any JSON value.

      "},{"location":"api/basic_json/value/#exceptions","title":"Exceptions","text":"
      1. The function can throw the following exceptions:
        • Throws type_error.302 if default_value does not match the type of the value at key
        • Throws type_error.306 if the JSON value is not an object; in that case, using value() with a key makes no sense.
      2. See 1.
      3. The function can throw the following exceptions:
        • Throws type_error.302 if default_value does not match the type of the value at ptr
        • Throws type_error.306 if the JSON value is not an object; in that case, using value() with a key makes no sense.
      "},{"location":"api/basic_json/value/#complexity","title":"Complexity","text":"
      1. Logarithmic in the size of the container.
      2. Logarithmic in the size of the container.
      3. Logarithmic in the size of the container.
      "},{"location":"api/basic_json/value/#examples","title":"Examples","text":"Example: (1) access specified object element with default value

      The example below shows how object elements can be queried with a default value.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object with different entry types\n    json j =\n    {\n        {\"integer\", 1},\n        {\"floating\", 42.23},\n        {\"string\", \"hello world\"},\n        {\"boolean\", true},\n        {\"object\", {{\"key1\", 1}, {\"key2\", 2}}},\n        {\"array\", {1, 2, 3}}\n    };\n\n    // access existing values\n    int v_integer = j.value(\"integer\", 0);\n    double v_floating = j.value(\"floating\", 47.11);\n\n    // access nonexisting values and rely on default value\n    std::string v_string = j.value(\"nonexisting\", \"oops\");\n    bool v_boolean = j.value(\"nonexisting\", false);\n\n    // output values\n    std::cout << std::boolalpha << v_integer << \" \" << v_floating\n              << \" \" << v_string << \" \" << v_boolean << \"\\n\";\n}\n

      Output:

      1 42.23 oops false\n
      Example: (2) access specified object element using string_view with default value

      The example below shows how object elements can be queried with a default value.

      #include <iostream>\n#include <string_view>\n#include <nlohmann/json.hpp>\n\nusing namespace std::string_view_literals;\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object with different entry types\n    json j =\n    {\n        {\"integer\", 1},\n        {\"floating\", 42.23},\n        {\"string\", \"hello world\"},\n        {\"boolean\", true},\n        {\"object\", {{\"key1\", 1}, {\"key2\", 2}}},\n        {\"array\", {1, 2, 3}}\n    };\n\n    // access existing values\n    int v_integer = j.value(\"integer\"sv, 0);\n    double v_floating = j.value(\"floating\"sv, 47.11);\n\n    // access nonexisting values and rely on default value\n    std::string v_string = j.value(\"nonexisting\"sv, \"oops\");\n    bool v_boolean = j.value(\"nonexisting\"sv, false);\n\n    // output values\n    std::cout << std::boolalpha << v_integer << \" \" << v_floating\n              << \" \" << v_string << \" \" << v_boolean << \"\\n\";\n}\n

      Output:

      1 42.23 oops false\n
      Example: (3) access specified object element via JSON Pointer with default value

      The example below shows how object elements can be queried with a default value.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON object with different entry types\n    json j =\n    {\n        {\"integer\", 1},\n        {\"floating\", 42.23},\n        {\"string\", \"hello world\"},\n        {\"boolean\", true},\n        {\"object\", {{\"key1\", 1}, {\"key2\", 2}}},\n        {\"array\", {1, 2, 3}}\n    };\n\n    // access existing values\n    int v_integer = j.value(\"/integer\"_json_pointer, 0);\n    double v_floating = j.value(\"/floating\"_json_pointer, 47.11);\n\n    // access nonexisting values and rely on default value\n    std::string v_string = j.value(\"/nonexisting\"_json_pointer, \"oops\");\n    bool v_boolean = j.value(\"/nonexisting\"_json_pointer, false);\n\n    // output values\n    std::cout << std::boolalpha << v_integer << \" \" << v_floating\n              << \" \" << v_string << \" \" << v_boolean << \"\\n\";\n}\n

      Output:

      1 42.23 oops false\n
      "},{"location":"api/basic_json/value/#see-also","title":"See also","text":"
      • see at for access by reference with range checking
      • see operator[] for unchecked access by reference
      "},{"location":"api/basic_json/value/#version-history","title":"Version history","text":"
      1. Added in version 1.0.0. Changed parameter default_value type from const ValueType& to ValueType&& in version 3.11.0.
      2. Added in version 3.11.0. Made ValueType the first template parameter in version 3.11.2.
      3. Added in version 2.0.2.
      "},{"location":"api/basic_json/value_t/","title":"nlohmann::basic_json::value_t","text":"
      enum class value_t : std::uint8_t {\n    null,\n    object,\n    array,\n    string,\n    boolean,\n    number_integer,\n    number_unsigned,\n    number_float,\n    binary,\n    discarded\n};\n

      This enumeration collects the different JSON types. It is internally used to distinguish the stored values, and the functions is_null, is_object, is_array, is_string, is_boolean, is_number (with is_number_integer, is_number_unsigned, and is_number_float), is_discarded, is_binary, is_primitive, and is_structured rely on it.

      "},{"location":"api/basic_json/value_t/#notes","title":"Notes","text":"

      Ordering

      The order of types is as follows:

      1. null
      2. boolean
      3. number_integer, number_unsigned, number_float
      4. object
      5. array
      6. string
      7. binary

      discarded is unordered.

      Types of numbers

      There are three enumerators for numbers (number_integer, number_unsigned, and number_float) to distinguish between different types of numbers:

      • number_unsigned_t for unsigned integers
      • number_integer_t for signed integers
      • number_float_t for floating-point numbers or to approximate integers which do not fit into the limits of their respective type

      Comparison operators

      operator< and operator<=> (since C++20) are overloaded and compare according to the ordering described above. Until C++20 all other relational and equality operators yield results according to the integer value of each enumerator. Since C++20 some compilers consider the rewritten candidates generated from operator<=> during overload resolution, while others do not. For predictable and portable behavior use:

      • operator< or operator<=> when wanting to compare according to the order described above
      • operator== or operator!= when wanting to compare according to each enumerators integer value
      "},{"location":"api/basic_json/value_t/#examples","title":"Examples","text":"Example

      The following code how type() queries the value_t for all JSON types.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = -17;\n    json j_number_unsigned = 42u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n\n    // call type()\n    std::cout << std::boolalpha;\n    std::cout << (j_null.type() == json::value_t::null) << '\\n';\n    std::cout << (j_boolean.type() == json::value_t::boolean) << '\\n';\n    std::cout << (j_number_integer.type() == json::value_t::number_integer) << '\\n';\n    std::cout << (j_number_unsigned.type() == json::value_t::number_unsigned) << '\\n';\n    std::cout << (j_number_float.type() == json::value_t::number_float) << '\\n';\n    std::cout << (j_object.type() == json::value_t::object) << '\\n';\n    std::cout << (j_array.type() == json::value_t::array) << '\\n';\n    std::cout << (j_string.type() == json::value_t::string) << '\\n';\n}\n

      Output:

      true\ntrue\ntrue\ntrue\ntrue\ntrue\ntrue\ntrue\n
      "},{"location":"api/basic_json/value_t/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      • Added unsigned integer type in version 2.0.0.
      • Added binary type in version 3.8.0.
      "},{"location":"api/basic_json/~basic_json/","title":"nlohmann::basic_json::~basic_json","text":"
      ~basic_json() noexcept;\n

      Destroys the JSON value and frees all allocated memory.

      "},{"location":"api/basic_json/~basic_json/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this member function never throws exceptions.

      "},{"location":"api/basic_json/~basic_json/#complexity","title":"Complexity","text":"

      Linear.

      "},{"location":"api/basic_json/~basic_json/#version-history","title":"Version history","text":"
      • Added in version 1.0.0.
      "},{"location":"api/byte_container_with_subtype/","title":"nlohmann::byte_container_with_subtype","text":"
      template<typename BinaryType>\nclass byte_container_with_subtype : public BinaryType;\n

      This type extends the template parameter BinaryType provided to basic_json with a subtype used by BSON and MessagePack. This type exists so that the user does not have to specify a type themselves with a specific naming scheme in order to override the binary type.

      "},{"location":"api/byte_container_with_subtype/#template-parameters","title":"Template parameters","text":"BinaryType container to store bytes (std::vector<std::uint8_t> by default)"},{"location":"api/byte_container_with_subtype/#member-types","title":"Member types","text":"
      • container_type - the type of the underlying container (BinaryType)
      • subtype_type - the type of the subtype (std::uint64_t)
      "},{"location":"api/byte_container_with_subtype/#member-functions","title":"Member functions","text":"
      • (constructor)
      • operator== - comparison: equal
      • operator!= - comparison: not equal
      • set_subtype - sets the binary subtype
      • subtype - return the binary subtype
      • has_subtype - return whether the value has a subtype
      • clear_subtype - clears the binary subtype
      "},{"location":"api/byte_container_with_subtype/#version-history","title":"Version history","text":"
      • Added in version 3.8.0.
      • Changed type of subtypes to std::uint64_t in 3.10.0.
      "},{"location":"api/byte_container_with_subtype/byte_container_with_subtype/","title":"nlohmann::byte_container_with_subtype::byte_container_with_subtype","text":"
      // (1)\nbyte_container_with_subtype();\n\n// (2)\nbyte_container_with_subtype(const container_type& container);\nbyte_container_with_subtype(container_type&& container);\n\n// (3)\nbyte_container_with_subtype(const container_type& container, subtype_type subtype);\nbyte_container_with_subtype(container_type&& container, subtype_type subtype);\n
      1. Create empty binary container without subtype.
      2. Create binary container without subtype.
      3. Create binary container with subtype.
      "},{"location":"api/byte_container_with_subtype/byte_container_with_subtype/#parameters","title":"Parameters","text":"container (in) binary container subtype (in) subtype"},{"location":"api/byte_container_with_subtype/byte_container_with_subtype/#examples","title":"Examples","text":"Example

      The example below demonstrates how byte containers can be created.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\n// define a byte container based on std::vector\nusing byte_container_with_subtype = nlohmann::byte_container_with_subtype<std::vector<std::uint8_t>>;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // (1) create empty container\n    auto c1 = byte_container_with_subtype();\n\n    std::vector<std::uint8_t> bytes = {{0xca, 0xfe, 0xba, 0xbe}};\n\n    // (2) create container\n    auto c2 = byte_container_with_subtype(bytes);\n\n    // (3) create container with subtype\n    auto c3 = byte_container_with_subtype(bytes, 42);\n\n    std::cout << json(c1) << \"\\n\" << json(c2) << \"\\n\" << json(c3) << std::endl;\n}\n

      Output:

      {\"bytes\":[],\"subtype\":null}\n{\"bytes\":[202,254,186,190],\"subtype\":null}\n{\"bytes\":[202,254,186,190],\"subtype\":42}\n
      "},{"location":"api/byte_container_with_subtype/byte_container_with_subtype/#version-history","title":"Version history","text":"

      Since version 3.8.0.

      "},{"location":"api/byte_container_with_subtype/clear_subtype/","title":"nlohmann::byte_container_with_subtype::clear_subtype","text":"
      void clear_subtype() noexcept;\n

      Clears the binary subtype and flags the value as not having a subtype, which has implications for serialization; for instance MessagePack will prefer the bin family over the ext family.

      "},{"location":"api/byte_container_with_subtype/clear_subtype/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this function never throws exceptions.

      "},{"location":"api/byte_container_with_subtype/clear_subtype/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/byte_container_with_subtype/clear_subtype/#examples","title":"Examples","text":"Example

      The example below demonstrates how clear_subtype can remove subtypes.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\n// define a byte container based on std::vector\nusing byte_container_with_subtype = nlohmann::byte_container_with_subtype<std::vector<std::uint8_t>>;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::vector<std::uint8_t> bytes = {{0xca, 0xfe, 0xba, 0xbe}};\n\n    // create container with subtype\n    auto c1 = byte_container_with_subtype(bytes, 42);\n\n    std::cout << \"before calling clear_subtype(): \" << json(c1) << '\\n';\n\n    c1.clear_subtype();\n\n    std::cout << \"after calling clear_subtype(): \" << json(c1) << '\\n';\n}\n

      Output:

      before calling clear_subtype(): {\"bytes\":[202,254,186,190],\"subtype\":42}\nafter calling clear_subtype(): {\"bytes\":[202,254,186,190],\"subtype\":null}\n
      "},{"location":"api/byte_container_with_subtype/clear_subtype/#version-history","title":"Version history","text":"

      Since version 3.8.0.

      "},{"location":"api/byte_container_with_subtype/has_subtype/","title":"nlohmann::byte_container_with_subtype::has_subtype","text":"
      constexpr bool has_subtype() const noexcept;\n

      Returns whether the value has a subtype.

      "},{"location":"api/byte_container_with_subtype/has_subtype/#return-value","title":"Return value","text":"

      whether the value has a subtype

      "},{"location":"api/byte_container_with_subtype/has_subtype/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this function never throws exceptions.

      "},{"location":"api/byte_container_with_subtype/has_subtype/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/byte_container_with_subtype/has_subtype/#examples","title":"Examples","text":"Example

      The example below demonstrates how has_subtype can check whether a subtype was set.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\n// define a byte container based on std::vector\nusing byte_container_with_subtype = nlohmann::byte_container_with_subtype<std::vector<std::uint8_t>>;\n\nint main()\n{\n    std::vector<std::uint8_t> bytes = {{0xca, 0xfe, 0xba, 0xbe}};\n\n    // create container\n    auto c1 = byte_container_with_subtype(bytes);\n\n    // create container with subtype\n    auto c2 = byte_container_with_subtype(bytes, 42);\n\n    std::cout << std::boolalpha << \"c1.has_subtype() = \" << c1.has_subtype()\n              << \"\\nc2.has_subtype() = \" << c2.has_subtype() << std::endl;\n}\n

      Output:

      c1.has_subtype() = false\nc2.has_subtype() = true\n
      "},{"location":"api/byte_container_with_subtype/has_subtype/#version-history","title":"Version history","text":"

      Since version 3.8.0.

      "},{"location":"api/byte_container_with_subtype/set_subtype/","title":"nlohmann::byte_container_with_subtype::set_subtype","text":"
      void set_subtype(subtype_type subtype) noexcept;\n

      Sets the binary subtype of the value, also flags a binary JSON value as having a subtype, which has implications for serialization.

      "},{"location":"api/byte_container_with_subtype/set_subtype/#parameters","title":"Parameters","text":"subtype (in) subtype to set"},{"location":"api/byte_container_with_subtype/set_subtype/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this function never throws exceptions.

      "},{"location":"api/byte_container_with_subtype/set_subtype/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/byte_container_with_subtype/set_subtype/#examples","title":"Examples","text":"Example

      The example below demonstrates how a subtype can be set with set_subtype.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\n// define a byte container based on std::vector\nusing byte_container_with_subtype = nlohmann::byte_container_with_subtype<std::vector<std::uint8_t>>;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::vector<std::uint8_t> bytes = {{0xca, 0xfe, 0xba, 0xbe}};\n\n    // create container without subtype\n    auto c = byte_container_with_subtype(bytes);\n\n    std::cout << \"before calling set_subtype(42): \" << json(c) << '\\n';\n\n    // set the subtype\n    c.set_subtype(42);\n\n    std::cout << \"after calling set_subtype(42): \" << json(c) << '\\n';\n}\n

      Output:

      before calling set_subtype(42): {\"bytes\":[202,254,186,190],\"subtype\":null}\nafter calling set_subtype(42): {\"bytes\":[202,254,186,190],\"subtype\":42}\n
      "},{"location":"api/byte_container_with_subtype/set_subtype/#version-history","title":"Version history","text":"

      Since version 3.8.0.

      "},{"location":"api/byte_container_with_subtype/subtype/","title":"nlohmann::byte_container_with_subtype::subtype","text":"
      constexpr subtype_type subtype() const noexcept;\n

      Returns the numerical subtype of the value if it has a subtype. If it does not have a subtype, this function will return subtype_type(-1) as a sentinel value.

      "},{"location":"api/byte_container_with_subtype/subtype/#return-value","title":"Return value","text":"

      the numerical subtype of the binary value, or subtype_type(-1) if no subtype is set

      "},{"location":"api/byte_container_with_subtype/subtype/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this function never throws exceptions.

      "},{"location":"api/byte_container_with_subtype/subtype/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/byte_container_with_subtype/subtype/#examples","title":"Examples","text":"Example

      The example below demonstrates how the subtype can be retrieved with subtype. Note how subtype_type(-1) is returned for container c1.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\n// define a byte container based on std::vector\nusing byte_container_with_subtype = nlohmann::byte_container_with_subtype<std::vector<std::uint8_t>>;\n\nint main()\n{\n    std::vector<std::uint8_t> bytes = {{0xca, 0xfe, 0xba, 0xbe}};\n\n    // create container\n    auto c1 = byte_container_with_subtype(bytes);\n\n    // create container with subtype\n    auto c2 = byte_container_with_subtype(bytes, 42);\n\n    std::cout << \"c1.subtype() = \" << c1.subtype()\n              << \"\\nc2.subtype() = \" << c2.subtype() << std::endl;\n\n    // in case no subtype is set, return special value\n    assert(c1.subtype() == static_cast<byte_container_with_subtype::subtype_type>(-1));\n}\n

      Output:

      c1.subtype() = 18446744073709551615\nc2.subtype() = 42\n
      "},{"location":"api/byte_container_with_subtype/subtype/#version-history","title":"Version history","text":"
      • Added in version 3.8.0
      • Fixed return value to properly return subtype_type(-1) as documented in version 3.10.0.
      "},{"location":"api/json_pointer/","title":"nlohmann::json_pointer","text":"
      template<typename RefStringType>\nclass json_pointer;\n

      A JSON pointer defines a string syntax for identifying a specific value within a JSON document. It can be used with functions at and operator[]. Furthermore, JSON pointers are the base for JSON patches.

      "},{"location":"api/json_pointer/#template-parameters","title":"Template parameters","text":"RefStringType the string type used for the reference tokens making up the JSON pointer

      Deprecation

      For backwards compatibility RefStringType may also be a specialization of basic_json in which case string_t will be deduced as basic_json::string_t. This feature is deprecated and may be removed in a future major version.

      "},{"location":"api/json_pointer/#member-types","title":"Member types","text":"
      • string_t - the string type used for the reference tokens
      "},{"location":"api/json_pointer/#member-functions","title":"Member functions","text":"
      • (constructor)
      • to_string - return a string representation of the JSON pointer
      • operator string_t - return a string representation of the JSON pointer
      • operator== - compare: equal
      • operator!= - compare: not equal
      • operator/= - append to the end of the JSON pointer
      • operator/ - create JSON Pointer by appending
      • parent_pointer - returns the parent of this JSON pointer
      • pop_back - remove last reference token
      • back - return last reference token
      • push_back - append an unescaped token at the end of the pointer
      • empty - return whether pointer points to the root document
      "},{"location":"api/json_pointer/#literals","title":"Literals","text":"
      • operator\"\"_json_pointer - user-defined string literal for JSON pointers
      "},{"location":"api/json_pointer/#see-also","title":"See also","text":"
      • RFC 6901
      "},{"location":"api/json_pointer/#version-history","title":"Version history","text":"
      • Added in version 2.0.0.
      • Changed template parameter from basic_json to string type in version 3.11.0.
      "},{"location":"api/json_pointer/back/","title":"nlohmann::json_pointer::back","text":"
      const string_t& back() const;\n

      Return last reference token.

      "},{"location":"api/json_pointer/back/#return-value","title":"Return value","text":"

      Last reference token.

      "},{"location":"api/json_pointer/back/#exceptions","title":"Exceptions","text":"

      Throws out_of_range.405 if JSON pointer has no parent.

      "},{"location":"api/json_pointer/back/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/json_pointer/back/#examples","title":"Examples","text":"Example

      The example shows the usage of back.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // different JSON Pointers\n    json::json_pointer ptr1(\"/foo\");\n    json::json_pointer ptr2(\"/foo/0\");\n\n    // call empty()\n    std::cout << \"last reference token of \\\"\" << ptr1 << \"\\\" is \\\"\" << ptr1.back() << \"\\\"\\n\"\n              << \"last reference token of \\\"\" << ptr2 << \"\\\" is \\\"\" << ptr2.back() << \"\\\"\" << std::endl;\n}\n

      Output:

      last reference token of \"/foo\" is \"foo\"\nlast reference token of \"/foo/0\" is \"0\"\n
      "},{"location":"api/json_pointer/back/#version-history","title":"Version history","text":"
      • Added in version 3.6.0.
      • Changed return type to string_t in version 3.11.0.
      "},{"location":"api/json_pointer/empty/","title":"nlohmann::json_pointer::empty","text":"
      bool empty() const noexcept;\n

      Return whether pointer points to the root document.

      "},{"location":"api/json_pointer/empty/#return-value","title":"Return value","text":"

      true iff the JSON pointer points to the root document.

      "},{"location":"api/json_pointer/empty/#exception-safety","title":"Exception safety","text":"

      No-throw guarantee: this function never throws exceptions.

      "},{"location":"api/json_pointer/empty/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/json_pointer/empty/#examples","title":"Examples","text":"Example

      The example shows the result of empty for different JSON Pointers.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // different JSON Pointers\n    json::json_pointer ptr0;\n    json::json_pointer ptr1(\"\");\n    json::json_pointer ptr2(\"/foo\");\n    json::json_pointer ptr3(\"/foo/0\");\n\n    // call empty()\n    std::cout << std::boolalpha\n              << \"\\\"\" << ptr0 << \"\\\": \" << ptr0.empty() << '\\n'\n              << \"\\\"\" << ptr1 << \"\\\": \" << ptr1.empty() << '\\n'\n              << \"\\\"\" << ptr2 << \"\\\": \" << ptr2.empty() << '\\n'\n              << \"\\\"\" << ptr3 << \"\\\": \" << ptr3.empty() << std::endl;\n}\n

      Output:

      \"\": true\n\"\": true\n\"/foo\": false\n\"/foo/0\": false\n
      "},{"location":"api/json_pointer/empty/#version-history","title":"Version history","text":"

      Added in version 3.6.0.

      "},{"location":"api/json_pointer/json_pointer/","title":"nlohmann::json_pointer::json_pointer","text":"
      explicit json_pointer(const string_t& s = \"\");\n

      Create a JSON pointer according to the syntax described in Section 3 of RFC6901.

      "},{"location":"api/json_pointer/json_pointer/#parameters","title":"Parameters","text":"s (in) string representing the JSON pointer; if omitted, the empty string is assumed which references the whole JSON value"},{"location":"api/json_pointer/json_pointer/#exceptions","title":"Exceptions","text":"
      • Throws parse_error.107 if the given JSON pointer s is nonempty and does not begin with a slash (/); see example below.
      • Throws parse_error.108 if a tilde (~) in the given JSON pointer s is not followed by 0 (representing ~) or 1 (representing /); see example below.
      "},{"location":"api/json_pointer/json_pointer/#examples","title":"Examples","text":"Example

      The example shows the construction several valid JSON pointers as well as the exceptional behavior.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // correct JSON pointers\n    json::json_pointer p1;\n    json::json_pointer p2(\"\");\n    json::json_pointer p3(\"/\");\n    json::json_pointer p4(\"//\");\n    json::json_pointer p5(\"/foo/bar\");\n    json::json_pointer p6(\"/foo/bar/-\");\n    json::json_pointer p7(\"/foo/~0\");\n    json::json_pointer p8(\"/foo/~1\");\n\n    // error: JSON pointer does not begin with a slash\n    try\n    {\n        json::json_pointer p9(\"foo\");\n    }\n    catch (const json::parse_error& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n\n    // error: JSON pointer uses escape symbol ~ not followed by 0 or 1\n    try\n    {\n        json::json_pointer p10(\"/foo/~\");\n    }\n    catch (const json::parse_error& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n\n    // error: JSON pointer uses escape symbol ~ not followed by 0 or 1\n    try\n    {\n        json::json_pointer p11(\"/foo/~3\");\n    }\n    catch (const json::parse_error& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n}\n

      Output:

      [json.exception.parse_error.107] parse error at byte 1: JSON pointer must be empty or begin with '/' - was: 'foo'\n[json.exception.parse_error.108] parse error: escape character '~' must be followed with '0' or '1'\n[json.exception.parse_error.108] parse error: escape character '~' must be followed with '0' or '1'\n
      "},{"location":"api/json_pointer/json_pointer/#version-history","title":"Version history","text":"
      • Added in version 2.0.0.
      • Changed type of s to string_t in version 3.11.0.
      "},{"location":"api/json_pointer/operator_eq/","title":"nlohmann::json_pointer::operator==","text":"
      // until C++20\ntemplate<typename RefStringTypeLhs, typename RefStringTypeRhs>\nbool operator==(\n    const json_pointer<RefStringTypeLhs>& lhs,\n    const json_pointer<RefStringTypeRhs>& rhs) noexcept;            // (1)\n\ntemplate<typename RefStringTypeLhs, typename StringType>\nbool operator==(\n    const json_pointer<RefStringTypeLhs>& lhs,\n    const StringType& rhs);                                         // (2)\n\ntemplate<typename RefStringTypeRhs, typename StringType>\nbool operator==(\n    const StringType& lhs,\n    const json_pointer<RefStringTypeRhs>& rhs);                     // (2)\n\n// since C++20\nclass json_pointer {\n    template<typename RefStringTypeRhs>\n    bool operator==(\n        const json_pointer<RefStringTypeRhs>& rhs) const noexcept;  // (1)\n\n    bool operator==(const string_t& rhs) const;                     // (2)\n};\n
      1. Compares two JSON pointers for equality by comparing their reference tokens.

      2. Compares a JSON pointer and a string or a string and a JSON pointer for equality by converting the string to a JSON pointer and comparing the JSON pointers according to 1.

      "},{"location":"api/json_pointer/operator_eq/#template-parameters","title":"Template parameters","text":"RefStringTypeLhs, RefStringTypeRhs the string type of the left-hand side or right-hand side JSON pointer, respectively StringType the string type derived from the json_pointer operand (json_pointer::string_t)"},{"location":"api/json_pointer/operator_eq/#parameters","title":"Parameters","text":"lhs (in) first value to consider rhs (in) second value to consider"},{"location":"api/json_pointer/operator_eq/#return-value","title":"Return value","text":"

      whether the values lhs/*this and rhs are equal

      "},{"location":"api/json_pointer/operator_eq/#exception-safety","title":"Exception safety","text":"
      1. No-throw guarantee: this function never throws exceptions.
      2. Strong exception safety: if an exception occurs, the original value stays intact.
      "},{"location":"api/json_pointer/operator_eq/#exceptions","title":"Exceptions","text":"
      1. (none)
      2. The function can throw the following exceptions:
      3. Throws parse_error.107 if the given JSON pointer s is nonempty and does not begin with a slash (/); see example below.
      4. Throws parse_error.108 if a tilde (~) in the given JSON pointer s is not followed by 0 (representing ~) or 1 (representing /); see example below.
      "},{"location":"api/json_pointer/operator_eq/#complexity","title":"Complexity","text":"

      Constant if lhs and rhs differ in the number of reference tokens, otherwise linear in the number of reference tokens.

      "},{"location":"api/json_pointer/operator_eq/#notes","title":"Notes","text":"

      Deprecation

      Overload 2 is deprecated and will be removed in a future major version release.

      "},{"location":"api/json_pointer/operator_eq/#examples","title":"Examples","text":"Example: (1) Comparing JSON pointers

      The example demonstrates comparing JSON pointers.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // different JSON pointers\n    json::json_pointer ptr0;\n    json::json_pointer ptr1(\"\");\n    json::json_pointer ptr2(\"/foo\");\n\n    // compare JSON pointers\n    std::cout << std::boolalpha\n              << \"\\\"\" << ptr0 << \"\\\" == \\\"\" << ptr0 << \"\\\": \" << (ptr0 == ptr0) << '\\n'\n              << \"\\\"\" << ptr0 << \"\\\" == \\\"\" << ptr1 << \"\\\": \" << (ptr0 == ptr1) << '\\n'\n              << \"\\\"\" << ptr1 << \"\\\" == \\\"\" << ptr2 << \"\\\": \" << (ptr1 == ptr2) << '\\n'\n              << \"\\\"\" << ptr2 << \"\\\" == \\\"\" << ptr2 << \"\\\": \" << (ptr2 == ptr2) << std::endl;\n}\n

      Output:

      \"\" == \"\": true\n\"\" == \"\": true\n\"\" == \"/foo\": false\n\"/foo\" == \"/foo\": true\n
      Example: (2) Comparing JSON pointers and strings

      The example demonstrates comparing JSON pointers and strings, and when doing so may raise an exception.

      #include <exception>\n#include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // different JSON pointers\n    json::json_pointer ptr0;\n    json::json_pointer ptr1(\"\");\n    json::json_pointer ptr2(\"/foo\");\n\n    // different strings\n    std::string str0(\"\");\n    std::string str1(\"/foo\");\n    std::string str2(\"bar\");\n\n    // compare JSON pointers and strings\n    std::cout << std::boolalpha\n              << \"\\\"\" << ptr0 << \"\\\" == \\\"\" << str0 << \"\\\": \" << (ptr0 == str0) << '\\n'\n              << \"\\\"\" << str0 << \"\\\" == \\\"\" << ptr1 << \"\\\": \" << (str0 == ptr1) << '\\n'\n              << \"\\\"\" << ptr2 << \"\\\" == \\\"\" << str1 << \"\\\": \" << (ptr2 == str1) << std::endl;\n\n    try\n    {\n        std::cout << \"\\\"\" << str2 << \"\\\" == \\\"\" << ptr2 << \"\\\": \" << (str2 == ptr2) << std::endl;\n    }\n    catch (const json::parse_error& ex)\n    {\n        std::cout << ex.what() << std::endl;\n    }\n}\n

      Output:

      \"\" == \"\": true\n\"\" == \"\": true\n\"/foo\" == \"/foo\": true\n\"bar\" == \"/foo\": [json.exception.parse_error.107] parse error at byte 1: JSON pointer must be empty or begin with '/' - was: 'bar'\n
      "},{"location":"api/json_pointer/operator_eq/#version-history","title":"Version history","text":"
      1. Added in version 2.1.0. Added C++20 member functions in version 3.11.2.
      2. Added for backward compatibility and deprecated in version 3.11.2.
      "},{"location":"api/json_pointer/operator_ne/","title":"nlohmann::json_pointer::operator!=","text":"
      // until C++20\ntemplate<typename RefStringTypeLhs, typename RefStringTypeRhs>\nbool operator!=(\n    const json_pointer<RefStringTypeLhs>& lhs,\n    const json_pointer<RefStringTypeRhs>& rhs) noexcept;  // (1)\n\ntemplate<typename RefStringTypeLhs, typename StringType>\nbool operator!=(\n    const json_pointer<RefStringTypeLhs>& lhs,\n    const StringType& rhs);                               // (2)\n\ntemplate<typename RefStringTypeRhs, typename StringType>\nbool operator!=(\n    const StringType& lhs,\n    const json_pointer<RefStringTypeRhs>& rhs);           // (2)\n
      1. Compares two JSON pointers for inequality by comparing their reference tokens.

      2. Compares a JSON pointer and a string or a string and a JSON pointer for inequality by converting the string to a JSON pointer and comparing the JSON pointers according to 1.

      "},{"location":"api/json_pointer/operator_ne/#template-parameters","title":"Template parameters","text":"RefStringTypeLhs, RefStringTypeRhs the string type of the left-hand side or right-hand side JSON pointer, respectively StringType the string type derived from the json_pointer operand (json_pointer::string_t)"},{"location":"api/json_pointer/operator_ne/#parameters","title":"Parameters","text":"lhs (in) first value to consider rhs (in) second value to consider"},{"location":"api/json_pointer/operator_ne/#return-value","title":"Return value","text":"

      whether the values lhs/*this and rhs are not equal

      "},{"location":"api/json_pointer/operator_ne/#exception-safety","title":"Exception safety","text":"
      1. No-throw guarantee: this function never throws exceptions.
      2. Strong exception safety: if an exception occurs, the original value stays intact.
      "},{"location":"api/json_pointer/operator_ne/#exceptions","title":"Exceptions","text":"
      1. (none)
      2. The function can throw the following exceptions:
      3. Throws parse_error.107 if the given JSON pointer s is nonempty and does not begin with a slash (/); see example below.
      4. Throws parse_error.108 if a tilde (~) in the given JSON pointer s is not followed by 0 (representing ~) or 1 (representing /); see example below.
      "},{"location":"api/json_pointer/operator_ne/#complexity","title":"Complexity","text":"

      Constant if lhs and rhs differ in the number of reference tokens, otherwise linear in the number of reference tokens.

      "},{"location":"api/json_pointer/operator_ne/#notes","title":"Notes","text":"

      Operator overload resolution

      Since C++20 overload resolution will consider the rewritten candidate generated from operator==.

      Deprecation

      Overload 2 is deprecated and will be removed in a future major version release.

      "},{"location":"api/json_pointer/operator_ne/#examples","title":"Examples","text":"Example: (1) Comparing JSON pointers

      The example demonstrates comparing JSON pointers.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // different JSON pointers\n    json::json_pointer ptr0;\n    json::json_pointer ptr1(\"\");\n    json::json_pointer ptr2(\"/foo\");\n\n    // compare JSON pointers\n    std::cout << std::boolalpha\n              << \"\\\"\" << ptr0 << \"\\\" != \\\"\" << ptr0 << \"\\\": \" << (ptr0 != ptr0) << '\\n'\n              << \"\\\"\" << ptr0 << \"\\\" != \\\"\" << ptr1 << \"\\\": \" << (ptr0 != ptr1) << '\\n'\n              << \"\\\"\" << ptr1 << \"\\\" != \\\"\" << ptr2 << \"\\\": \" << (ptr1 != ptr2) << '\\n'\n              << \"\\\"\" << ptr2 << \"\\\" != \\\"\" << ptr2 << \"\\\": \" << (ptr2 != ptr2) << std::endl;\n}\n

      Output:

      \"\" != \"\": false\n\"\" != \"\": false\n\"\" != \"/foo\": true\n\"/foo\" != \"/foo\": false\n
      Example: (2) Comparing JSON pointers and strings

      The example demonstrates comparing JSON pointers and strings, and when doing so may raise an exception.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // different JSON pointers\n    json::json_pointer ptr0;\n    json::json_pointer ptr1(\"\");\n    json::json_pointer ptr2(\"/foo\");\n\n    // different strings\n    std::string str0(\"\");\n    std::string str1(\"/foo\");\n    std::string str2(\"bar\");\n\n    // compare JSON pointers and strings\n    std::cout << std::boolalpha\n              << \"\\\"\" << ptr0 << \"\\\" != \\\"\" << str0 << \"\\\": \" << (ptr0 != str0) << '\\n'\n              << \"\\\"\" << str0 << \"\\\" != \\\"\" << ptr1 << \"\\\": \" << (str0 != ptr1) << '\\n'\n              << \"\\\"\" << ptr2 << \"\\\" != \\\"\" << str1 << \"\\\": \" << (ptr2 != str1) << std::endl;\n\n    try\n    {\n        std::cout << \"\\\"\" << str2 << \"\\\" != \\\"\" << ptr2 << \"\\\": \" << (str2 != ptr2) << std::endl;\n    }\n    catch (const json::parse_error& ex)\n    {\n        std::cout << ex.what() << std::endl;\n    }\n}\n

      Output:

      \"\" != \"\": false\n\"\" != \"\": false\n\"/foo\" != \"/foo\": false\n\"bar\" != \"/foo\": [json.exception.parse_error.107] parse error at byte 1: JSON pointer must be empty or begin with '/' - was: 'bar'\n
      "},{"location":"api/json_pointer/operator_ne/#version-history","title":"Version history","text":"
      1. Added in version 2.1.0.
      2. Added for backward compatibility and deprecated in version 3.11.2.
      "},{"location":"api/json_pointer/operator_slash/","title":"nlohmann::json_pointer::operator/","text":"
      // (1)\njson_pointer operator/(const json_pointer& lhs, const json_pointer& rhs);\n\n// (2)\njson_pointer operator/(const json_pointer& lhs, string_t token);\n\n// (3)\njson_pointer operator/(const json_pointer& lhs, std::size_t array_idx);\n
      1. create a new JSON pointer by appending the right JSON pointer at the end of the left JSON pointer
      2. create a new JSON pointer by appending the unescaped token at the end of the JSON pointer
      3. create a new JSON pointer by appending the array-index-token at the end of the JSON pointer
      "},{"location":"api/json_pointer/operator_slash/#parameters","title":"Parameters","text":"lhs (in) JSON pointer rhs (in) JSON pointer to append token (in) reference token to append array_idx (in) array index to append"},{"location":"api/json_pointer/operator_slash/#return-value","title":"Return value","text":"
      1. a new JSON pointer with rhs appended to lhs
      2. a new JSON pointer with unescaped token appended to lhs
      3. a new JSON pointer with array_idx appended to lhs
      "},{"location":"api/json_pointer/operator_slash/#complexity","title":"Complexity","text":"
      1. Linear in the length of lhs and rhs.
      2. Linear in the length of lhs.
      3. Linear in the length of lhs.
      "},{"location":"api/json_pointer/operator_slash/#examples","title":"Examples","text":"Example

      The example shows the usage of operator/.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON pointer\n    json::json_pointer ptr(\"/foo\");\n\n    // append a JSON Pointer\n    std::cout << \"\\\"\" << ptr / json::json_pointer(\"/bar/baz\") << \"\\\"\\n\";\n\n    // append a string\n    std::cout << \"\\\"\" << ptr / \"fob\" << \"\\\"\\n\";\n\n    // append an array index\n    std::cout << \"\\\"\" << ptr / 42 << \"\\\"\" << std::endl;\n}\n

      Output:

      \"/foo/bar/baz\"\n\"/foo/fob\"\n\"/foo/42\"\n
      "},{"location":"api/json_pointer/operator_slash/#version-history","title":"Version history","text":"
      1. Added in version 3.6.0.
      2. Added in version 3.6.0. Changed type of token to string_t in version 3.11.0.
      3. Added in version 3.6.0.
      "},{"location":"api/json_pointer/operator_slasheq/","title":"nlohmann::json_pointer::operator/=","text":"
      // (1)\njson_pointer& operator/=(const json_pointer& ptr);\n\n// (2)\njson_pointer& operator/=(string_t token);\n\n// (3)\njson_pointer& operator/=(std::size_t array_idx)\n
      1. append another JSON pointer at the end of this JSON pointer
      2. append an unescaped reference token at the end of this JSON pointer
      3. append an array index at the end of this JSON pointer
      "},{"location":"api/json_pointer/operator_slasheq/#parameters","title":"Parameters","text":"ptr (in) JSON pointer to append token (in) reference token to append array_idx (in) array index to append"},{"location":"api/json_pointer/operator_slasheq/#return-value","title":"Return value","text":"
      1. JSON pointer with ptr appended
      2. JSON pointer with token appended without escaping token
      3. JSON pointer with array_idx appended
      "},{"location":"api/json_pointer/operator_slasheq/#complexity","title":"Complexity","text":"
      1. Linear in the length of ptr.
      2. Amortized constant.
      3. Amortized constant.
      "},{"location":"api/json_pointer/operator_slasheq/#examples","title":"Examples","text":"Example

      The example shows the usage of operator/=.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON pointer\n    json::json_pointer ptr(\"/foo\");\n    std::cout << \"\\\"\" << ptr << \"\\\"\\n\";\n\n    // append a JSON Pointer\n    ptr /= json::json_pointer(\"/bar/baz\");\n    std::cout << \"\\\"\" << ptr << \"\\\"\\n\";\n\n    // append a string\n    ptr /= \"fob\";\n    std::cout << \"\\\"\" << ptr << \"\\\"\\n\";\n\n    // append an array index\n    ptr /= 42;\n    std::cout << \"\\\"\" << ptr << \"\\\"\" << std::endl;\n}\n

      Output:

      \"/foo\"\n\"/foo/bar/baz\"\n\"/foo/bar/baz/fob\"\n\"/foo/bar/baz/fob/42\"\n
      "},{"location":"api/json_pointer/operator_slasheq/#version-history","title":"Version history","text":"
      1. Added in version 3.6.0.
      2. Added in version 3.6.0. Changed type of token to string_t in version 3.11.0.
      3. Added in version 3.6.0.
      "},{"location":"api/json_pointer/operator_string_t/","title":"nlohmann::json_pointer::operator string_t","text":"
      operator string_t() const\n

      Return a string representation of the JSON pointer.

      "},{"location":"api/json_pointer/operator_string_t/#return-value","title":"Return value","text":"

      A string representation of the JSON pointer

      "},{"location":"api/json_pointer/operator_string_t/#possible-implementation","title":"Possible implementation","text":"
      operator string_t() const\n{\n    return to_string();\n}\n
      "},{"location":"api/json_pointer/operator_string_t/#notes","title":"Notes","text":"

      Deprecation

      This function is deprecated in favor of to_string and will be removed in a future major version release.

      "},{"location":"api/json_pointer/operator_string_t/#examples","title":"Examples","text":"Example

      The example shows how JSON Pointers can be implicitly converted to strings.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // different JSON Pointers\n    json::json_pointer ptr1(\"/foo/0\");\n    json::json_pointer ptr2(\"/a~1b\");\n\n    // implicit conversion to string\n    std::string s;\n    s += ptr1;\n    s += \"\\n\";\n    s += ptr2;\n\n    std::cout << s << std::endl;\n}\n

      Output:

      /foo/0\n/a~1b\n
      "},{"location":"api/json_pointer/operator_string_t/#version-history","title":"Version history","text":"
      • Since version 2.0.0.
      • Changed type to string_t and deprecated in version 3.11.0.
      "},{"location":"api/json_pointer/parent_pointer/","title":"nlohmann::json_pointer::parent_pointer","text":"
      json_pointer parent_pointer() const;\n

      Returns the parent of this JSON pointer.

      "},{"location":"api/json_pointer/parent_pointer/#return-value","title":"Return value","text":"

      Parent of this JSON pointer; in case this JSON pointer is the root, the root itself is returned.

      "},{"location":"api/json_pointer/parent_pointer/#complexity","title":"Complexity","text":"

      Linear in the length of the JSON pointer.

      "},{"location":"api/json_pointer/parent_pointer/#examples","title":"Examples","text":"Example

      The example shows the result of parent_pointer for different JSON Pointers.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // different JSON Pointers\n    json::json_pointer ptr1(\"\");\n    json::json_pointer ptr2(\"/foo\");\n    json::json_pointer ptr3(\"/foo/0\");\n\n    // call parent_pointer()\n    std::cout << std::boolalpha\n              << \"parent of \\\"\" << ptr1 << \"\\\" is \\\"\" << ptr1.parent_pointer() << \"\\\"\\n\"\n              << \"parent of \\\"\" << ptr2 << \"\\\" is \\\"\" << ptr2.parent_pointer() << \"\\\"\\n\"\n              << \"parent of \\\"\" << ptr3 << \"\\\" is \\\"\" << ptr3.parent_pointer() << \"\\\"\" << std::endl;\n}\n

      Output:

      parent of \"\" is \"\"\nparent of \"/foo\" is \"\"\nparent of \"/foo/0\" is \"/foo\"\n
      "},{"location":"api/json_pointer/parent_pointer/#version-history","title":"Version history","text":"

      Added in version 3.6.0.

      "},{"location":"api/json_pointer/pop_back/","title":"nlohmann::json_pointer::pop_back","text":"
      void pop_back();\n

      Remove last reference token.

      "},{"location":"api/json_pointer/pop_back/#exceptions","title":"Exceptions","text":"

      Throws out_of_range.405 if JSON pointer has no parent.

      "},{"location":"api/json_pointer/pop_back/#complexity","title":"Complexity","text":"

      Constant.

      "},{"location":"api/json_pointer/pop_back/#examples","title":"Examples","text":"Example

      The example shows the usage of pop_back.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create empty JSON Pointer\n    json::json_pointer ptr(\"/foo/bar/baz\");\n    std::cout << \"\\\"\" << ptr << \"\\\"\\n\";\n\n    // call pop_back()\n    ptr.pop_back();\n    std::cout << \"\\\"\" << ptr << \"\\\"\\n\";\n\n    ptr.pop_back();\n    std::cout << \"\\\"\" << ptr << \"\\\"\\n\";\n\n    ptr.pop_back();\n    std::cout << \"\\\"\" << ptr << \"\\\"\\n\";\n}\n

      Output:

      \"/foo/bar/baz\"\n\"/foo/bar\"\n\"/foo\"\n\"\"\n
      "},{"location":"api/json_pointer/pop_back/#version-history","title":"Version history","text":"

      Added in version 3.6.0.

      "},{"location":"api/json_pointer/push_back/","title":"nlohmann::json_pointer::push_back","text":"
      void push_back(const string_t& token);\n\nvoid push_back(string_t&& token);\n

      Append an unescaped token at the end of the reference pointer.

      "},{"location":"api/json_pointer/push_back/#parameters","title":"Parameters","text":"token (in) token to add"},{"location":"api/json_pointer/push_back/#complexity","title":"Complexity","text":"

      Amortized constant.

      "},{"location":"api/json_pointer/push_back/#examples","title":"Examples","text":"Example

      The example shows the result of push_back for different JSON Pointers.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create empty JSON Pointer\n    json::json_pointer ptr;\n    std::cout << \"\\\"\" << ptr << \"\\\"\\n\";\n\n    // call push_back()\n    ptr.push_back(\"foo\");\n    std::cout << \"\\\"\" << ptr << \"\\\"\\n\";\n\n    ptr.push_back(\"0\");\n    std::cout << \"\\\"\" << ptr << \"\\\"\\n\";\n\n    ptr.push_back(\"bar\");\n    std::cout << \"\\\"\" << ptr << \"\\\"\\n\";\n}\n

      Output:

      \"\"\n\"/foo\"\n\"/foo/0\"\n\"/foo/0/bar\"\n
      "},{"location":"api/json_pointer/push_back/#version-history","title":"Version history","text":"
      • Added in version 3.6.0.
      • Changed type of token to string_t in version 3.11.0.
      "},{"location":"api/json_pointer/string_t/","title":"nlohmann::json_pointer::string_t","text":"
      using string_t = RefStringType;\n

      The string type used for the reference tokens making up the JSON pointer.

      See basic_json::string_t for more information.

      "},{"location":"api/json_pointer/string_t/#examples","title":"Examples","text":"Example

      The example shows the type string_t and its relation to basic_json::string_t.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    json::json_pointer::string_t s = \"This is a string.\";\n\n    std::cout << s << std::endl;\n\n    std::cout << std::boolalpha << std::is_same<json::json_pointer::string_t, json::string_t>::value << std::endl;\n}\n

      Output:

      This is a string.\ntrue\n
      "},{"location":"api/json_pointer/string_t/#version-history","title":"Version history","text":"
      • Added in version 3.11.0.
      "},{"location":"api/json_pointer/to_string/","title":"nlohmann::json_pointer::to_string","text":"
      string_t to_string() const;\n

      Return a string representation of the JSON pointer.

      "},{"location":"api/json_pointer/to_string/#return-value","title":"Return value","text":"

      A string representation of the JSON pointer

      "},{"location":"api/json_pointer/to_string/#notes","title":"Notes","text":"

      For each JSON pointer ptr, it holds:

      ptr == json_pointer(ptr.to_string());\n
      "},{"location":"api/json_pointer/to_string/#examples","title":"Examples","text":"Example

      The example shows the result of to_string.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // different JSON Pointers\n    json::json_pointer ptr1(\"\");\n    json::json_pointer ptr2(\"/foo\");\n    json::json_pointer ptr3(\"/foo/0\");\n    json::json_pointer ptr4(\"/\");\n    json::json_pointer ptr5(\"/a~1b\");\n    json::json_pointer ptr6(\"/c%d\");\n    json::json_pointer ptr7(\"/e^f\");\n    json::json_pointer ptr8(\"/g|h\");\n    json::json_pointer ptr9(\"/i\\\\j\");\n    json::json_pointer ptr10(\"/k\\\"l\");\n    json::json_pointer ptr11(\"/ \");\n    json::json_pointer ptr12(\"/m~0n\");\n\n    std::cout << \"\\\"\" << ptr1.to_string() << \"\\\"\\n\"\n              << \"\\\"\" << ptr2.to_string() << \"\\\"\\n\"\n              << \"\\\"\" << ptr3.to_string() << \"\\\"\\n\"\n              << \"\\\"\" << ptr4.to_string() << \"\\\"\\n\"\n              << \"\\\"\" << ptr5.to_string() << \"\\\"\\n\"\n              << \"\\\"\" << ptr6.to_string() << \"\\\"\\n\"\n              << \"\\\"\" << ptr7.to_string() << \"\\\"\\n\"\n              << \"\\\"\" << ptr8.to_string() << \"\\\"\\n\"\n              << \"\\\"\" << ptr9.to_string() << \"\\\"\\n\"\n              << \"\\\"\" << ptr10.to_string() << \"\\\"\\n\"\n              << \"\\\"\" << ptr11.to_string() << \"\\\"\\n\"\n              << \"\\\"\" << ptr12.to_string() << \"\\\"\" << std::endl;\n}\n

      Output:

      \"\"\n\"/foo\"\n\"/foo/0\"\n\"/\"\n\"/a~1b\"\n\"/c%d\"\n\"/e^f\"\n\"/g|h\"\n\"/i\\j\"\n\"/k\"l\"\n\"/ \"\n\"/m~0n\"\n
      "},{"location":"api/json_pointer/to_string/#version-history","title":"Version history","text":"
      • Since version 2.0.0.
      • Changed return type to string_t in version 3.11.0.
      "},{"location":"api/json_sax/","title":"nlohmann::json_sax","text":"
      template<typename BasicJsonType>\nstruct json_sax;\n

      This class describes the SAX interface used by sax_parse. Each function is called in different situations while the input is parsed. The boolean return value informs the parser whether to continue processing the input.

      "},{"location":"api/json_sax/#template-parameters","title":"Template parameters","text":"BasicJsonType a specialization of basic_json"},{"location":"api/json_sax/#member-types","title":"Member types","text":"
      • number_integer_t - BasicJsonType's type for numbers (integer)
      • number_unsigned_t - BasicJsonType's type for numbers (unsigned)
      • number_float_t - BasicJsonType's type for numbers (floating-point)
      • string_t - BasicJsonType's type for strings
      • binary_t - BasicJsonType's type for binary arrays
      "},{"location":"api/json_sax/#member-functions","title":"Member functions","text":"
      • binary (virtual) - a binary value was read
      • boolean (virtual) - a boolean value was read
      • end_array (virtual) - the end of an array was read
      • end_object (virtual) - the end of an object was read
      • key (virtual) - an object key was read
      • null (virtual) - a null value was read
      • number_float (virtual) - a floating-point number was read
      • number_integer (virtual) - an integer number was read
      • number_unsigned (virtual) - an unsigned integer number was read
      • parse_error (virtual) - a parse error occurred
      • start_array (virtual) - the beginning of an array was read
      • start_object (virtual) - the beginning of an object was read
      • string (virtual) - a string value was read
      "},{"location":"api/json_sax/#version-history","title":"Version history","text":"
      • Added in version 3.2.0.
      • Support for binary values (binary_t, binary) added in version 3.8.0.
      "},{"location":"api/json_sax/binary/","title":"nlohmann::json_sax::binary","text":"
      virtual bool binary(binary_t& val) = 0;\n

      A binary value was read.

      "},{"location":"api/json_sax/binary/#parameters","title":"Parameters","text":"val (in) binary value"},{"location":"api/json_sax/binary/#return-value","title":"Return value","text":"

      Whether parsing should proceed.

      "},{"location":"api/json_sax/binary/#notes","title":"Notes","text":"

      It is safe to move the passed binary value.

      "},{"location":"api/json_sax/binary/#examples","title":"Examples","text":"Example

      The example below shows how the SAX interface is used.

      #include <iostream>\n#include <iomanip>\n#include <sstream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector<std::string> events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t& s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t& val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t& val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t& val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string& last_token, const json::exception& ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // CBOR byte string\n    std::vector<std::uint8_t> vec = {{0x44, 0xcA, 0xfe, 0xba, 0xbe}};\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse CBOR\n    bool result = json::sax_parse(vec, &sec, json::input_format_t::cbor);\n\n    // output the recorded events\n    for (auto& event : sec.events)\n    {\n        std::cout << event << \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout << \"\\nresult: \" << std::boolalpha << result << std::endl;\n}\n

      Output:

      binary(val=[...])\n\nresult: true\n
      "},{"location":"api/json_sax/binary/#version-history","title":"Version history","text":"
      • Added in version 3.8.0.
      "},{"location":"api/json_sax/boolean/","title":"nlohmann::json_sax::boolean","text":"
      virtual bool boolean(bool val) = 0;\n

      A boolean value was read.

      "},{"location":"api/json_sax/boolean/#parameters","title":"Parameters","text":"val (in) boolean value"},{"location":"api/json_sax/boolean/#return-value","title":"Return value","text":"

      Whether parsing should proceed.

      "},{"location":"api/json_sax/boolean/#examples","title":"Examples","text":"Example

      The example below shows how the SAX interface is used.

      #include <iostream>\n#include <iomanip>\n#include <sstream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector<std::string> events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t& s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t& val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t& val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t& val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string& last_token, const json::exception& ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &sec);\n\n    // output the recorded events\n    for (auto& event : sec.events)\n    {\n        std::cout << event << \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout << \"\\nresult: \" << std::boolalpha << result << std::endl;\n}\n

      Output:

      start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634<U+000A>        }<U+000A>    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n
      "},{"location":"api/json_sax/boolean/#version-history","title":"Version history","text":"
      • Added in version 3.2.0.
      "},{"location":"api/json_sax/end_array/","title":"nlohmann::json_sax::end_array","text":"
      virtual bool end_array() = 0;\n

      The end of an array was read.

      "},{"location":"api/json_sax/end_array/#return-value","title":"Return value","text":"

      Whether parsing should proceed.

      "},{"location":"api/json_sax/end_array/#examples","title":"Examples","text":"Example

      The example below shows how the SAX interface is used.

      #include <iostream>\n#include <iomanip>\n#include <sstream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector<std::string> events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t& s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t& val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t& val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t& val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string& last_token, const json::exception& ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &sec);\n\n    // output the recorded events\n    for (auto& event : sec.events)\n    {\n        std::cout << event << \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout << \"\\nresult: \" << std::boolalpha << result << std::endl;\n}\n

      Output:

      start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634<U+000A>        }<U+000A>    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n
      "},{"location":"api/json_sax/end_array/#version-history","title":"Version history","text":"
      • Added in version 3.2.0.
      "},{"location":"api/json_sax/end_object/","title":"nlohmann::json_sax::end_object","text":"
      virtual bool end_object() = 0;\n

      The end of an object was read.

      "},{"location":"api/json_sax/end_object/#return-value","title":"Return value","text":"

      Whether parsing should proceed.

      "},{"location":"api/json_sax/end_object/#examples","title":"Examples","text":"Example

      The example below shows how the SAX interface is used.

      #include <iostream>\n#include <iomanip>\n#include <sstream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector<std::string> events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t& s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t& val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t& val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t& val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string& last_token, const json::exception& ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &sec);\n\n    // output the recorded events\n    for (auto& event : sec.events)\n    {\n        std::cout << event << \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout << \"\\nresult: \" << std::boolalpha << result << std::endl;\n}\n

      Output:

      start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634<U+000A>        }<U+000A>    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n
      "},{"location":"api/json_sax/end_object/#version-history","title":"Version history","text":"
      • Added in version 3.2.0.
      "},{"location":"api/json_sax/key/","title":"nlohmann::json_sax::key","text":"
      virtual bool key(string_t& val) = 0;\n

      An object key was read.

      "},{"location":"api/json_sax/key/#parameters","title":"Parameters","text":"val (in) object key"},{"location":"api/json_sax/key/#return-value","title":"Return value","text":"

      Whether parsing should proceed.

      "},{"location":"api/json_sax/key/#notes","title":"Notes","text":"

      It is safe to move the passed object key value.

      "},{"location":"api/json_sax/key/#examples","title":"Examples","text":"Example

      The example below shows how the SAX interface is used.

      #include <iostream>\n#include <iomanip>\n#include <sstream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector<std::string> events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t& s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t& val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t& val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t& val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string& last_token, const json::exception& ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &sec);\n\n    // output the recorded events\n    for (auto& event : sec.events)\n    {\n        std::cout << event << \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout << \"\\nresult: \" << std::boolalpha << result << std::endl;\n}\n

      Output:

      start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634<U+000A>        }<U+000A>    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n
      "},{"location":"api/json_sax/key/#version-history","title":"Version history","text":"
      • Added in version 3.2.0.
      "},{"location":"api/json_sax/null/","title":"nlohmann::json_sax::null","text":"
      virtual bool null() = 0;\n

      A null value was read.

      "},{"location":"api/json_sax/null/#return-value","title":"Return value","text":"

      Whether parsing should proceed.

      "},{"location":"api/json_sax/null/#examples","title":"Examples","text":"Example

      The example below shows how the SAX interface is used.

      #include <iostream>\n#include <iomanip>\n#include <sstream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector<std::string> events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t& s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t& val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t& val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t& val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string& last_token, const json::exception& ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &sec);\n\n    // output the recorded events\n    for (auto& event : sec.events)\n    {\n        std::cout << event << \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout << \"\\nresult: \" << std::boolalpha << result << std::endl;\n}\n

      Output:

      start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634<U+000A>        }<U+000A>    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n
      "},{"location":"api/json_sax/null/#version-history","title":"Version history","text":"
      • Added in version 3.2.0.
      "},{"location":"api/json_sax/number_float/","title":"nlohmann::json_sax::number_float","text":"
      virtual bool number_float(number_float_t val, const string_t& s) = 0;\n

      A floating-point number was read.

      "},{"location":"api/json_sax/number_float/#parameters","title":"Parameters","text":"val (in) floating-point value s (in) string representation of the original input"},{"location":"api/json_sax/number_float/#return-value","title":"Return value","text":"

      Whether parsing should proceed.

      "},{"location":"api/json_sax/number_float/#examples","title":"Examples","text":"Example

      The example below shows how the SAX interface is used.

      #include <iostream>\n#include <iomanip>\n#include <sstream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector<std::string> events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t& s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t& val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t& val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t& val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string& last_token, const json::exception& ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &sec);\n\n    // output the recorded events\n    for (auto& event : sec.events)\n    {\n        std::cout << event << \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout << \"\\nresult: \" << std::boolalpha << result << std::endl;\n}\n

      Output:

      start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634<U+000A>        }<U+000A>    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n
      "},{"location":"api/json_sax/number_float/#version-history","title":"Version history","text":"
      • Added in version 3.2.0.
      "},{"location":"api/json_sax/number_integer/","title":"nlohmann::json_sax::number_integer","text":"
      virtual bool number_integer(number_integer_t val) = 0;\n

      An integer number was read.

      "},{"location":"api/json_sax/number_integer/#parameters","title":"Parameters","text":"val (in) integer value"},{"location":"api/json_sax/number_integer/#return-value","title":"Return value","text":"

      Whether parsing should proceed.

      "},{"location":"api/json_sax/number_integer/#examples","title":"Examples","text":"Example

      The example below shows how the SAX interface is used.

      #include <iostream>\n#include <iomanip>\n#include <sstream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector<std::string> events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t& s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t& val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t& val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t& val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string& last_token, const json::exception& ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &sec);\n\n    // output the recorded events\n    for (auto& event : sec.events)\n    {\n        std::cout << event << \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout << \"\\nresult: \" << std::boolalpha << result << std::endl;\n}\n

      Output:

      start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634<U+000A>        }<U+000A>    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n
      "},{"location":"api/json_sax/number_integer/#version-history","title":"Version history","text":"
      • Added in version 3.2.0.
      "},{"location":"api/json_sax/number_unsigned/","title":"nlohmann::json_sax::number_unsigned","text":"
      virtual bool number_unsigned(number_unsigned_t val) = 0;\n

      An unsigned integer number was read.

      "},{"location":"api/json_sax/number_unsigned/#parameters","title":"Parameters","text":"val (in) unsigned integer value"},{"location":"api/json_sax/number_unsigned/#return-value","title":"Return value","text":"

      Whether parsing should proceed.

      "},{"location":"api/json_sax/number_unsigned/#examples","title":"Examples","text":"Example

      The example below shows how the SAX interface is used.

      #include <iostream>\n#include <iomanip>\n#include <sstream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector<std::string> events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t& s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t& val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t& val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t& val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string& last_token, const json::exception& ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &sec);\n\n    // output the recorded events\n    for (auto& event : sec.events)\n    {\n        std::cout << event << \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout << \"\\nresult: \" << std::boolalpha << result << std::endl;\n}\n

      Output:

      start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634<U+000A>        }<U+000A>    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n
      "},{"location":"api/json_sax/number_unsigned/#version-history","title":"Version history","text":"
      • Added in version 3.2.0.
      "},{"location":"api/json_sax/parse_error/","title":"nlohmann::json_sax::parse_error","text":"
      virtual bool parse_error(std::size_t position,\n                         const std::string& last_token,\n                         const detail::exception& ex) = 0;\n

      A parse error occurred.

      "},{"location":"api/json_sax/parse_error/#parameters","title":"Parameters","text":"position (in) the position in the input where the error occurs last_token (in) the last read token ex (in) an exception object describing the error"},{"location":"api/json_sax/parse_error/#return-value","title":"Return value","text":"

      Whether parsing should proceed (must return false).

      "},{"location":"api/json_sax/parse_error/#examples","title":"Examples","text":"Example

      The example below shows how the SAX interface is used.

      #include <iostream>\n#include <iomanip>\n#include <sstream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector<std::string> events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t& s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t& val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t& val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t& val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string& last_token, const json::exception& ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &sec);\n\n    // output the recorded events\n    for (auto& event : sec.events)\n    {\n        std::cout << event << \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout << \"\\nresult: \" << std::boolalpha << result << std::endl;\n}\n

      Output:

      start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634<U+000A>        }<U+000A>    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n
      "},{"location":"api/json_sax/parse_error/#version-history","title":"Version history","text":"
      • Added in version 3.2.0.
      "},{"location":"api/json_sax/start_array/","title":"nlohmann::json_sax::start_array","text":"
      virtual bool start_array(std::size_t elements) = 0;\n

      The beginning of an array was read.

      "},{"location":"api/json_sax/start_array/#parameters","title":"Parameters","text":"elements (in) number of object elements or -1 if unknown"},{"location":"api/json_sax/start_array/#return-value","title":"Return value","text":"

      Whether parsing should proceed.

      "},{"location":"api/json_sax/start_array/#notes","title":"Notes","text":"

      Binary formats may report the number of elements.

      "},{"location":"api/json_sax/start_array/#examples","title":"Examples","text":"Example

      The example below shows how the SAX interface is used.

      #include <iostream>\n#include <iomanip>\n#include <sstream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector<std::string> events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t& s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t& val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t& val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t& val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string& last_token, const json::exception& ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &sec);\n\n    // output the recorded events\n    for (auto& event : sec.events)\n    {\n        std::cout << event << \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout << \"\\nresult: \" << std::boolalpha << result << std::endl;\n}\n

      Output:

      start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634<U+000A>        }<U+000A>    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n
      "},{"location":"api/json_sax/start_array/#version-history","title":"Version history","text":"
      • Added in version 3.2.0.
      "},{"location":"api/json_sax/start_object/","title":"nlohmann::json_sax::start_object","text":"
      virtual bool start_object(std::size_t elements) = 0;\n

      The beginning of an object was read.

      "},{"location":"api/json_sax/start_object/#parameters","title":"Parameters","text":"elements (in) number of object elements or -1 if unknown"},{"location":"api/json_sax/start_object/#return-value","title":"Return value","text":"

      Whether parsing should proceed.

      "},{"location":"api/json_sax/start_object/#notes","title":"Notes","text":"

      Binary formats may report the number of elements.

      "},{"location":"api/json_sax/start_object/#examples","title":"Examples","text":"Example

      The example below shows how the SAX interface is used.

      #include <iostream>\n#include <iomanip>\n#include <sstream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector<std::string> events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t& s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t& val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t& val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t& val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string& last_token, const json::exception& ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &sec);\n\n    // output the recorded events\n    for (auto& event : sec.events)\n    {\n        std::cout << event << \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout << \"\\nresult: \" << std::boolalpha << result << std::endl;\n}\n

      Output:

      start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634<U+000A>        }<U+000A>    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n
      "},{"location":"api/json_sax/start_object/#version-history","title":"Version history","text":"
      • Added in version 3.2.0.
      "},{"location":"api/json_sax/string/","title":"nlohmann::json_sax::string","text":"
      virtual bool string(string_t& val) = 0;\n

      A string value was read.

      "},{"location":"api/json_sax/string/#parameters","title":"Parameters","text":"val (in) string value"},{"location":"api/json_sax/string/#return-value","title":"Return value","text":"

      Whether parsing should proceed.

      "},{"location":"api/json_sax/string/#notes","title":"Notes","text":"

      It is safe to move the passed string value.

      "},{"location":"api/json_sax/string/#examples","title":"Examples","text":"Example

      The example below shows how the SAX interface is used.

      #include <iostream>\n#include <iomanip>\n#include <sstream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector<std::string> events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t& s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t& val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t& val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t& val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string& last_token, const json::exception& ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &sec);\n\n    // output the recorded events\n    for (auto& event : sec.events)\n    {\n        std::cout << event << \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout << \"\\nresult: \" << std::boolalpha << result << std::endl;\n}\n

      Output:

      start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634<U+000A>        }<U+000A>    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n
      "},{"location":"api/json_sax/string/#version-history","title":"Version history","text":"
      • Added in version 3.2.0.
      "},{"location":"api/macros/","title":"Macros","text":"

      Some aspects of the library can be configured by defining preprocessor macros before including the json.hpp header. See also the macro overview page.

      "},{"location":"api/macros/#runtime-assertions","title":"Runtime assertions","text":"
      • JSON_ASSERT(x) - control behavior of runtime assertions
      "},{"location":"api/macros/#exceptions","title":"Exceptions","text":"
      • JSON_CATCH_USER(exception)JSON_THROW_USER(exception)JSON_TRY_USER - control exceptions
      • JSON_DIAGNOSTICS - control extended diagnostics
      • JSON_NOEXCEPTION - switch off exceptions
      "},{"location":"api/macros/#language-support","title":"Language support","text":"
      • JSON_HAS_CPP_11JSON_HAS_CPP_14JSON_HAS_CPP_17JSON_HAS_CPP_20 - set supported C++ standard
      • JSON_HAS_FILESYSTEMJSON_HAS_EXPERIMENTAL_FILESYSTEM - control std::filesystem support
      • JSON_HAS_RANGES - control std::ranges support
      • JSON_HAS_THREE_WAY_COMPARISON - control 3-way comparison support
      • JSON_NO_IO - switch off functions relying on certain C++ I/O headers
      • JSON_SKIP_UNSUPPORTED_COMPILER_CHECK - do not warn about unsupported compilers
      • JSON_USE_GLOBAL_UDLS - place user-defined string literals (UDLs) into the global namespace
      "},{"location":"api/macros/#library-version","title":"Library version","text":"
      • JSON_SKIP_LIBRARY_VERSION_CHECK - skip library version check
      • NLOHMANN_JSON_VERSION_MAJORNLOHMANN_JSON_VERSION_MINORNLOHMANN_JSON_VERSION_PATCH - library version information
      "},{"location":"api/macros/#library-namespace","title":"Library namespace","text":"
      • NLOHMANN_JSON_NAMESPACE - full name of the nlohmann namespace
      • NLOHMANN_JSON_NAMESPACE_BEGINNLOHMANN_JSON_NAMESPACE_END - open and close the library namespace
      • NLOHMANN_JSON_NAMESPACE_NO_VERSION - disable the version component of the inline namespace
      "},{"location":"api/macros/#type-conversions","title":"Type conversions","text":"
      • JSON_DISABLE_ENUM_SERIALIZATION - switch off default serialization/deserialization functions for enums
      • JSON_USE_IMPLICIT_CONVERSIONS - control implicit conversions
      "},{"location":"api/macros/#comparison-behavior","title":"Comparison behavior","text":"
      • JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON - control comparison of discarded values
      "},{"location":"api/macros/#serializationdeserialization-macros","title":"Serialization/deserialization macros","text":"
      • Enum: NLOHMANN_JSON_SERIALIZE_ENUM
      • Class/struct:

        • Do you need to serialize private variables?
          • Yes? Do you only need serialization?
            • Yes? NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE
            • No? Allow deserialization of JSON values with missing values?
              • Yes? NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT
              • No? NLOHMANN_DEFINE_TYPE_INTRUSIVE
          • No? Do you only need serialization?
            • Yes? NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE
            • No? Allow deserialization of JSON values with missing values?
              • Yes? NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT
              • No? NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE
      • NLOHMANN_DEFINE_TYPE_INTRUSIVE(type, member...)NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT(type, member...) NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE(type, member...) - serialization/deserialization of types with access to private variables

      • NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(type, member...)NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT(type, member...) NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE(type, member...) - serialization/deserialization of types without access to private variables
      • NLOHMANN_JSON_SERIALIZE_ENUM(type, ...) - serialization/deserialization of enum types
      "},{"location":"api/macros/json_assert/","title":"JSON_ASSERT","text":"
      #define JSON_ASSERT(x) /* value */\n

      This macro controls which code is executed for runtime assertions of the library.

      "},{"location":"api/macros/json_assert/#parameters","title":"Parameters","text":"x (in) expression of scalar type"},{"location":"api/macros/json_assert/#default-definition","title":"Default definition","text":"

      The default value is assert(x).

      #define JSON_ASSERT(x) assert(x)\n

      Therefore, assertions can be switched off by defining NDEBUG.

      "},{"location":"api/macros/json_assert/#notes","title":"Notes","text":"
      • The library uses numerous assertions to guarantee invariants and to abort in case of otherwise undefined behavior (e.g., when calling operator[] with a missing object key on a const object). See page runtime assertions for more information.
      • Defining the macro to code that does not call std::abort may leave the library in an undefined state.
      • The macro is undefined outside the library.
      "},{"location":"api/macros/json_assert/#examples","title":"Examples","text":"Example 1: default behavior

      The following code will trigger an assertion at runtime:

      #include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    const json j = {{\"key\", \"value\"}};\n    auto v = j[\"missing\"];\n}\n

      Output:

      Assertion failed: (m_value.object->find(key) != m_value.object->end()), function operator[], file json.hpp, line 2144.\n
      Example 2: user-defined behavior

      The assertion reporting can be changed by defining JSON_ASSERT(x) differently.

      #include <cstdio>\n#include <cstdlib>\n#define JSON_ASSERT(x) if(!(x)){fprintf(stderr, \"assertion error in %s\\n\", __FUNCTION__); std::abort();}\n\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    const json j = {{\"key\", \"value\"}};\n    auto v = j[\"missing\"];\n}\n

      Output:

      assertion error in operator[]\n
      "},{"location":"api/macros/json_assert/#version-history","title":"Version history","text":"
      • Added in version 3.9.0.
      "},{"location":"api/macros/json_diagnostics/","title":"JSON_DIAGNOSTICS","text":"
      #define JSON_DIAGNOSTICS /* value */\n

      This macro enables extended diagnostics for exception messages. Possible values are 1 to enable or 0 to disable (default).

      When enabled, exception messages contain a JSON Pointer to the JSON value that triggered the exception. Note that enabling this macro increases the size of every JSON value by one pointer and adds some runtime overhead.

      "},{"location":"api/macros/json_diagnostics/#default-definition","title":"Default definition","text":"

      The default value is 0 (extended diagnostics are switched off).

      #define JSON_DIAGNOSTICS 0\n

      When the macro is not defined, the library will define it to its default value.

      "},{"location":"api/macros/json_diagnostics/#notes","title":"Notes","text":"

      ABI compatibility

      As of version 3.11.0, this macro is no longer required to be defined consistently throughout a codebase to avoid One Definition Rule (ODR) violations, as the value of this macro is encoded in the namespace, resulting in distinct symbol names.

      This allows different parts of a codebase to use different versions or configurations of this library without causing improper behavior.

      Where possible, it is still recommended that all code define this the same way for maximum interoperability.

      CMake option

      Diagnostic messages can also be controlled with the CMake option JSON_Diagnostics (OFF by default) which defines JSON_DIAGNOSTICS accordingly.

      "},{"location":"api/macros/json_diagnostics/#examples","title":"Examples","text":"Example 1: default behavior
      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    json j;\n    j[\"address\"][\"street\"] = \"Fake Street\";\n    j[\"address\"][\"housenumber\"] = \"12\";\n\n    try\n    {\n        int housenumber = j[\"address\"][\"housenumber\"];\n    }\n    catch (const json::exception& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n}\n

      Output:

      [json.exception.type_error.302] type must be number, but is string\n

      This exception can be hard to debug if storing the value \"12\" and accessing it is further apart.

      Example 2: extended diagnostic messages
      #include <iostream>\n\n# define JSON_DIAGNOSTICS 1\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    json j;\n    j[\"address\"][\"street\"] = \"Fake Street\";\n    j[\"address\"][\"housenumber\"] = \"12\";\n\n    try\n    {\n        int housenumber = j[\"address\"][\"housenumber\"];\n    }\n    catch (const json::exception& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n}\n

      Output:

      [json.exception.type_error.302] (/address/housenumber) type must be number, but is string\n

      Now the exception message contains a JSON Pointer /address/housenumber that indicates which value has the wrong type.

      "},{"location":"api/macros/json_diagnostics/#version-history","title":"Version history","text":"
      • Added in version 3.10.0.
      • As of version 3.11.0 the definition is allowed to vary between translation units.
      "},{"location":"api/macros/json_disable_enum_serialization/","title":"JSON_DISABLE_ENUM_SERIALIZATION","text":"
      #define JSON_DISABLE_ENUM_SERIALIZATION /* value */\n

      When defined to 1, default serialization and deserialization functions for enums are excluded and have to be provided by the user, for example, using NLOHMANN_JSON_SERIALIZE_ENUM (see arbitrary type conversions for more details).

      Parsing or serializing an enum will result in a compiler error.

      This works for both unscoped and scoped enums.

      "},{"location":"api/macros/json_disable_enum_serialization/#default-definition","title":"Default definition","text":"

      The default value is 0.

      #define JSON_DISABLE_ENUM_SERIALIZATION 0\n
      "},{"location":"api/macros/json_disable_enum_serialization/#notes","title":"Notes","text":"

      CMake option

      Enum serialization can also be controlled with the CMake option JSON_DisableEnumSerialization (OFF by default) which defines JSON_DISABLE_ENUM_SERIALIZATION accordingly.

      "},{"location":"api/macros/json_disable_enum_serialization/#examples","title":"Examples","text":"Example 1: Disabled behavior

      The code below forces the library not to create default serialization/deserialization functions from_json and to_json, meaning the code below does not compile.

      #define JSON_DISABLE_ENUM_SERIALIZATION 1\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nenum class Choice\n{\n    first,\n    second,\n};\n\nint main()\n{\n    // normally invokes to_json serialization function but with JSON_DISABLE_ENUM_SERIALIZATION defined, it does not\n    const json j = Choice::first; \n\n    // normally invokes from_json parse function but with JSON_DISABLE_ENUM_SERIALIZATION defined, it does not\n    Choice ch = j.template get<Choice>();\n}\n
      Example 2: Serialize enum macro

      The code below forces the library not to create default serialization/deserialization functions from_json and to_json, but uses NLOHMANN_JSON_SERIALIZE_ENUM to parse and serialize the enum.

      #define JSON_DISABLE_ENUM_SERIALIZATION 1\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nenum class Choice\n{\n    first,\n    second,\n};\n\nNLOHMANN_JSON_SERIALIZE_ENUM(Choice,\n{\n    { Choice::first, \"first\" },\n    { Choice::second, \"second\" },\n})\n\nint main()\n{\n    // uses user-defined to_json function defined by macro\n    const json j = Choice::first; \n\n    // uses user-defined from_json function defined by macro\n    Choice ch = j.template get<Choice>();\n}\n
      Example 3: User-defined serialization/deserialization functions

      The code below forces the library not to create default serialization/deserialization functions from_json and to_json, but uses user-defined functions to parse and serialize the enum.

      #define JSON_DISABLE_ENUM_SERIALIZATION 1\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nenum class Choice\n{\n    first,\n    second,\n};\n\nvoid from_json(const json& j, Choice& ch)\n{\n    auto value = j.template get<std::string>();\n    if (value == \"first\")\n    {\n        ch = Choice::first;\n    }\n    else if (value == \"second\")\n    {\n        ch = Choice::second;\n    }\n}\n\nvoid to_json(json& j, const Choice& ch)\n{\n    auto value = j.template get<std::string>();\n    if (value == \"first\")\n    {\n        ch = Choice::first;\n    }\n    else if (value == \"second\")\n    {\n        ch = Choice::second;\n    }\n}\n\nint main()\n{\n    // uses user-defined to_json function\n    const json j = Choice::first; \n\n    // uses user-defined from_json function\n    Choice ch = j.template get<Choice>();\n}\n
      "},{"location":"api/macros/json_disable_enum_serialization/#see-also","title":"See also","text":"
      • NLOHMANN_JSON_SERIALIZE_ENUM
      "},{"location":"api/macros/json_disable_enum_serialization/#version-history","title":"Version history","text":"
      • Added in version 3.11.0.
      "},{"location":"api/macros/json_has_cpp_11/","title":"JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20","text":"
      #define JSON_HAS_CPP_11\n#define JSON_HAS_CPP_14\n#define JSON_HAS_CPP_17\n#define JSON_HAS_CPP_20\n

      The library targets C++11, but also supports some features introduced in later C++ versions (e.g., std::string_view support for C++17). For these new features, the library implements some preprocessor checks to determine the C++ standard. By defining any of these symbols, the internal check is overridden and the provided C++ version is unconditionally assumed. This can be helpful for compilers that only implement parts of the standard and would be detected incorrectly.

      "},{"location":"api/macros/json_has_cpp_11/#default-definition","title":"Default definition","text":"

      The default value is detected based on preprocessor macros such as __cplusplus, _HAS_CXX17, or _MSVC_LANG.

      "},{"location":"api/macros/json_has_cpp_11/#notes","title":"Notes","text":"
      • JSON_HAS_CPP_11 is always defined.
      • All macros are undefined outside the library.
      "},{"location":"api/macros/json_has_cpp_11/#examples","title":"Examples","text":"Example

      The code below forces the library to use the C++14 standard:

      #define JSON_HAS_CPP_14 1\n#include <nlohmann/json.hpp>\n\n...\n
      "},{"location":"api/macros/json_has_cpp_11/#version-history","title":"Version history","text":"
      • Added in version 3.10.5.
      "},{"location":"api/macros/json_has_filesystem/","title":"JSON_HAS_FILESYSTEM / JSON_HAS_EXPERIMENTAL_FILESYSTEM","text":"
      #define JSON_HAS_FILESYSTEM /* value */\n#define JSON_HAS_EXPERIMENTAL_FILESYSTEM /* value */\n

      When compiling with C++17, the library provides conversions from and to std::filesystem::path. As compiler support for filesystem is limited, the library tries to detect whether <filesystem>/std::filesystem (JSON_HAS_FILESYSTEM) or <experimental/filesystem>/std::experimental::filesystem (JSON_HAS_EXPERIMENTAL_FILESYSTEM) should be used. To override the built-in check, define JSON_HAS_FILESYSTEM or JSON_HAS_EXPERIMENTAL_FILESYSTEM to 1.

      "},{"location":"api/macros/json_has_filesystem/#default-definition","title":"Default definition","text":"

      The default value is detected based on the preprocessor macros __cpp_lib_filesystem, __cpp_lib_experimental_filesystem, __has_include(<filesystem>), or __has_include(<experimental/filesystem>).

      "},{"location":"api/macros/json_has_filesystem/#notes","title":"Notes","text":"
      • Note that older compilers or older versions of libstd++ also require the library stdc++fs to be linked to for filesystem support.
      • Both macros are undefined outside the library.
      "},{"location":"api/macros/json_has_filesystem/#examples","title":"Examples","text":"Example

      The code below forces the library to use the header <experimental/filesystem>.

      #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1\n#include <nlohmann/json.hpp>\n\n...\n
      "},{"location":"api/macros/json_has_filesystem/#version-history","title":"Version history","text":"
      • Added in version 3.10.5.
      "},{"location":"api/macros/json_has_ranges/","title":"JSON_HAS_RANGES","text":"
      #define JSON_HAS_RANGES /* value */\n

      This macro indicates whether the standard library has any support for ranges. Implies support for concepts. Possible values are 1 when supported or 0 when unsupported.

      "},{"location":"api/macros/json_has_ranges/#default-definition","title":"Default definition","text":"

      The default value is detected based on the preprocessor macro __cpp_lib_ranges.

      When the macro is not defined, the library will define it to its default value.

      "},{"location":"api/macros/json_has_ranges/#examples","title":"Examples","text":"Example

      The code below forces the library to enable support for ranges:

      #define JSON_HAS_RANGES 1\n#include <nlohmann/json.hpp>\n\n...\n
      "},{"location":"api/macros/json_has_ranges/#version-history","title":"Version history","text":"
      • Added in version 3.11.0.
      "},{"location":"api/macros/json_has_static_rtti/","title":"JSON_HAS_STATIC_RTTI","text":"
      #define JSON_HAS_STATIC_RTTI /* value */\n

      This macro indicates whether the standard library has any support for RTTI (run time type information). Possible values are 1 when supported or 0 when unsupported.

      "},{"location":"api/macros/json_has_static_rtti/#default-definition","title":"Default definition","text":"

      The default value is detected based on the preprocessor macro _HAS_STATIC_RTTI.

      When the macro is not defined, the library will define it to its default value.

      "},{"location":"api/macros/json_has_static_rtti/#examples","title":"Examples","text":"Example

      The code below forces the library to enable support for libraries with RTTI dependence:

      #define JSON_HAS_STATIC_RTTI 1\n#include <nlohmann/json.hpp>\n\n...\n
      "},{"location":"api/macros/json_has_static_rtti/#version-history","title":"Version history","text":"
      • Added in version 3.11.3.
      "},{"location":"api/macros/json_has_three_way_comparison/","title":"JSON_HAS_THREE_WAY_COMPARISON","text":"
      #define JSON_HAS_THREE_WAY_COMPARISON /* value */\n

      This macro indicates whether the compiler and standard library support 3-way comparison. Possible values are 1 when supported or 0 when unsupported.

      "},{"location":"api/macros/json_has_three_way_comparison/#default-definition","title":"Default definition","text":"

      The default value is detected based on the preprocessor macros __cpp_impl_three_way_comparison and __cpp_lib_three_way_comparison.

      When the macro is not defined, the library will define it to its default value.

      "},{"location":"api/macros/json_has_three_way_comparison/#examples","title":"Examples","text":"Example

      The code below forces the library to use 3-way comparison:

      #define JSON_HAS_THREE_WAY_COMPARISON 1\n#include <nlohmann/json.hpp>\n\n...\n
      "},{"location":"api/macros/json_has_three_way_comparison/#version-history","title":"Version history","text":"
      • Added in version 3.11.0.
      "},{"location":"api/macros/json_no_io/","title":"JSON_NO_IO","text":"
      #define JSON_NO_IO\n

      When defined, headers <cstdio>, <ios>, <iosfwd>, <istream>, and <ostream> are not included and parse functions relying on these headers are excluded. This is relevant for environments where these I/O functions are disallowed for security reasons (e.g., Intel Software Guard Extensions (SGX)).

      "},{"location":"api/macros/json_no_io/#default-definition","title":"Default definition","text":"

      By default, JSON_NO_IO is not defined.

      #undef JSON_NO_IO\n
      "},{"location":"api/macros/json_no_io/#examples","title":"Examples","text":"Example

      The code below forces the library not to use the headers <cstdio>, <ios>, <iosfwd>, <istream>, and <ostream>.

      #define JSON_NO_IO 1\n#include <nlohmann/json.hpp>\n\n...\n
      "},{"location":"api/macros/json_no_io/#version-history","title":"Version history","text":"
      • Added in version 3.10.0.
      "},{"location":"api/macros/json_noexception/","title":"JSON_NOEXCEPTION","text":"
      #define JSON_NOEXCEPTION\n

      Exceptions can be switched off by defining the symbol JSON_NOEXCEPTION. When defining JSON_NOEXCEPTION, try is replaced by if (true), catch is replaced by if (false), and throw is replaced by std::abort().

      The same effect is achieved by setting the compiler flag -fno-exceptions.

      "},{"location":"api/macros/json_noexception/#default-definition","title":"Default definition","text":"

      By default, the macro is not defined.

      #undef JSON_NOEXCEPTION\n
      "},{"location":"api/macros/json_noexception/#notes","title":"Notes","text":"

      The explanatory what() string of exceptions is not available for MSVC if exceptions are disabled, see #2824.

      "},{"location":"api/macros/json_noexception/#examples","title":"Examples","text":"Example

      The code below switches off exceptions in the library.

      #define JSON_NOEXCEPTION 1\n#include <nlohmann/json.hpp>\n\n...\n
      "},{"location":"api/macros/json_noexception/#see-also","title":"See also","text":"
      • Switch off exceptions for more information how to switch off exceptions
      "},{"location":"api/macros/json_noexception/#version-history","title":"Version history","text":"

      Added in version 2.1.0.

      "},{"location":"api/macros/json_skip_library_version_check/","title":"JSON_SKIP_LIBRARY_VERSION_CHECK","text":"
      #define JSON_SKIP_LIBRARY_VERSION_CHECK\n

      When defined, the library will not create a compiler warning when a different version of the library was already included.

      "},{"location":"api/macros/json_skip_library_version_check/#default-definition","title":"Default definition","text":"

      By default, the macro is not defined.

      #undef JSON_SKIP_LIBRARY_VERSION_CHECK\n
      "},{"location":"api/macros/json_skip_library_version_check/#notes","title":"Notes","text":"

      ABI compatibility

      Mixing different library versions in the same code can be a problem as the different versions may not be ABI compatible.

      "},{"location":"api/macros/json_skip_library_version_check/#examples","title":"Examples","text":"

      Example

      The following warning will be shown in case a different version of the library was already included:

      Already included a different version of the library!\n
      "},{"location":"api/macros/json_skip_library_version_check/#version-history","title":"Version history","text":"

      Added in version 3.11.0.

      "},{"location":"api/macros/json_skip_unsupported_compiler_check/","title":"JSON_SKIP_UNSUPPORTED_COMPILER_CHECK","text":"
      #define JSON_SKIP_UNSUPPORTED_COMPILER_CHECK\n

      When defined, the library will not create a compile error when a known unsupported compiler is detected. This allows to use the library with compilers that do not fully support C++11 and may only work if unsupported features are not used.

      "},{"location":"api/macros/json_skip_unsupported_compiler_check/#default-definition","title":"Default definition","text":"

      By default, the macro is not defined.

      #undef JSON_SKIP_UNSUPPORTED_COMPILER_CHECK\n
      "},{"location":"api/macros/json_skip_unsupported_compiler_check/#examples","title":"Examples","text":"Example

      The code below switches off the check whether the compiler is supported.

      #define JSON_SKIP_UNSUPPORTED_COMPILER_CHECK 1\n#include <nlohmann/json.hpp>\n\n...\n
      "},{"location":"api/macros/json_skip_unsupported_compiler_check/#version-history","title":"Version history","text":"

      Added in version 3.2.0.

      "},{"location":"api/macros/json_throw_user/","title":"JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER","text":"
      // (1)\n#define JSON_CATCH_USER(exception) /* value */\n// (2)\n#define JSON_THROW_USER(exception) /* value */\n// (3)\n#define JSON_TRY_USER /* value */\n

      Controls how exceptions are handled by the library.

      1. This macro overrides catch calls inside the library. The argument is the type of the exception to catch. As of version 3.8.0, the library only catches std::out_of_range exceptions internally to rethrow them as json::out_of_range exceptions. The macro is always followed by a scope.
      2. This macro overrides throw calls inside the library. The argument is the exception to be thrown. Note that JSON_THROW_USER should leave the current scope (e.g., by throwing or aborting), as continuing after it may yield undefined behavior.
      3. This macro overrides try calls inside the library. It has no arguments and is always followed by a scope.
      "},{"location":"api/macros/json_throw_user/#parameters","title":"Parameters","text":"exception (in) an exception type"},{"location":"api/macros/json_throw_user/#default-definition","title":"Default definition","text":"

      By default, the macros map to their respective C++ keywords:

      #define JSON_CATCH_USER(exception) catch(exception)\n#define JSON_THROW_USER(exception) throw exception\n#define JSON_TRY_USER              try\n

      When exceptions are switched off, the try block is executed unconditionally, and throwing exceptions is replaced by calling std::abort to make reaching the throw branch abort the process.

      #define JSON_THROW_USER(exception) std::abort()\n#define JSON_TRY_USER              if (true)\n#define JSON_CATCH_USER(exception) if (false)\n
      "},{"location":"api/macros/json_throw_user/#examples","title":"Examples","text":"Example

      The code below switches off exceptions and creates a log entry with a detailed error message in case of errors.

      #include <iostream>\n\n#define JSON_TRY_USER if(true)\n#define JSON_CATCH_USER(exception) if(false)\n#define JSON_THROW_USER(exception)                           \\\n    {std::clog << \"Error in \" << __FILE__ << \":\" << __LINE__ \\\n               << \" (function \" << __FUNCTION__ << \") - \"    \\\n               << (exception).what() << std::endl;           \\\n     std::abort();}\n\n#include <nlohmann/json.hpp>\n
      "},{"location":"api/macros/json_throw_user/#see-also","title":"See also","text":"
      • Switch off exceptions for more information how to switch off exceptions
      • JSON_NOEXCEPTION - switch off exceptions
      "},{"location":"api/macros/json_throw_user/#version-history","title":"Version history","text":"
      • Added in version 3.1.0.
      "},{"location":"api/macros/json_use_global_udls/","title":"JSON_USE_GLOBAL_UDLS","text":"
      #define JSON_USE_GLOBAL_UDLS /* value */\n

      When defined to 1, the user-defined string literals (UDLs) are placed into the global namespace instead of nlohmann::literals::json_literals.

      "},{"location":"api/macros/json_use_global_udls/#default-definition","title":"Default definition","text":"

      The default value is 1.

      #define JSON_USE_GLOBAL_UDLS 1\n

      When the macro is not defined, the library will define it to its default value.

      "},{"location":"api/macros/json_use_global_udls/#notes","title":"Notes","text":"

      Future behavior change

      The user-defined string literals will be removed from the global namespace in the next major release of the library.

      To prepare existing code, define JSON_USE_GLOBAL_UDLS to 0 and bring the string literals into scope where needed. Refer to any of the string literals for details.

      CMake option

      The placement of user-defined string literals can also be controlled with the CMake option JSON_GlobalUDLs (ON by default) which defines JSON_USE_GLOBAL_UDLS accordingly.

      "},{"location":"api/macros/json_use_global_udls/#examples","title":"Examples","text":"Example 1: Default behavior

      The code below shows the default behavior using the _json UDL.

      #include <nlohmann/json.hpp>\n\n#include <iostream>\n\nint main()\n{\n    auto j = \"42\"_json;\n\n    std::cout << j << std::endl;\n}\n

      Output:

      42\n
      Example 2: Namespaced UDLs

      The code below shows how UDLs need to be brought into scope before using _json when JSON_USE_GLOBAL_UDLS is defined to 0.

      #define JSON_USE_GLOBAL_UDLS 0\n#include <nlohmann/json.hpp>\n\n#include <iostream>\n\nint main()\n{\n    // auto j = \"42\"_json; // This line would fail to compile,\n                           // because the UDLs are not in the global namespace\n\n    // Bring the UDLs into scope\n    using namespace nlohmann::json_literals;\n\n    auto j = \"42\"_json;\n\n    std::cout << j << std::endl;\n}\n

      Output:

      42\n
      "},{"location":"api/macros/json_use_global_udls/#see-also","title":"See also","text":"
      • operator\"\"_json
      • operator\"\"_json_pointer
      "},{"location":"api/macros/json_use_global_udls/#version-history","title":"Version history","text":"
      • Added in version 3.11.0.
      "},{"location":"api/macros/json_use_implicit_conversions/","title":"JSON_USE_IMPLICIT_CONVERSIONS","text":"
      #define JSON_USE_IMPLICIT_CONVERSIONS /* value */\n

      When defined to 0, implicit conversions are switched off. By default, implicit conversions are switched on. The value directly affects operator ValueType.

      "},{"location":"api/macros/json_use_implicit_conversions/#default-definition","title":"Default definition","text":"

      By default, implicit conversions are enabled.

      #define JSON_USE_IMPLICIT_CONVERSIONS 1\n
      "},{"location":"api/macros/json_use_implicit_conversions/#notes","title":"Notes","text":"

      Future behavior change

      Implicit conversions will be switched off by default in the next major release of the library.

      You can prepare existing code by already defining JSON_USE_IMPLICIT_CONVERSIONS to 0 and replace any implicit conversions with calls to get.

      CMake option

      Implicit conversions can also be controlled with the CMake option JSON_ImplicitConversions (ON by default) which defines JSON_USE_IMPLICIT_CONVERSIONS accordingly.

      "},{"location":"api/macros/json_use_implicit_conversions/#examples","title":"Examples","text":"Example

      This is an example for an implicit conversion:

      json j = \"Hello, world!\";\nstd::string s = j;\n

      When JSON_USE_IMPLICIT_CONVERSIONS is defined to 0, the code above does no longer compile. Instead, it must be written like this:

      json j = \"Hello, world!\";\nauto s = j.template get<std::string>();\n
      "},{"location":"api/macros/json_use_implicit_conversions/#see-also","title":"See also","text":"
      • operator ValueType - get a value (implicit)
      • get - get a value (explicit)
      "},{"location":"api/macros/json_use_implicit_conversions/#version-history","title":"Version history","text":"
      • Added in version 3.9.0.
      "},{"location":"api/macros/json_use_legacy_discarded_value_comparison/","title":"JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON","text":"
      #define JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON /* value */\n

      This macro enables the (incorrect) legacy comparison behavior of discarded JSON values. Possible values are 1 to enable or 0 to disable (default).

      When enabled, comparisons involving at least one discarded JSON value yield results as follows:

      Operator Result == false != true < false <= true >= true > false

      Otherwise, comparisons involving at least one discarded JSON value always yield false.

      "},{"location":"api/macros/json_use_legacy_discarded_value_comparison/#default-definition","title":"Default definition","text":"

      The default value is 0.

      #define JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON 0\n

      When the macro is not defined, the library will define it to its default value.

      "},{"location":"api/macros/json_use_legacy_discarded_value_comparison/#notes","title":"Notes","text":"

      Inconsistent behavior in C++20 and beyond

      When targeting C++20 or above, enabling the legacy comparison behavior is strongly discouraged.

      • The 3-way comparison operator (<=>) will always give the correct result (std::partial_ordering::unordered) regardless of the value of JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON.
      • Overloads for the equality and relational operators emulate the legacy behavior.

      Code outside your control may use either 3-way comparison or the equality and relational operators, resulting in inconsistent and unpredictable behavior.

      See operator<=> for more information on 3-way comparison.

      Deprecation

      The legacy comparison behavior is deprecated and may be removed in a future major version release.

      New code should not depend on it and existing code should try to remove or rewrite expressions relying on it.

      CMake option

      Legacy comparison can also be controlled with the CMake option JSON_LegacyDiscardedValueComparison (OFF by default) which defines JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON accordingly.

      "},{"location":"api/macros/json_use_legacy_discarded_value_comparison/#examples","title":"Examples","text":"Example

      The code below switches on the legacy discarded value comparison behavior in the library.

      #define JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON 1\n#include <nlohmann/json.hpp>\n\n...\n
      "},{"location":"api/macros/json_use_legacy_discarded_value_comparison/#version-history","title":"Version history","text":"
      • Added in version 3.11.0.
      "},{"location":"api/macros/nlohmann_define_derived_type/","title":"NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE","text":"NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT
      #define NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE(type, base_type, member...)                  // (1)\n#define NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT(type, base_type, member...)     // (2)\n\n#define NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE(type, base_type, member...)              // (3)\n#define NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT(type, base_type, member...) // (4)\n

      These macros can be used to simplify the serialization/deserialization of derived types if you want to use a JSON object as serialization and want to use the member variable names as object keys in that object.

      • Macros 1 and 2 are to be defined inside the class/struct to create code for. Like NLOHMANN_DEFINE_TYPE_INTRUSIVE, they can access private members.
      • Macros 3 and 4 are to be defined outside the class/struct to create code for, but inside its namespace. Like NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, they cannot access private members.

      The first parameter is the name of the derived class/struct, the second parameter is the name of the base class/struct and all remaining parameters name the members. The base type must be already serializable/deserializable.

      • Macros 1 and 3 will use at during deserialization and will throw out_of_range.403 if a key is missing in the JSON object.
      • Macros 2 and 4 will use value during deserialization and fall back to the default value for the respective type of the member variable if a key in the JSON object is missing. The generated from_json() function default constructs an object and uses its values as the defaults when calling the value function.
      "},{"location":"api/macros/nlohmann_define_derived_type/#parameters","title":"Parameters","text":"type (in) name of the type (class, struct) to serialize/deserialize base_type (in) name of the base type (class, struct) type is derived from member (in) name of the member variable to serialize/deserialize; up to 64 members can be given as comma-separated list"},{"location":"api/macros/nlohmann_define_derived_type/#default-definition","title":"Default definition","text":"

      Macros 1 and 2 add two friend functions to the class which take care of the serialization and deserialization:

      friend void to_json(nlohmann::json&, const type&);\nfriend void from_json(const nlohmann::json&, type&);\n

      Macros 3 and 4 add two functions to the namespace which take care of the serialization and deserialization:

      void to_json(nlohmann::json&, const type&);\nvoid from_json(const nlohmann::json&, type&);\n

      In both cases they call the to_json/from_json functions of the base type before serializing/deserializing the members of the derived type:

      class A { /* ... */ };\nclass B : public A { /* ... */ };\n\nvoid to_json(nlohmann::json& j, const B& b) {\n    nlohmann::to_json(j, static_cast<const A&>(b));\n    // ...\n}\n\nvoid from_json(const nlohmann::json& j, B& b) {\n    nlohmann::from_json(j, static_cast<A&>(b));\n    // ...\n}\n
      "},{"location":"api/macros/nlohmann_define_derived_type/#notes","title":"Notes","text":"

      Prerequisites

      • Macros 1 and 2 have the same prerequisites of NLOHMANN_DEFINE_TYPE_INTRUSIVE.
      • Macros 3 and 3 have the same prerequisites of NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE.
      • Serialization/deserialization of base types must be defined.

      Implementation limits

      • See Implementation limits for NLOHMANN_DEFINE_TYPE_INTRUSIVE and NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE.
      "},{"location":"api/macros/nlohmann_define_derived_type/#examples","title":"Examples","text":"

      Example of NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE usage:

      class A {\n  double Aa;\n  double Ab;\n  NLOHMANN_DEFINE_TYPE_INTRUSIVE(A, Aa, Ab)\n};\n\nclass B : public A {\n  int Ba;\n  int Bb;\n  NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE(B, A, Ba, Bb)\n};\n
      "},{"location":"api/macros/nlohmann_define_derived_type/#see-also","title":"See also","text":"
      • NLOHMANN_DEFINE_TYPE_INTRUSIVE / NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT for similar macros that can be defined inside a non-derived type.
      • NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE / NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT for a similar macros that can be defined outside a non-derived type.
      • Arbitrary Type Conversions for an overview.
      "},{"location":"api/macros/nlohmann_define_derived_type/#version-history","title":"Version history","text":"
      1. Added in version 3.11.x.
      "},{"location":"api/macros/nlohmann_define_type_intrusive/","title":"NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE","text":"
      #define NLOHMANN_DEFINE_TYPE_INTRUSIVE(type, member...)              // (1)\n#define NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT(type, member...) // (2)\n#define NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE(type, member...) // (3)\n

      These macros can be used to simplify the serialization/deserialization of types if you want to use a JSON object as serialization and want to use the member variable names as object keys in that object. The macro is to be defined inside the class/struct to create code for. Unlike NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, it can access private members. The first parameter is the name of the class/struct, and all remaining parameters name the members.

      1. Will use at during deserialization and will throw out_of_range.403 if a key is missing in the JSON object.
      2. Will use value during deserialization and fall back to the default value for the respective type of the member variable if a key in the JSON object is missing. The generated from_json() function default constructs an object and uses its values as the defaults when calling the value function.
      3. Only defines the serialization. Useful in cases when the type does not have a default constructor and only serialization in required.
      "},{"location":"api/macros/nlohmann_define_type_intrusive/#parameters","title":"Parameters","text":"type (in) name of the type (class, struct) to serialize/deserialize member (in) name of the member variable to serialize/deserialize; up to 64 members can be given as comma-separated list"},{"location":"api/macros/nlohmann_define_type_intrusive/#default-definition","title":"Default definition","text":"

      The macros add two friend functions to the class which take care of the serialization and deserialization:

      friend void to_json(nlohmann::json&, const type&);\nfriend void from_json(const nlohmann::json&, type&); // except (3)\n

      See examples below for the concrete generated code.

      "},{"location":"api/macros/nlohmann_define_type_intrusive/#notes","title":"Notes","text":"

      Prerequisites

      1. The type type must be default constructible (except (3)). See How can I use get() for non-default constructible/non-copyable types? for how to overcome this limitation.
      2. The macro must be used inside the type (class/struct).

      Implementation limits

      • The current implementation is limited to at most 64 member variables. If you want to serialize/deserialize types with more than 64 member variables, you need to define the to_json/from_json functions manually.
      • The macros only work for the nlohmann::json type; other specializations such as nlohmann::ordered_json are currently unsupported.
      "},{"location":"api/macros/nlohmann_define_type_intrusive/#examples","title":"Examples","text":"Example (1): NLOHMANN_DEFINE_TYPE_INTRUSIVE

      Consider the following complete example:

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nclass person\n{\n  private:\n    std::string name = \"John Doe\";\n    std::string address = \"123 Fake St\";\n    int age = -1;\n\n  public:\n    person() = default;\n    person(std::string name_, std::string address_, int age_)\n        : name(std::move(name_)), address(std::move(address_)), age(age_)\n    {}\n\n    NLOHMANN_DEFINE_TYPE_INTRUSIVE(person, name, address, age)\n};\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -> json\n    json j = p;\n    std::cout << \"serialization: \" << j << std::endl;\n\n    // deserialization: json -> person\n    json j2 = R\"({\"address\": \"742 Evergreen Terrace\", \"age\": 40, \"name\": \"Homer Simpson\"})\"_json;\n    auto p2 = j2.template get<ns::person>();\n\n    // incomplete deserialization:\n    json j3 = R\"({\"address\": \"742 Evergreen Terrace\", \"name\": \"Maggie Simpson\"})\"_json;\n    try\n    {\n        auto p3 = j3.template get<ns::person>();\n    }\n    catch (const json::exception& e)\n    {\n        std::cout << \"deserialization failed: \" << e.what() << std::endl;\n    }\n}\n

      Output:

      serialization: {\"address\":\"744 Evergreen Terrace\",\"age\":60,\"name\":\"Ned Flanders\"}\ndeserialization failed: [json.exception.out_of_range.403] key 'age' not found\n

      Notes:

      • ns::person is default-constructible. This is a requirement for using the macro.
      • ns::person has private member variables. This makes NLOHMANN_DEFINE_TYPE_INTRUSIVE applicable, but not NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE.
      • The macro NLOHMANN_DEFINE_TYPE_INTRUSIVE is used inside the class.
      • A missing key \"age\" in the deserialization yields an exception. To fall back to the default value, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT can be used.

      The macro is equivalent to:

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nclass person\n{\n  private:\n    std::string name = \"John Doe\";\n    std::string address = \"123 Fake St\";\n    int age = -1;\n\n  public:\n    person() = default;\n    person(std::string name_, std::string address_, int age_)\n        : name(std::move(name_)), address(std::move(address_)), age(age_)\n    {}\n\n    friend void to_json(nlohmann::json& nlohmann_json_j, const person& nlohmann_json_t)\n    {\n        nlohmann_json_j[\"name\"] = nlohmann_json_t.name;\n        nlohmann_json_j[\"address\"] = nlohmann_json_t.address;\n        nlohmann_json_j[\"age\"] = nlohmann_json_t.age;\n    }\n\n    friend void from_json(const nlohmann::json& nlohmann_json_j, person& nlohmann_json_t)\n    {\n        nlohmann_json_t.name = nlohmann_json_j.at(\"name\");\n        nlohmann_json_t.address = nlohmann_json_j.at(\"address\");\n        nlohmann_json_t.age = nlohmann_json_j.at(\"age\");\n    }\n};\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -> json\n    json j = p;\n    std::cout << \"serialization: \" << j << std::endl;\n\n    // deserialization: json -> person\n    json j2 = R\"({\"address\": \"742 Evergreen Terrace\", \"age\": 40, \"name\": \"Homer Simpson\"})\"_json;\n    auto p2 = j2.template get<ns::person>();\n\n    // incomplete deserialization:\n    json j3 = R\"({\"address\": \"742 Evergreen Terrace\", \"name\": \"Maggie Simpson\"})\"_json;\n    try\n    {\n        auto p3 = j3.template get<ns::person>();\n    }\n    catch (const json::exception& e)\n    {\n        std::cout << \"deserialization failed: \" << e.what() << std::endl;\n    }\n}\n
      Example (2): NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT

      Consider the following complete example:

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nclass person\n{\n  private:\n    std::string name = \"John Doe\";\n    std::string address = \"123 Fake St\";\n    int age = -1;\n\n  public:\n    person() = default;\n    person(std::string name_, std::string address_, int age_)\n        : name(std::move(name_)), address(std::move(address_)), age(age_)\n    {}\n\n    NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT(person, name, address, age)\n};\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -> json\n    json j = p;\n    std::cout << \"serialization: \" << j << std::endl;\n\n    // deserialization: json -> person\n    json j2 = R\"({\"address\": \"742 Evergreen Terrace\", \"age\": 40, \"name\": \"Homer Simpson\"})\"_json;\n    auto p2 = j2.template get<ns::person>();\n\n    // incomplete deserialization:\n    json j3 = R\"({\"address\": \"742 Evergreen Terrace\", \"name\": \"Maggie Simpson\"})\"_json;\n    auto p3 = j3.template get<ns::person>();\n    std::cout << \"roundtrip: \" << json(p3) << std::endl;\n}\n

      Output:

      serialization: {\"address\":\"744 Evergreen Terrace\",\"age\":60,\"name\":\"Ned Flanders\"}\nroundtrip: {\"address\":\"742 Evergreen Terrace\",\"age\":-1,\"name\":\"Maggie Simpson\"}\n

      Notes:

      • ns::person is default-constructible. This is a requirement for using the macro.
      • ns::person has private member variables. This makes NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT applicable, but not NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT.
      • The macro NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT is used inside the class.
      • A missing key \"age\" in the deserialization does not yield an exception. Instead, the default value -1 is used.

      The macro is equivalent to:

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nclass person\n{\n  private:\n    std::string name = \"John Doe\";\n    std::string address = \"123 Fake St\";\n    int age = -1;\n\n  public:\n    person() = default;\n    person(std::string name_, std::string address_, int age_)\n        : name(std::move(name_)), address(std::move(address_)), age(age_)\n    {}\n\n    friend void to_json(nlohmann::json& nlohmann_json_j, const person& nlohmann_json_t)\n    {\n        nlohmann_json_j[\"name\"] = nlohmann_json_t.name;\n        nlohmann_json_j[\"address\"] = nlohmann_json_t.address;\n        nlohmann_json_j[\"age\"] = nlohmann_json_t.age;\n    }\n\n    friend void from_json(const nlohmann::json& nlohmann_json_j, person& nlohmann_json_t)\n    {\n        person nlohmann_json_default_obj;\n        nlohmann_json_t.name = nlohmann_json_j.value(\"name\", nlohmann_json_default_obj.name);\n        nlohmann_json_t.address = nlohmann_json_j.value(\"address\", nlohmann_json_default_obj.address);\n        nlohmann_json_t.age = nlohmann_json_j.value(\"age\", nlohmann_json_default_obj.age);\n    }\n};\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -> json\n    json j = p;\n    std::cout << \"serialization: \" << j << std::endl;\n\n    // deserialization: json -> person\n    json j2 = R\"({\"address\": \"742 Evergreen Terrace\", \"age\": 40, \"name\": \"Homer Simpson\"})\"_json;\n    auto p2 = j2.template get<ns::person>();\n\n    // incomplete deserialization:\n    json j3 = R\"({\"address\": \"742 Evergreen Terrace\", \"name\": \"Maggie Simpson\"})\"_json;\n    auto p3 = j3.template get<ns::person>();\n    std::cout << \"roundtrip: \" << json(p3) << std::endl;\n}\n

      Note how a default-initialized person object is used in the from_json to fill missing values.

      Example (3): NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE

      Consider the following complete example:

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nclass person\n{\n  private:\n    std::string name = \"John Doe\";\n    std::string address = \"123 Fake St\";\n    int age = -1;\n\n  public:\n    // No default constructor\n    person(std::string name_, std::string address_, int age_)\n        : name(std::move(name_)), address(std::move(address_)), age(age_)\n    {}\n\n    NLOHMANN_DEFINE_TYPE_INTRUSIVE(person, name, address, age)\n};\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -> json\n    json j = p;\n    std::cout << \"serialization: \" << j << std::endl;\n}\n

      Output:

      serialization: {\"address\":\"744 Evergreen Terrace\",\"age\":60,\"name\":\"Ned Flanders\"}\n

      Notes:

      • ns::person is non-default-constructible. This allows this macro to be used instead of NLOHMANN_DEFINE_TYPE_INTRUSIVE and NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT.
      • ns::person has private member variables. This makes NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE applicable, but not NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE.
      • The macro NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE is used inside the class.

      The macro is equivalent to:

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nclass person\n{\n  private:\n    std::string name = \"John Doe\";\n    std::string address = \"123 Fake St\";\n    int age = -1;\n\n  public:\n    // No default constructor\n    person(std::string name_, std::string address_, int age_)\n        : name(std::move(name_)), address(std::move(address_)), age(age_)\n    {}\n\n    friend void to_json(nlohmann::json& nlohmann_json_j, const person& nlohmann_json_t)\n    {\n        nlohmann_json_j[\"name\"] = nlohmann_json_t.name;\n        nlohmann_json_j[\"address\"] = nlohmann_json_t.address;\n        nlohmann_json_j[\"age\"] = nlohmann_json_t.age;\n    }\n};\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -> json\n    json j = p;\n    std::cout << \"serialization: \" << j << std::endl;\n}\n
      "},{"location":"api/macros/nlohmann_define_type_intrusive/#see-also","title":"See also","text":"
      • NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE{_WITH_DEFAULT, _ONLY_SERIALIZE} for a similar macro that can be defined outside the type.
      • Arbitrary Type Conversions for an overview.
      "},{"location":"api/macros/nlohmann_define_type_intrusive/#version-history","title":"Version history","text":"
      1. Added in version 3.9.0.
      2. Added in version 3.11.0.
      3. Added in version TODO.
      "},{"location":"api/macros/nlohmann_define_type_non_intrusive/","title":"NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE","text":"
      #define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(type, member...)              // (1)\n#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT(type, member...) // (2)\n#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE(type, member...) // (3)\n

      These macros can be used to simplify the serialization/deserialization of types if you want to use a JSON object as serialization and want to use the member variable names as object keys in that object. The macro is to be defined outside the class/struct to create code for, but inside its namespace. Unlike NLOHMANN_DEFINE_TYPE_INTRUSIVE, it cannot access private members. The first parameter is the name of the class/struct, and all remaining parameters name the members.

      1. Will use at during deserialization and will throw out_of_range.403 if a key is missing in the JSON object.
      2. Will use value during deserialization and fall back to the default value for the respective type of the member variable if a key in the JSON object is missing. The generated from_json() function default constructs an object and uses its values as the defaults when calling the value function.
      3. Only defines the serialization. Useful in cases when the type does not have a default constructor and only serialization in required.
      "},{"location":"api/macros/nlohmann_define_type_non_intrusive/#parameters","title":"Parameters","text":"type (in) name of the type (class, struct) to serialize/deserialize member (in) name of the (public) member variable to serialize/deserialize; up to 64 members can be given as comma-separated list"},{"location":"api/macros/nlohmann_define_type_non_intrusive/#default-definition","title":"Default definition","text":"

      The macros add two functions to the namespace which take care of the serialization and deserialization:

      void to_json(nlohmann::json&, const type&);\nvoid from_json(const nlohmann::json&, type&); // except (3)\n

      See examples below for the concrete generated code.

      "},{"location":"api/macros/nlohmann_define_type_non_intrusive/#notes","title":"Notes","text":"

      Prerequisites

      1. The type type must be default constructible (except (3). See How can I use get() for non-default constructible/non-copyable types? for how to overcome this limitation.
      2. The macro must be used outside the type (class/struct).
      3. The passed members must be public.

      Implementation limits

      • The current implementation is limited to at most 64 member variables. If you want to serialize/deserialize types with more than 64 member variables, you need to define the to_json/from_json functions manually.
      • The macros only work for the nlohmann::json type; other specializations such as nlohmann::ordered_json are currently unsupported.
      "},{"location":"api/macros/nlohmann_define_type_non_intrusive/#examples","title":"Examples","text":"Example (1): NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE

      Consider the following complete example:

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nstruct person\n{\n    std::string name;\n    std::string address;\n    int age;\n};\n\nNLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(person, name, address, age)\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -> json\n    json j = p;\n    std::cout << \"serialization: \" << j << std::endl;\n\n    // deserialization: json -> person\n    json j2 = R\"({\"address\": \"742 Evergreen Terrace\", \"age\": 40, \"name\": \"Homer Simpson\"})\"_json;\n    auto p2 = j2.template get<ns::person>();\n\n    // incomplete deserialization:\n    json j3 = R\"({\"address\": \"742 Evergreen Terrace\", \"name\": \"Maggie Simpson\"})\"_json;\n    try\n    {\n        auto p3 = j3.template get<ns::person>();\n    }\n    catch (const json::exception& e)\n    {\n        std::cout << \"deserialization failed: \" << e.what() << std::endl;\n    }\n}\n

      Output:

      serialization: {\"address\":\"744 Evergreen Terrace\",\"age\":60,\"name\":\"Ned Flanders\"}\ndeserialization failed: [json.exception.out_of_range.403] key 'age' not found\n

      Notes:

      • ns::person is default-constructible. This is a requirement for using the macro.
      • ns::person has only public member variables. This makes NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE applicable.
      • The macro NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE is used outside the class, but inside its namespace ns.
      • A missing key \"age\" in the deserialization yields an exception. To fall back to the default value, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT can be used.

      The macro is equivalent to:

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nstruct person\n{\n    std::string name;\n    std::string address;\n    int age;\n};\n\nvoid to_json(nlohmann::json& nlohmann_json_j, const person& nlohmann_json_t)\n{\n    nlohmann_json_j[\"name\"] = nlohmann_json_t.name;\n    nlohmann_json_j[\"address\"] = nlohmann_json_t.address;\n    nlohmann_json_j[\"age\"] = nlohmann_json_t.age;\n}\n\nvoid from_json(const nlohmann::json& nlohmann_json_j, person& nlohmann_json_t)\n{\n    nlohmann_json_t.name = nlohmann_json_j.at(\"name\");\n    nlohmann_json_t.address = nlohmann_json_j.at(\"address\");\n    nlohmann_json_t.age = nlohmann_json_j.at(\"age\");\n}\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -> json\n    json j = p;\n    std::cout << \"serialization: \" << j << std::endl;\n\n    // deserialization: json -> person\n    json j2 = R\"({\"address\": \"742 Evergreen Terrace\", \"age\": 40, \"name\": \"Homer Simpson\"})\"_json;\n    auto p2 = j2.template get<ns::person>();\n\n    // incomplete deserialization:\n    json j3 = R\"({\"address\": \"742 Evergreen Terrace\", \"name\": \"Maggie Simpson\"})\"_json;\n    try\n    {\n        auto p3 = j3.template get<ns::person>();\n    }\n    catch (const json::exception& e)\n    {\n        std::cout << \"deserialization failed: \" << e.what() << std::endl;\n    }\n}\n
      Example (2): NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT

      Consider the following complete example:

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nstruct person\n{\n    std::string name = \"John Doe\";\n    std::string address = \"123 Fake St\";\n    int age = -1;\n\n    person() = default;\n    person(std::string name_, std::string address_, int age_)\n        : name(std::move(name_)), address(std::move(address_)), age(age_)\n    {}\n};\n\nNLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT(person, name, address, age)\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -> json\n    json j = p;\n    std::cout << \"serialization: \" << j << std::endl;\n\n    // deserialization: json -> person\n    json j2 = R\"({\"address\": \"742 Evergreen Terrace\", \"age\": 40, \"name\": \"Homer Simpson\"})\"_json;\n    auto p2 = j2.template get<ns::person>();\n\n    // incomplete deserialization:\n    json j3 = R\"({\"address\": \"742 Evergreen Terrace\", \"name\": \"Maggie Simpson\"})\"_json;\n    auto p3 = j3.template get<ns::person>();\n    std::cout << \"roundtrip: \" << json(p3) << std::endl;\n}\n

      Output:

      serialization: {\"address\":\"744 Evergreen Terrace\",\"age\":60,\"name\":\"Ned Flanders\"}\nroundtrip: {\"address\":\"742 Evergreen Terrace\",\"age\":-1,\"name\":\"Maggie Simpson\"}\n

      Notes:

      • ns::person is default-constructible. This is a requirement for using the macro.
      • ns::person has only public member variables. This makes NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT applicable.
      • The macro NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT is used outside the class, but inside its namespace ns.
      • A missing key \"age\" in the deserialization does not yield an exception. Instead, the default value -1 is used.

      The macro is equivalent to:

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nstruct person\n{\n    std::string name = \"John Doe\";\n    std::string address = \"123 Fake St\";\n    int age = -1;\n\n    person() = default;\n    person(std::string name_, std::string address_, int age_)\n        : name(std::move(name_)), address(std::move(address_)), age(age_)\n    {}\n};\n\nvoid to_json(nlohmann::json& nlohmann_json_j, const person& nlohmann_json_t)\n{\n    nlohmann_json_j[\"name\"] = nlohmann_json_t.name;\n    nlohmann_json_j[\"address\"] = nlohmann_json_t.address;\n    nlohmann_json_j[\"age\"] = nlohmann_json_t.age;\n}\n\nvoid from_json(const nlohmann::json& nlohmann_json_j, person& nlohmann_json_t)\n{\n    person nlohmann_json_default_obj;\n    nlohmann_json_t.name = nlohmann_json_j.value(\"name\", nlohmann_json_default_obj.name);\n    nlohmann_json_t.address = nlohmann_json_j.value(\"address\", nlohmann_json_default_obj.address);\n    nlohmann_json_t.age = nlohmann_json_j.value(\"age\", nlohmann_json_default_obj.age);\n}\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -> json\n    json j = p;\n    std::cout << \"serialization: \" << j << std::endl;\n\n    // deserialization: json -> person\n    json j2 = R\"({\"address\": \"742 Evergreen Terrace\", \"age\": 40, \"name\": \"Homer Simpson\"})\"_json;\n    auto p2 = j2.template get<ns::person>();\n\n    // incomplete deserialization:\n    json j3 = R\"({\"address\": \"742 Evergreen Terrace\", \"name\": \"Maggie Simpson\"})\"_json;\n    auto p3 = j3.template get<ns::person>();\n    std::cout << \"roundtrip: \" << json(p3) << std::endl;\n}\n

      Note how a default-initialized person object is used in the from_json to fill missing values.

      Example (3): NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE

      Consider the following complete example:

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nstruct person\n{\n    std::string name;\n    std::string address;\n    int age;\n};\n\nNLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE(person, name, address, age)\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -> json\n    json j = p;\n    std::cout << \"serialization: \" << j << std::endl;\n}\n

      Output:

      serialization: {\"address\":\"744 Evergreen Terrace\",\"age\":60,\"name\":\"Ned Flanders\"}\n

      Notes:

      • ns::person is non-default-constructible. This allows this macro to be used instead of NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE and NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT.
      • ns::person has only public member variables. This makes NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE applicable.
      • The macro NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE is used outside the class, but inside its namespace ns.

      The macro is equivalent to:

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nstruct person\n{\n    std::string name;\n    std::string address;\n    int age;\n};\n\nvoid to_json(nlohmann::json& nlohmann_json_j, const person& nlohmann_json_t)\n{\n    nlohmann_json_j[\"name\"] = nlohmann_json_t.name;\n    nlohmann_json_j[\"address\"] = nlohmann_json_t.address;\n    nlohmann_json_j[\"age\"] = nlohmann_json_t.age;\n}\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -> json\n    json j = p;\n    std::cout << \"serialization: \" << j << std::endl;\n}\n
      "},{"location":"api/macros/nlohmann_define_type_non_intrusive/#see-also","title":"See also","text":"
      • NLOHMANN_DEFINE_TYPE_INTRUSIVE{_WITH_DEFAULT, _ONLY_SERIALIZE} for a similar macro that can be defined inside the type.
      • Arbitrary Type Conversions for an overview.
      "},{"location":"api/macros/nlohmann_define_type_non_intrusive/#version-history","title":"Version history","text":"
      1. Added in version 3.9.0.
      2. Added in version 3.11.0.
      3. Added in version TODO.
      "},{"location":"api/macros/nlohmann_json_namespace/","title":"NLOHMANN_JSON_NAMESPACE","text":"
      #define NLOHMANN_JSON_NAMESPACE /* value */\n

      This macro evaluates to the full name of the nlohmann namespace.

      "},{"location":"api/macros/nlohmann_json_namespace/#default-definition","title":"Default definition","text":"

      The default value consists of the root namespace (nlohmann) and an inline ABI namespace. See nlohmann Namespace for details.

      When the macro is not defined, the library will define it to its default value. Overriding this value has no effect on the library.

      "},{"location":"api/macros/nlohmann_json_namespace/#examples","title":"Examples","text":"Example

      The example shows how to use NLOHMANN_JSON_NAMESPACE instead of just nlohmann, as well as how to output the value of NLOHMANN_JSON_NAMESPACE.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\n// possible use case: use NLOHMANN_JSON_NAMESPACE instead of nlohmann\nusing json = NLOHMANN_JSON_NAMESPACE::json;\n\n// macro needed to output the NLOHMANN_JSON_NAMESPACE as string literal\n#define Q(x) #x\n#define QUOTE(x) Q(x)\n\nint main()\n{\n    std::cout << QUOTE(NLOHMANN_JSON_NAMESPACE) << std::endl;\n}\n

      Output:

      nlohmann::json_abi_v3_11_3\n
      "},{"location":"api/macros/nlohmann_json_namespace/#see-also","title":"See also","text":"
      • NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END
      • NLOHMANN_JSON_NAMESPACE_NO_VERSION
      "},{"location":"api/macros/nlohmann_json_namespace/#version-history","title":"Version history","text":"
      • Added in version 3.11.0. Changed inline namespace name in version 3.11.2.
      "},{"location":"api/macros/nlohmann_json_namespace_begin/","title":"NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END","text":"
      #define NLOHMANN_JSON_NAMESPACE_BEGIN /* value */  // (1)\n#define NLOHMANN_JSON_NAMESPACE_END   /* value */  // (2)\n

      These macros can be used to open and close the nlohmann namespace. See nlohmann Namespace for details.

      1. Opens the namespace.
      2. Closes the namespace.
      "},{"location":"api/macros/nlohmann_json_namespace_begin/#default-definition","title":"Default definition","text":"

      The default definitions open and close the nlohmann namespace. The precise definition of [NLOHMANN_JSON_NAMESPACE_BEGIN] varies as described here.

      1. Default definition of NLOHMANN_JSON_NAMESPACE_BEGIN:

        namespace nlohmann\n{\ninline namespace json_abi_v3_11_2\n{\n
      2. Default definition of NLOHMANN_JSON_NAMESPACE_END:

        }  // namespace json_abi_v3_11_2\n}  // namespace nlohmann\n

      When these macros are not defined, the library will define them to their default definitions.

      "},{"location":"api/macros/nlohmann_json_namespace_begin/#examples","title":"Examples","text":"Example

      The example shows how to use NLOHMANN_JSON_NAMESPACE_BEGIN/NLOHMANN_JSON_NAMESPACE_END from the How do I convert third-party types? page.

      #include <iostream>\n#include <optional>\n#include <nlohmann/json.hpp>\n\n// partial specialization (see https://json.nlohmann.me/features/arbitrary_types/)\nNLOHMANN_JSON_NAMESPACE_BEGIN\ntemplate <typename T>\nstruct adl_serializer<std::optional<T>>\n{\n    static void to_json(json& j, const std::optional<T>& opt)\n    {\n        if (opt == std::nullopt)\n        {\n            j = nullptr;\n        }\n        else\n        {\n            j = *opt;\n        }\n    }\n};\nNLOHMANN_JSON_NAMESPACE_END\n\nint main()\n{\n    std::optional<int> o1 = 1;\n    std::optional<int> o2 = std::nullopt;\n\n    NLOHMANN_JSON_NAMESPACE::json j;\n    j.push_back(o1);\n    j.push_back(o2);\n    std::cout << j << std::endl;\n}\n

      Output:

      [1,null]\n
      "},{"location":"api/macros/nlohmann_json_namespace_begin/#see-also","title":"See also","text":"
      • nlohmann Namespace
      • NLOHMANN_JSON_NAMESPACE
      • NLOHMANN_JSON_NAMESPACE_NO_VERSION
      "},{"location":"api/macros/nlohmann_json_namespace_begin/#version-history","title":"Version history","text":"
      • Added in version 3.11.0. Changed inline namespace name in version 3.11.2.
      "},{"location":"api/macros/nlohmann_json_namespace_no_version/","title":"NLOHMANN_JSON_NAMESPACE_NO_VERSION","text":"
      #define NLOHMANN_JSON_NAMESPACE_NO_VERSION /* value */\n

      If defined to 1, the version component is omitted from the inline namespace. See nlohmann Namespace for details.

      "},{"location":"api/macros/nlohmann_json_namespace_no_version/#default-definition","title":"Default definition","text":"

      The default value is 0.

      #define NLOHMANN_JSON_NAMESPACE_NO_VERSION 0\n

      When the macro is not defined, the library will define it to its default value.

      "},{"location":"api/macros/nlohmann_json_namespace_no_version/#examples","title":"Examples","text":"Example

      The example shows how to use NLOHMANN_JSON_NAMESPACE_NO_VERSION to disable the version component of the inline namespace.

      #include <iostream>\n\n#define NLOHMANN_JSON_NAMESPACE_NO_VERSION 1\n#include <nlohmann/json.hpp>\n\n// macro needed to output the NLOHMANN_JSON_NAMESPACE as string literal\n#define Q(x) #x\n#define QUOTE(x) Q(x)\n\nint main()\n{\n    std::cout << QUOTE(NLOHMANN_JSON_NAMESPACE) << std::endl;\n}\n

      Output:

      nlohmann::json_abi\n
      "},{"location":"api/macros/nlohmann_json_namespace_no_version/#see-also","title":"See also","text":"
      • nlohmann Namespace
      • NLOHMANN_JSON_NAMESPACE
      • NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END
      "},{"location":"api/macros/nlohmann_json_namespace_no_version/#version-history","title":"Version history","text":"
      • Added in version 3.11.2.
      "},{"location":"api/macros/nlohmann_json_serialize_enum/","title":"NLOHMANN_JSON_SERIALIZE_ENUM","text":"
      #define NLOHMANN_JSON_SERIALIZE_ENUM(type, conversion...)\n

      By default, enum values are serialized to JSON as integers. In some cases this could result in undesired behavior. If an enum is modified or re-ordered after data has been serialized to JSON, the later de-serialized JSON data may be undefined or a different enum value than was originally intended.

      The NLOHMANN_JSON_SERIALIZE_ENUM allows to define a user-defined serialization for every enumerator.

      "},{"location":"api/macros/nlohmann_json_serialize_enum/#parameters","title":"Parameters","text":"type (in) name of the enum to serialize/deserialize conversion (in) a pair of an enumerator and a JSON serialization; arbitrary pairs can be given as a comma-separated list"},{"location":"api/macros/nlohmann_json_serialize_enum/#default-definition","title":"Default definition","text":"

      The macros add two friend functions to the class which take care of the serialization and deserialization:

      template<typename BasicJsonType>\ninline void to_json(BasicJsonType& j, const type& e);\ntemplate<typename BasicJsonType>\ninline void from_json(const BasicJsonType& j, type& e);\n
      "},{"location":"api/macros/nlohmann_json_serialize_enum/#notes","title":"Notes","text":"

      Prerequisites

      The macro must be used inside the namespace of the enum.

      Important notes

      • When using template get<ENUM_TYPE>(), undefined JSON values will default to the first specified conversion. Select this default pair carefully. See example 1 below.
      • If an enum or JSON value is specified in multiple conversions, the first matching conversion from the top of the list will be returned when converting to or from JSON. See example 2 below.
      "},{"location":"api/macros/nlohmann_json_serialize_enum/#examples","title":"Examples","text":"Example 1: Basic usage

      The example shows how NLOHMANN_JSON_SERIALIZE_ENUM can be used to serialize/deserialize both classical enums and C++11 enum classes:

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nnamespace ns\n{\nenum TaskState\n{\n    TS_STOPPED,\n    TS_RUNNING,\n    TS_COMPLETED,\n    TS_INVALID = -1\n};\n\nNLOHMANN_JSON_SERIALIZE_ENUM(TaskState,\n{\n    { TS_INVALID, nullptr },\n    { TS_STOPPED, \"stopped\" },\n    { TS_RUNNING, \"running\" },\n    { TS_COMPLETED, \"completed\" }\n})\n\nenum class Color\n{\n    red, green, blue, unknown\n};\n\nNLOHMANN_JSON_SERIALIZE_ENUM(Color,\n{\n    { Color::unknown, \"unknown\" }, { Color::red, \"red\" },\n    { Color::green, \"green\" }, { Color::blue, \"blue\" }\n})\n} // namespace ns\n\nint main()\n{\n    // serialization\n    json j_stopped = ns::TS_STOPPED;\n    json j_red = ns::Color::red;\n    std::cout << \"ns::TS_STOPPED -> \" << j_stopped\n              << \", ns::Color::red -> \" << j_red << std::endl;\n\n    // deserialization\n    json j_running = \"running\";\n    json j_blue = \"blue\";\n    auto running = j_running.template get<ns::TaskState>();\n    auto blue = j_blue.template get<ns::Color>();\n    std::cout << j_running << \" -> \" << running\n              << \", \" << j_blue << \" -> \" << static_cast<int>(blue) << std::endl;\n\n    // deserializing undefined JSON value to enum\n    // (where the first map entry above is the default)\n    json j_pi = 3.14;\n    auto invalid = j_pi.template get<ns::TaskState>();\n    auto unknown = j_pi.template get<ns::Color>();\n    std::cout << j_pi << \" -> \" << invalid << \", \"\n              << j_pi << \" -> \" << static_cast<int>(unknown) << std::endl;\n}\n

      Output:

      ns::TS_STOPPED -> \"stopped\", ns::Color::red -> \"red\"\n\"running\" -> 1, \"blue\" -> 2\n3.14 -> -1, 3.14 -> 3\n
      Example 2: Multiple conversions for one enumerator

      The example shows how to use multiple conversions for a single enumerator. In the example, Color::red will always be serialized to \"red\", because the first occurring conversion. The second conversion, however, offers an alternative deserialization from \"rot\" to Color::red.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nnamespace ns\n{\nenum class Color\n{\n    red, green, blue, unknown\n};\n\nNLOHMANN_JSON_SERIALIZE_ENUM(Color,\n{\n    { Color::unknown, \"unknown\" }, { Color::red, \"red\" },\n    { Color::green, \"green\" }, { Color::blue, \"blue\" },\n    { Color::red, \"rot\" } // a second conversion for Color::red\n})\n}\n\nint main()\n{\n    // serialization\n    json j_red = ns::Color::red;\n    std::cout << static_cast<int>(ns::Color::red) << \" -> \" << j_red << std::endl;\n\n    // deserialization\n    json j_rot = \"rot\";\n    auto rot = j_rot.template get<ns::Color>();\n    auto red = j_red.template get<ns::Color>();\n    std::cout << j_rot << \" -> \" << static_cast<int>(rot) << std::endl;\n    std::cout << j_red << \" -> \" << static_cast<int>(red) << std::endl;\n}\n

      Output:

      0 -> \"red\"\n\"rot\" -> 0\n\"red\" -> 0\n
      "},{"location":"api/macros/nlohmann_json_serialize_enum/#see-also","title":"See also","text":"
      • Specializing enum conversion
      • JSON_DISABLE_ENUM_SERIALIZATION
      "},{"location":"api/macros/nlohmann_json_serialize_enum/#version-history","title":"Version history","text":"

      Added in version 3.4.0.

      "},{"location":"api/macros/nlohmann_json_version_major/","title":"NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH","text":"
      #define NLOHMANN_JSON_VERSION_MAJOR /* value */\n#define NLOHMANN_JSON_VERSION_MINOR /* value */\n#define NLOHMANN_JSON_VERSION_PATCH /* value */\n

      These macros are defined by the library and contain the version numbers according to Semantic Versioning 2.0.0.

      "},{"location":"api/macros/nlohmann_json_version_major/#default-definition","title":"Default definition","text":"

      The macros are defined according to the current library version.

      "},{"location":"api/macros/nlohmann_json_version_major/#examples","title":"Examples","text":"Example

      The example below shows how NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, and NLOHMANN_JSON_VERSION_PATCH are defined by the library.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout << \"JSON for Modern C++ version \"\n              << NLOHMANN_JSON_VERSION_MAJOR << \".\"\n              << NLOHMANN_JSON_VERSION_MINOR << \".\"\n              << NLOHMANN_JSON_VERSION_PATCH << std::endl;\n}\n

      Output:

      JSON for Modern C++ version 3.11.3\n
      "},{"location":"api/macros/nlohmann_json_version_major/#see-also","title":"See also","text":"
      • meta - returns version information on the library
      • JSON_SKIP_LIBRARY_VERSION_CHECK - skip library version check
      "},{"location":"api/macros/nlohmann_json_version_major/#version-history","title":"Version history","text":"
      • Added in version 3.1.0.
      "},{"location":"features/arbitrary_types/","title":"Arbitrary Type Conversions","text":"

      Every type can be serialized in JSON, not just STL containers and scalar types. Usually, you would do something along those lines:

      namespace ns {\n    // a simple struct to model a person\n    struct person {\n        std::string name;\n        std::string address;\n        int age;\n    };\n} // namespace ns\n\nns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n// convert to JSON: copy each value into the JSON object\njson j;\nj[\"name\"] = p.name;\nj[\"address\"] = p.address;\nj[\"age\"] = p.age;\n\n// ...\n\n// convert from JSON: copy each value from the JSON object\nns::person p {\n    j[\"name\"].template get<std::string>(),\n    j[\"address\"].template get<std::string>(),\n    j[\"age\"].template get<int>()\n};\n

      It works, but that's quite a lot of boilerplate... Fortunately, there's a better way:

      // create a person\nns::person p {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n// conversion: person -> json\njson j = p;\n\nstd::cout << j << std::endl;\n// {\"address\":\"744 Evergreen Terrace\",\"age\":60,\"name\":\"Ned Flanders\"}\n\n// conversion: json -> person\nauto p2 = j.template get<ns::person>();\n\n// that's it\nassert(p == p2);\n
      "},{"location":"features/arbitrary_types/#basic-usage","title":"Basic usage","text":"

      To make this work with one of your types, you only need to provide two functions:

      using json = nlohmann::json;\n\nnamespace ns {\n    void to_json(json& j, const person& p) {\n        j = json{ {\"name\", p.name}, {\"address\", p.address}, {\"age\", p.age} };\n    }\n\n    void from_json(const json& j, person& p) {\n        j.at(\"name\").get_to(p.name);\n        j.at(\"address\").get_to(p.address);\n        j.at(\"age\").get_to(p.age);\n    }\n} // namespace ns\n

      That's all! When calling the json constructor with your type, your custom to_json method will be automatically called. Likewise, when calling template get<your_type>() or get_to(your_type&), the from_json method will be called.

      Some important things:

      • Those methods MUST be in your type's namespace (which can be the global namespace), or the library will not be able to locate them (in this example, they are in namespace ns, where person is defined).
      • Those methods MUST be available (e.g., proper headers must be included) everywhere you use these conversions. Look at #1108 for errors that may occur otherwise.
      • When using template get<your_type>(), your_type MUST be DefaultConstructible. (There is a way to bypass this requirement described later.)
      • In function from_json, use function at() to access the object values rather than operator[]. In case a key does not exist, at throws an exception that you can handle, whereas operator[] exhibits undefined behavior.
      • You do not need to add serializers or deserializers for STL types like std::vector: the library already implements these.
      "},{"location":"features/arbitrary_types/#simplify-your-life-with-macros","title":"Simplify your life with macros","text":"

      If you just want to serialize/deserialize some structs, the to_json/from_json functions can be a lot of boilerplate.

      There are four macros to make your life easier as long as you (1) want to use a JSON object as serialization and (2) want to use the member variable names as object keys in that object:

      • NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(name, member1, member2, ...) is to be defined inside the namespace of the class/struct to create code for. It will throw an exception in from_json() due to a missing value in the JSON object.
      • NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT(name, member1, member2, ...) is to be defined inside the namespace of the class/struct to create code for. It will not throw an exception in from_json() due to a missing value in the JSON object, but fills in values from object which is default-constructed by the type.
      • NLOHMANN_DEFINE_TYPE_INTRUSIVE(name, member1, member2, ...) is to be defined inside the class/struct to create code for. This macro can also access private members. It will throw an exception in from_json() due to a missing value in the JSON object.
      • NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT(name, member1, member2, ...) is to be defined inside the class/struct to create code for. This macro can also access private members. It will not throw an exception in from_json() due to a missing value in the JSON object, but fills in values from object which is default-constructed by the type.

      In all macros, the first parameter is the name of the class/struct, and all remaining parameters name the members. You can read more docs about them starting from here.

      Implementation limits

      • The current macro implementations are limited to at most 64 member variables. If you want to serialize/deserialize types with more than 64 member variables, you need to define the to_json/from_json functions manually.
      • The macros only work for the nlohmann::json type; other specializations such as nlohmann::ordered_json are currently unsupported.
      Example

      The to_json/from_json functions for the person struct above can be created with:

      namespace ns {\n    NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(person, name, address, age)\n}\n

      Here is an example with private members, where NLOHMANN_DEFINE_TYPE_INTRUSIVE is needed:

      namespace ns {\n    class address {\n      private:\n        std::string street;\n        int housenumber;\n        int postcode;\n\n      public:\n        NLOHMANN_DEFINE_TYPE_INTRUSIVE(address, street, housenumber, postcode)\n    };\n}\n
      "},{"location":"features/arbitrary_types/#how-do-i-convert-third-party-types","title":"How do I convert third-party types?","text":"

      This requires a bit more advanced technique. But first, let's see how this conversion mechanism works:

      The library uses JSON Serializers to convert types to json. The default serializer for nlohmann::json is nlohmann::adl_serializer (ADL means Argument-Dependent Lookup).

      It is implemented like this (simplified):

      template <typename T>\nstruct adl_serializer {\n    static void to_json(json& j, const T& value) {\n        // calls the \"to_json\" method in T's namespace\n    }\n\n    static void from_json(const json& j, T& value) {\n        // same thing, but with the \"from_json\" method\n    }\n};\n

      This serializer works fine when you have control over the type's namespace. However, what about boost::optional or std::filesystem::path (C++17)? Hijacking the boost namespace is pretty bad, and it's illegal to add something other than template specializations to std...

      To solve this, you need to add a specialization of adl_serializer to the nlohmann namespace, here's an example:

      // partial specialization (full specialization works too)\nNLOHMANN_JSON_NAMESPACE_BEGIN\ntemplate <typename T>\nstruct adl_serializer<boost::optional<T>> {\n    static void to_json(json& j, const boost::optional<T>& opt) {\n        if (opt == boost::none) {\n            j = nullptr;\n        } else {\n            j = *opt; // this will call adl_serializer<T>::to_json which will\n                      // find the free function to_json in T's namespace!\n        }\n    }\n\n    static void from_json(const json& j, boost::optional<T>& opt) {\n        if (j.is_null()) {\n            opt = boost::none;\n        } else {\n            opt = j.template get<T>(); // same as above, but with\n                              // adl_serializer<T>::from_json\n        }\n    }\n};\nNLOHMANN_JSON_NAMESPACE_END\n

      ABI compatibility

      Use NLOHMANN_JSON_NAMESPACE_BEGIN and NLOHMANN_JSON_NAMESPACE_END instead of namespace nlohmann { } in code which may be linked with different versions of this library.

      "},{"location":"features/arbitrary_types/#how-can-i-use-get-for-non-default-constructiblenon-copyable-types","title":"How can I use get() for non-default constructible/non-copyable types?","text":"

      There is a way, if your type is MoveConstructible. You will need to specialize the adl_serializer as well, but with a special from_json overload:

      struct move_only_type {\n    move_only_type() = delete;\n    move_only_type(int ii): i(ii) {}\n    move_only_type(const move_only_type&) = delete;\n    move_only_type(move_only_type&&) = default;\n\n    int i;\n};\n\nnamespace nlohmann {\n    template <>\n    struct adl_serializer<move_only_type> {\n        // note: the return type is no longer 'void', and the method only takes\n        // one argument\n        static move_only_type from_json(const json& j) {\n            return {j.template get<int>()};\n        }\n\n        // Here's the catch! You must provide a to_json method! Otherwise, you\n        // will not be able to convert move_only_type to json, since you fully\n        // specialized adl_serializer on that type\n        static void to_json(json& j, move_only_type t) {\n            j = t.i;\n        }\n    };\n}\n
      "},{"location":"features/arbitrary_types/#can-i-write-my-own-serializer-advanced-use","title":"Can I write my own serializer? (Advanced use)","text":"

      Yes. You might want to take a look at unit-udt.cpp in the test suite, to see a few examples.

      If you write your own serializer, you'll need to do a few things:

      • use a different basic_json alias than nlohmann::json (the last template parameter of basic_json is the JSONSerializer)
      • use your basic_json alias (or a template parameter) in all your to_json/from_json methods
      • use nlohmann::to_json and nlohmann::from_json when you need ADL

      Here is an example, without simplifications, that only accepts types with a size <= 32, and uses ADL.

      // You should use void as a second template argument\n// if you don't need compile-time checks on T\ntemplate<typename T, typename SFINAE = typename std::enable_if<sizeof(T) <= 32>::type>\nstruct less_than_32_serializer {\n    template <typename BasicJsonType>\n    static void to_json(BasicJsonType& j, T value) {\n        // we want to use ADL, and call the correct to_json overload\n        using nlohmann::to_json; // this method is called by adl_serializer,\n                                 // this is where the magic happens\n        to_json(j, value);\n    }\n\n    template <typename BasicJsonType>\n    static void from_json(const BasicJsonType& j, T& value) {\n        // same thing here\n        using nlohmann::from_json;\n        from_json(j, value);\n    }\n};\n

      Be very careful when reimplementing your serializer, you can stack overflow if you don't pay attention:

      template <typename T, void>\nstruct bad_serializer\n{\n    template <typename BasicJsonType>\n    static void to_json(BasicJsonType& j, const T& value) {\n      // this calls BasicJsonType::json_serializer<T>::to_json(j, value);\n      // if BasicJsonType::json_serializer == bad_serializer ... oops!\n      j = value;\n    }\n\n    template <typename BasicJsonType>\n    static void from_json(const BasicJsonType& j, T& value) {\n      // this calls BasicJsonType::json_serializer<T>::from_json(j, value);\n      // if BasicJsonType::json_serializer == bad_serializer ... oops!\n      value = j.template template get<T>(); // oops!\n    }\n};\n
      "},{"location":"features/assertions/","title":"Runtime Assertions","text":"

      The code contains numerous debug assertions to ensure class invariants are valid or to detect undefined behavior. Whereas the former class invariants are nothing to be concerned of, the latter checks for undefined behavior are to detect bugs in client code.

      "},{"location":"features/assertions/#switch-off-runtime-assertions","title":"Switch off runtime assertions","text":"

      Runtime assertions can be switched off by defining the preprocessor macro NDEBUG (see the documentation of assert) which is the default for release builds.

      "},{"location":"features/assertions/#change-assertion-behavior","title":"Change assertion behavior","text":"

      The behavior of runtime assertions can be changes by defining macro JSON_ASSERT(x) before including the json.hpp header.

      "},{"location":"features/assertions/#function-with-runtime-assertions","title":"Function with runtime assertions","text":""},{"location":"features/assertions/#unchecked-object-access-to-a-const-value","title":"Unchecked object access to a const value","text":"

      Function operator[] implements unchecked access for objects. Whereas a missing key is added in case of non-const objects, accessing a const object with a missing key is undefined behavior (think of a dereferenced null pointer) and yields a runtime assertion.

      If you are not sure whether an element in an object exists, use checked access with the at function or call the contains function before.

      See also the documentation on element access.

      Example 1: Missing object key

      The following code will trigger an assertion at runtime:

      #include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    const json j = {{\"key\", \"value\"}};\n    auto v = j[\"missing\"];\n}\n

      Output:

      Assertion failed: (m_value.object->find(key) != m_value.object->end()), function operator[], file json.hpp, line 2144.\n
      "},{"location":"features/assertions/#constructing-from-an-uninitialized-iterator-range","title":"Constructing from an uninitialized iterator range","text":"

      Constructing a JSON value from an iterator range (see constructor) with an uninitialized iterator is undefined behavior and yields a runtime assertion.

      Example 2: Uninitialized iterator range

      The following code will trigger an assertion at runtime:

      #include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    json::iterator it1, it2;\n    json j(it1, it2);\n}\n

      Output:

      Assertion failed: (m_object != nullptr), function operator++, file iter_impl.hpp, line 368.\n
      "},{"location":"features/assertions/#operations-on-uninitialized-iterators","title":"Operations on uninitialized iterators","text":"

      Any operation on uninitialized iterators (i.e., iterators that are not associated with any JSON value) is undefined behavior and yields a runtime assertion.

      Example 3: Uninitialized iterator

      The following code will trigger an assertion at runtime:

      #include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n  json::iterator it;\n  ++it;\n}\n

      Output:

      Assertion failed: (m_object != nullptr), function operator++, file iter_impl.hpp, line 368.\n
      "},{"location":"features/assertions/#changes","title":"Changes","text":""},{"location":"features/assertions/#reading-from-a-null-file-or-char-pointer","title":"Reading from a null FILE or char pointer","text":"

      Reading from a null FILE or char pointer in C++ is undefined behavior. Until version 3.11.4, this library asserted that the pointer was not nullptr using a runtime assertion. If assertions were disabled, this would result in undefined behavior. Since version 3.11.4, this library checks for nullptr and throws a parse_error.101 to prevent the undefined behavior.

      Example 4: Reading from null pointer

      The following code will trigger an assertion at runtime:

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::FILE* f = std::fopen(\"nonexistent_file.json\", \"r\");\n    try {\n        json j = json::parse(f);\n    } catch (std::exception& e) {\n        std::cerr << e.what() << std::endl;\n    }\n}\n

      Output:

      [json.exception.parse_error.101] parse error: attempting to parse an empty input; check that your input string or stream contains the expected JSON\n
      "},{"location":"features/binary_values/","title":"Binary Values","text":"

      The library implements several binary formats that encode JSON in an efficient way. Most of these formats support binary values; that is, values that have semantics define outside the library and only define a sequence of bytes to be stored.

      JSON itself does not have a binary value. As such, binary values are an extension that this library implements to store values received by a binary format. Binary values are never created by the JSON parser, and are only part of a serialized JSON text if they have been created manually or via a binary format.

      "},{"location":"features/binary_values/#api-for-binary-values","title":"API for binary values","text":"
      classDiagram\n\nclass binary_t [\"json::binary_t\"] {\n    +void set_subtype(std::uint64_t subtype)\n    +void clear_subtype()\n    +std::uint64_t subtype() const\n    +bool has_subtype() const\n}\n\nclass vector [\"std::vector<uint8_t>\"]\n\nvector <|-- binary_t

      By default, binary values are stored as std::vector<std::uint8_t>. This type can be changed by providing a template parameter to the basic_json type. To store binary subtypes, the storage type is extended and exposed as json::binary_t:

      auto binary = json::binary_t({0xCA, 0xFE, 0xBA, 0xBE});\nauto binary_with_subtype = json::binary_t({0xCA, 0xFE, 0xBA, 0xBE}, 42);\n

      There are several convenience functions to check and set the subtype:

      binary.has_subtype();                   // returns false\nbinary_with_subtype.has_subtype();      // returns true\n\nbinary_with_subtype.clear_subtype();\nbinary_with_subtype.has_subtype();      // returns true\n\nbinary_with_subtype.set_subtype(42);\nbinary.set_subtype(23);\n\nbinary.subtype();                       // returns 23\n

      As json::binary_t is subclassing std::vector<std::uint8_t>, all member functions are available:

      binary.size();  // returns 4\nbinary[1];      // returns 0xFE\n

      JSON values can be constructed from json::binary_t:

      json j = binary;\n

      Binary values are primitive values just like numbers or strings:

      j.is_binary();    // returns true\nj.is_primitive(); // returns true\n

      Given a binary JSON value, the binary_t can be accessed by reference as via get_binary():

      j.get_binary().has_subtype();  // returns true\nj.get_binary().size();         // returns 4\n

      For convenience, binary JSON values can be constructed via json::binary:

      auto j2 = json::binary({0xCA, 0xFE, 0xBA, 0xBE}, 23);\nauto j3 = json::binary({0xCA, 0xFE, 0xBA, 0xBE});\n\nj2 == j;                        // returns true\nj3.get_binary().has_subtype();  // returns false\nj3.get_binary().subtype();      // returns std::uint64_t(-1) as j3 has no subtype\n
      "},{"location":"features/binary_values/#serialization","title":"Serialization","text":"

      Binary values are serialized differently according to the formats.

      "},{"location":"features/binary_values/#json","title":"JSON","text":"

      JSON does not have a binary type, and this library does not introduce a new type as this would break conformance. Instead, binary values are serialized as an object with two keys: bytes holds an array of integers, and subtype is an integer or null.

      Example

      Code:

      // create a binary value of subtype 42\njson j;\nj[\"binary\"] = json::binary({0xCA, 0xFE, 0xBA, 0xBE}, 42);\n\n// serialize to standard output\nstd::cout << j.dump(2) << std::endl;\n

      Output:

      {\n  \"binary\": {\n    \"bytes\": [202, 254, 186, 190],\n    \"subtype\": 42\n  }\n}\n

      No roundtrip for binary values

      The JSON parser will not parse the objects generated by binary values back to binary values. This is by design to remain standards compliant. Serializing binary values to JSON is only implemented for debugging purposes.

      "},{"location":"features/binary_values/#bjdata","title":"BJData","text":"

      BJData neither supports binary values nor subtypes, and proposes to serialize binary values as array of uint8 values. This translation is implemented by the library.

      Example

      Code:

      // create a binary value of subtype 42 (will be ignored in BJData)\njson j;\nj[\"binary\"] = json::binary({0xCA, 0xFE, 0xBA, 0xBE}, 42);\n\n// convert to BJData\nauto v = json::to_bjdata(j);      \n

      v is a std::vector<std::uint8t> with the following 20 elements:

      0x7B                                             // '{'\n    0x69 0x06                                    // i 6 (length of the key)\n    0x62 0x69 0x6E 0x61 0x72 0x79                // \"binary\"\n    0x5B                                         // '['\n        0x55 0xCA 0x55 0xFE 0x55 0xBA 0x55 0xBE  // content (each byte prefixed with 'U')\n    0x5D                                         // ']'\n0x7D                                             // '}'\n

      The following code uses the type and size optimization for UBJSON:

      // convert to UBJSON using the size and type optimization\nauto v = json::to_bjdata(j, true, true);\n

      The resulting vector has 22 elements; the optimization is not effective for examples with few values:

      0x7B                                // '{'\n    0x23 0x69 0x01                  // '#' 'i' type of the array elements: unsigned integers\n    0x69 0x06                       // i 6 (length of the key)\n    0x62 0x69 0x6E 0x61 0x72 0x79   // \"binary\"\n    0x5B                            // '[' array\n        0x24 0x55                   // '$' 'U' type of the array elements: unsigned integers\n        0x23 0x69 0x04              // '#' i 4 number of array elements\n        0xCA 0xFE 0xBA 0xBE         // content\n

      Note that subtype (42) is not serialized and that UBJSON has no binary type, and deserializing v would yield the following value:

      {\n  \"binary\": [202, 254, 186, 190]\n}\n
      "},{"location":"features/binary_values/#bson","title":"BSON","text":"

      BSON supports binary values and subtypes. If a subtype is given, it is used and added as unsigned 8-bit integer. If no subtype is given, the generic binary subtype 0x00 is used.

      Example

      Code:

      // create a binary value of subtype 42\njson j;\nj[\"binary\"] = json::binary({0xCA, 0xFE, 0xBA, 0xBE}, 42);\n\n// convert to BSON\nauto v = json::to_bson(j);      \n

      v is a std::vector<std::uint8t> with the following 22 elements:

      0x16 0x00 0x00 0x00                         // number of bytes in the document\n    0x05                                    // binary value\n        0x62 0x69 0x6E 0x61 0x72 0x79 0x00  // key \"binary\" + null byte\n        0x04 0x00 0x00 0x00                 // number of bytes\n        0x2a                                // subtype\n        0xCA 0xFE 0xBA 0xBE                 // content\n0x00                                        // end of the document\n

      Note that the serialization preserves the subtype, and deserializing v would yield the following value:

      {\n  \"binary\": {\n    \"bytes\": [202, 254, 186, 190],\n    \"subtype\": 42\n  }\n}\n
      "},{"location":"features/binary_values/#cbor","title":"CBOR","text":"

      CBOR supports binary values, but no subtypes. Subtypes will be serialized as tags. Any binary value will be serialized as byte strings. The library will choose the smallest representation using the length of the byte array.

      Example

      Code:

      // create a binary value of subtype 42\njson j;\nj[\"binary\"] = json::binary({0xCA, 0xFE, 0xBA, 0xBE}, 42);\n\n// convert to CBOR\nauto v = json::to_cbor(j);      \n

      v is a std::vector<std::uint8t> with the following 15 elements:

      0xA1                                   // map(1)\n    0x66                               // text(6)\n        0x62 0x69 0x6E 0x61 0x72 0x79  // \"binary\"\n    0xD8 0x2A                          // tag(42)\n    0x44                               // bytes(4)\n        0xCA 0xFE 0xBA 0xBE            // content\n

      Note that the subtype is serialized as tag. However, parsing tagged values yield a parse error unless json::cbor_tag_handler_t::ignore or json::cbor_tag_handler_t::store is passed to json::from_cbor.

      {\n  \"binary\": {\n    \"bytes\": [202, 254, 186, 190],\n    \"subtype\": null\n  }\n}\n
      "},{"location":"features/binary_values/#messagepack","title":"MessagePack","text":"

      MessagePack supports binary values and subtypes. If a subtype is given, the ext family is used. The library will choose the smallest representation among fixext1, fixext2, fixext4, fixext8, ext8, ext16, and ext32. The subtype is then added as signed 8-bit integer.

      If no subtype is given, the bin family (bin8, bin16, bin32) is used.

      Example

      Code:

      // create a binary value of subtype 42\njson j;\nj[\"binary\"] = json::binary({0xCA, 0xFE, 0xBA, 0xBE}, 42);\n\n// convert to MessagePack\nauto v = json::to_msgpack(j);      \n

      v is a std::vector<std::uint8t> with the following 14 elements:

      0x81                                   // fixmap1\n    0xA6                               // fixstr6\n        0x62 0x69 0x6E 0x61 0x72 0x79  // \"binary\"\n    0xD6                               // fixext4\n        0x2A                           // subtype\n        0xCA 0xFE 0xBA 0xBE            // content\n

      Note that the serialization preserves the subtype, and deserializing v would yield the following value:

      {\n  \"binary\": {\n    \"bytes\": [202, 254, 186, 190],\n    \"subtype\": 42\n  }\n}\n
      "},{"location":"features/binary_values/#ubjson","title":"UBJSON","text":"

      UBJSON neither supports binary values nor subtypes, and proposes to serialize binary values as array of uint8 values. This translation is implemented by the library.

      Example

      Code:

      // create a binary value of subtype 42 (will be ignored in UBJSON)\njson j;\nj[\"binary\"] = json::binary({0xCA, 0xFE, 0xBA, 0xBE}, 42);\n\n// convert to UBJSON\nauto v = json::to_ubjson(j);      \n

      v is a std::vector<std::uint8t> with the following 20 elements:

      0x7B                                             // '{'\n    0x69 0x06                                    // i 6 (length of the key)\n    0x62 0x69 0x6E 0x61 0x72 0x79                // \"binary\"\n    0x5B                                         // '['\n        0x55 0xCA 0x55 0xFE 0x55 0xBA 0x55 0xBE  // content (each byte prefixed with 'U')\n    0x5D                                         // ']'\n0x7D                                             // '}'\n

      The following code uses the type and size optimization for UBJSON:

      // convert to UBJSON using the size and type optimization\nauto v = json::to_ubjson(j, true, true);\n

      The resulting vector has 23 elements; the optimization is not effective for examples with few values:

      0x7B                                // '{'\n    0x24                            // '$' type of the object elements\n    0x5B                            // '[' array\n    0x23 0x69 0x01                  // '#' i 1 number of object elements\n    0x69 0x06                       // i 6 (length of the key)\n    0x62 0x69 0x6E 0x61 0x72 0x79   // \"binary\"\n        0x24 0x55                   // '$' 'U' type of the array elements: unsigned integers\n        0x23 0x69 0x04              // '#' i 4 number of array elements\n        0xCA 0xFE 0xBA 0xBE         // content\n

      Note that subtype (42) is not serialized and that UBJSON has no binary type, and deserializing v would yield the following value:

      {\n  \"binary\": [202, 254, 186, 190]\n}\n
      "},{"location":"features/comments/","title":"Comments","text":"

      This library does not support comments by default. It does so for three reasons:

      1. Comments are not part of the JSON specification. You may argue that // or /* */ are allowed in JavaScript, but JSON is not JavaScript.
      2. This was not an oversight: Douglas Crockford wrote on this in May 2012:

        I removed comments from JSON because I saw people were using them to hold parsing directives, a practice which would have destroyed interoperability. I know that the lack of comments makes some people sad, but it shouldn't.

        Suppose you are using JSON to keep configuration files, which you would like to annotate. Go ahead and insert all the comments you like. Then pipe it through JSMin before handing it to your JSON parser.

      3. It is dangerous for interoperability if some libraries would add comment support while others don't. Please check The Harmful Consequences of the Robustness Principle on this.

      However, you can pass set parameter ignore_comments to true in the parse function to ignore // or /* */ comments. Comments will then be treated as whitespace.

      Example

      Consider the following JSON with comments.

      {\n    // update in 2006: removed Pluto\n    \"planets\": [\"Mercury\", \"Venus\", \"Earth\", \"Mars\",\n                \"Jupiter\", \"Uranus\", \"Neptune\" /*, \"Pluto\" */]\n}\n

      When calling parse without additional argument, a parse error exception is thrown. If ignore_comments is set to true, the comments are ignored during parsing:

      #include <iostream>\n#include \"json.hpp\"\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::string s = R\"(\n    {\n        // update in 2006: removed Pluto\n        \"planets\": [\"Mercury\", \"Venus\", \"Earth\", \"Mars\",\n                    \"Jupiter\", \"Uranus\", \"Neptune\" /*, \"Pluto\" */]\n    }\n    )\";\n\n    try\n    {\n        json j = json::parse(s);\n    }\n    catch (json::exception &e)\n    {\n        std::cout << e.what() << std::endl;\n    }\n\n    json j = json::parse(s,\n                         /* callback */ nullptr,\n                         /* allow exceptions */ true,\n                         /* ignore_comments */ true);\n    std::cout << j.dump(2) << '\\n';\n}\n

      Output:

      [json.exception.parse_error.101] parse error at line 3, column 9:\nsyntax error while parsing object key - invalid literal;\nlast read: '<U+000A>    {<U+000A>        /'; expected string literal\n
      {\n  \"planets\": [\n    \"Mercury\",\n    \"Venus\",\n    \"Earth\",\n    \"Mars\",\n    \"Jupiter\",\n    \"Uranus\",\n    \"Neptune\"\n  ]\n}\n
      "},{"location":"features/enum_conversion/","title":"Specializing enum conversion","text":"

      By default, enum values are serialized to JSON as integers. In some cases this could result in undesired behavior. If an enum is modified or re-ordered after data has been serialized to JSON, the later de-serialized JSON data may be undefined or a different enum value than was originally intended.

      It is possible to more precisely specify how a given enum is mapped to and from JSON as shown below:

      // example enum type declaration\nenum TaskState {\n    TS_STOPPED,\n    TS_RUNNING,\n    TS_COMPLETED,\n    TS_INVALID=-1,\n};\n\n// map TaskState values to JSON as strings\nNLOHMANN_JSON_SERIALIZE_ENUM( TaskState, {\n    {TS_INVALID, nullptr},\n    {TS_STOPPED, \"stopped\"},\n    {TS_RUNNING, \"running\"},\n    {TS_COMPLETED, \"completed\"},\n})\n

      The NLOHMANN_JSON_SERIALIZE_ENUM() macro declares a set of to_json() / from_json() functions for type TaskState while avoiding repetition and boilerplate serialization code.

      "},{"location":"features/enum_conversion/#usage","title":"Usage","text":"
      // enum to JSON as string\njson j = TS_STOPPED;\nassert(j == \"stopped\");\n\n// json string to enum\njson j3 = \"running\";\nassert(j3.template get<TaskState>() == TS_RUNNING);\n\n// undefined json value to enum (where the first map entry above is the default)\njson jPi = 3.14;\nassert(jPi.template get<TaskState>() == TS_INVALID );\n
      "},{"location":"features/enum_conversion/#notes","title":"Notes","text":"

      Just as in Arbitrary Type Conversions above,

      • NLOHMANN_JSON_SERIALIZE_ENUM() MUST be declared in your enum type's namespace (which can be the global namespace), or the library will not be able to locate it, and it will default to integer serialization.
      • It MUST be available (e.g., proper headers must be included) everywhere you use the conversions.

      Other Important points:

      • When using template get<ENUM_TYPE>(), undefined JSON values will default to the first pair specified in your map. Select this default pair carefully.
      • If an enum or JSON value is specified more than once in your map, the first matching occurrence from the top of the map will be returned when converting to or from JSON.
      • To disable the default serialization of enumerators as integers and force a compiler error instead, see JSON_DISABLE_ENUM_SERIALIZATION.
      "},{"location":"features/iterators/","title":"Iterators","text":""},{"location":"features/iterators/#overview","title":"Overview","text":"

      A basic_json value is a container and allows access via iterators. Depending on the value type, basic_json stores zero or more values.

      As for other containers, begin() returns an iterator to the first value and end() returns an iterator to the value following the last value. The latter iterator is a placeholder and cannot be dereferenced. In case of null values, empty arrays, or empty objects, begin() will return end().

      "},{"location":"features/iterators/#iteration-order-for-objects","title":"Iteration order for objects","text":"

      When iterating over objects, values are ordered with respect to the object_comparator_t type which defaults to std::less. See the types documentation for more information.

      Example
      // create JSON object {\"one\": 1, \"two\": 2, \"three\": 3}\njson j;\nj[\"one\"] = 1;\nj[\"two\"] = 2;\nj[\"three\"] = 3;\n\nfor (auto it = j.begin(); it != j.end(); ++it)\n{\n    std::cout << *it << std::endl;\n}\n

      Output:

      1\n3\n2\n

      The reason for the order is the lexicographic ordering of the object keys \"one\", \"three\", \"two\".

      "},{"location":"features/iterators/#access-object-key-during-iteration","title":"Access object key during iteration","text":"

      The JSON iterators have two member functions, key() and value() to access the object key and stored value, respectively. When calling key() on a non-object iterator, an invalid_iterator.207 exception is thrown.

      Example
      // create JSON object {\"one\": 1, \"two\": 2, \"three\": 3}\njson j;\nj[\"one\"] = 1;\nj[\"two\"] = 2;\nj[\"three\"] = 3;\n\nfor (auto it = j.begin(); it != j.end(); ++it)\n{\n    std::cout << it.key() << \" : \" << it.value() << std::endl;\n}\n

      Output:

      one : 1\nthree : 3\ntwo : 2\n
      "},{"location":"features/iterators/#range-based-for-loops","title":"Range-based for loops","text":"

      C++11 allows using range-based for loops to iterate over a container.

      for (auto it : j_object)\n{\n    // \"it\" is of type json::reference and has no key() member\n    std::cout << \"value: \" << it << '\\n';\n}\n

      For this reason, the items() function allows accessing iterator::key() and iterator::value() during range-based for loops. In these loops, a reference to the JSON values is returned, so there is no access to the underlying iterator.

      for (auto& el : j_object.items())\n{\n    std::cout << \"key: \" << el.key() << \", value:\" << el.value() << '\\n';\n}\n

      The items() function also allows using structured bindings (C++17):

      for (auto& [key, val] : j_object.items())\n{\n    std::cout << \"key: \" << key << \", value:\" << val << '\\n';\n}\n

      Note

      When iterating over an array, key() will return the index of the element as string. For primitive types (e.g., numbers), key() returns an empty string.

      Warning

      Using items() on temporary objects is dangerous. Make sure the object's lifetime exceeds the iteration. See #2040 for more information.

      "},{"location":"features/iterators/#reverse-iteration-order","title":"Reverse iteration order","text":"

      rbegin() and rend() return iterators in the reverse sequence.

      Example
      json j = {1, 2, 3, 4};\n\nfor (auto it = j.rbegin(); it != j.rend(); ++it)\n{\n    std::cout << *it << std::endl;\n}\n

      Output:

      4\n3\n2\n1\n
      "},{"location":"features/iterators/#iterating-strings-and-binary-values","title":"Iterating strings and binary values","text":"

      Note that \"value\" means a JSON value in this setting, not values stored in the underlying containers. That is, *begin() returns the complete string or binary array and is also safe the underlying string or binary array is empty.

      Example
      json j = \"Hello, world\";\nfor (auto it = j.begin(); it != j.end(); ++it)\n{\n    std::cout << *it << std::endl;\n}\n

      Output:

      \"Hello, world\"\n
      "},{"location":"features/iterators/#iterator-invalidation","title":"Iterator invalidation","text":"Operations invalidated iterators clear all"},{"location":"features/json_patch/","title":"JSON Patch and Diff","text":""},{"location":"features/json_patch/#patches","title":"Patches","text":"

      JSON Patch (RFC 6902) defines a JSON document structure for expressing a sequence of operations to apply to a JSON document. With the patch function, a JSON Patch is applied to the current JSON value by executing all operations from the patch.

      Example

      The following code shows how a JSON patch is applied to a value.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // the original document\n    json doc = R\"(\n        {\n          \"baz\": \"qux\",\n          \"foo\": \"bar\"\n        }\n    )\"_json;\n\n    // the patch\n    json patch = R\"(\n        [\n          { \"op\": \"replace\", \"path\": \"/baz\", \"value\": \"boo\" },\n          { \"op\": \"add\", \"path\": \"/hello\", \"value\": [\"world\"] },\n          { \"op\": \"remove\", \"path\": \"/foo\"}\n        ]\n    )\"_json;\n\n    // apply the patch\n    json patched_doc = doc.patch(patch);\n\n    // output original and patched document\n    std::cout << std::setw(4) << doc << \"\\n\\n\"\n              << std::setw(4) << patched_doc << std::endl;\n}\n

      Output:

      {\n    \"baz\": \"qux\",\n    \"foo\": \"bar\"\n}\n\n{\n    \"baz\": \"boo\",\n    \"hello\": [\n        \"world\"\n    ]\n}\n
      "},{"location":"features/json_patch/#diff","title":"Diff","text":"

      The library can also calculate a JSON patch (i.e., a diff) given two JSON values.

      Invariant

      For two JSON values source and target, the following code yields always true:

      source.patch(diff(source, target)) == target;\n
      Example

      The following code shows how a JSON patch is created as a diff for two JSON values.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // the source document\n    json source = R\"(\n        {\n            \"baz\": \"qux\",\n            \"foo\": \"bar\"\n        }\n    )\"_json;\n\n    // the target document\n    json target = R\"(\n        {\n            \"baz\": \"boo\",\n            \"hello\": [\n                \"world\"\n            ]\n        }\n    )\"_json;\n\n    // create the patch\n    json patch = json::diff(source, target);\n\n    // roundtrip\n    json patched_source = source.patch(patch);\n\n    // output patch and roundtrip result\n    std::cout << std::setw(4) << patch << \"\\n\\n\"\n              << std::setw(4) << patched_source << std::endl;\n}\n

      Output:

      [\n    {\n        \"op\": \"replace\",\n        \"path\": \"/baz\",\n        \"value\": \"boo\"\n    },\n    {\n        \"op\": \"remove\",\n        \"path\": \"/foo\"\n    },\n    {\n        \"op\": \"add\",\n        \"path\": \"/hello\",\n        \"value\": [\n            \"world\"\n        ]\n    }\n]\n\n{\n    \"baz\": \"boo\",\n    \"hello\": [\n        \"world\"\n    ]\n}\n
      "},{"location":"features/json_pointer/","title":"JSON Pointer","text":""},{"location":"features/json_pointer/#introduction","title":"Introduction","text":"

      The library supports JSON Pointer (RFC 6901) as alternative means to address structured values. A JSON Pointer is a string that identifies a specific value within a JSON document.

      Consider the following JSON document

      {\n    \"array\": [\"A\", \"B\", \"C\"],\n    \"nested\": {\n        \"one\": 1,\n        \"two\": 2,\n        \"three\": [true, false]\n    }\n}\n

      Then every value inside the JSON document can be identified as follows:

      JSON Pointer JSON value `` {\"array\":[\"A\",\"B\",\"C\"],\"nested\":{\"one\":1,\"two\":2,\"three\":[true,false]}} /array [\"A\",\"B\",\"C\"] /array/0 A /array/1 B /array/2 C /nested {\"one\":1,\"two\":2,\"three\":[true,false]} /nested/one 1 /nested/two 2 /nested/three [true,false] /nested/three/0 true /nested/three/1 false

      Note / does not identify the root (i.e., the whole document), but an object entry with empty key \"\". See RFC 6901 for more information.

      "},{"location":"features/json_pointer/#json-pointer-creation","title":"JSON Pointer creation","text":"

      JSON Pointers can be created from a string:

      json::json_pointer p = \"/nested/one\";\n

      Furthermore, a user-defined string literal can be used to achieve the same result:

      auto p = \"/nested/one\"_json_pointer;\n

      The escaping rules of RFC 6901 are implemented. See the constructor documentation for more information.

      "},{"location":"features/json_pointer/#value-access","title":"Value access","text":"

      JSON Pointers can be used in the at, operator[], and value functions just like object keys or array indices.

      // the JSON value from above\nauto j = json::parse(R\"({\n    \"array\": [\"A\", \"B\", \"C\"],\n    \"nested\": {\n        \"one\": 1,\n        \"two\": 2,\n        \"three\": [true, false]\n    }\n})\");\n\n// access values\nauto val = j[\"\"_json_pointer];                              // {\"array\":[\"A\",\"B\",\"C\"],...}\nauto val1 = j[\"/nested/one\"_json_pointer];                  // 1\nauto val2 = j.at(json::json_pointer(\"/nested/three/1\"));    // false\nauto val3 = j.value(json::json_pointer(\"/nested/four\"), 0); // 0\n
      "},{"location":"features/json_pointer/#flatten-unflatten","title":"Flatten / unflatten","text":"

      The library implements a function flatten to convert any JSON document into a JSON object where each key is a JSON Pointer and each value is a primitive JSON value (i.e., a string, boolean, number, or null).

      // the JSON value from above\nauto j = json::parse(R\"({\n    \"array\": [\"A\", \"B\", \"C\"],\n    \"nested\": {\n        \"one\": 1,\n        \"two\": 2,\n        \"three\": [true, false]\n    }\n})\");\n\n// create flattened value\nauto j_flat = j.flatten();\n

      The resulting value j_flat is:

      {\n  \"/array/0\": \"A\",\n  \"/array/1\": \"B\",\n  \"/array/2\": \"C\",\n  \"/nested/one\": 1,\n  \"/nested/two\": 2,\n  \"/nested/three/0\": true,\n  \"/nested/three/1\": false\n}\n

      The reverse function, unflatten recreates the original value.

      auto j_original = j_flat.unflatten();\n
      "},{"location":"features/json_pointer/#see-also","title":"See also","text":"
      • Class json_pointer
      • Function flatten
      • Function unflatten
      • JSON Patch
      "},{"location":"features/macros/","title":"Supported Macros","text":"

      Some aspects of the library can be configured by defining preprocessor macros before including the json.hpp header. See also the API documentation for macros for examples and more information.

      "},{"location":"features/macros/#json_assertx","title":"JSON_ASSERT(x)","text":"

      This macro controls which code is executed for runtime assertions of the library.

      See full documentation of JSON_ASSERT(x).

      "},{"location":"features/macros/#json_catch_userexception","title":"JSON_CATCH_USER(exception)","text":"

      This macro overrides catch calls inside the library.

      See full documentation of JSON_CATCH_USER(exception).

      "},{"location":"features/macros/#json_diagnostics","title":"JSON_DIAGNOSTICS","text":"

      This macro enables extended diagnostics for exception messages. Possible values are 1 to enable or 0 to disable (default).

      When enabled, exception messages contain a JSON Pointer to the JSON value that triggered the exception, see Extended diagnostic messages for an example. Note that enabling this macro increases the size of every JSON value by one pointer and adds some runtime overhead.

      The diagnostics messages can also be controlled with the CMake option JSON_Diagnostics (OFF by default) which sets JSON_DIAGNOSTICS accordingly.

      See full documentation of JSON_DIAGNOSTICS.

      "},{"location":"features/macros/#json_has_cpp_11-json_has_cpp_14-json_has_cpp_17-json_has_cpp_20","title":"JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20","text":"

      The library targets C++11, but also supports some features introduced in later C++ versions (e.g., std::string_view support for C++17). For these new features, the library implements some preprocessor checks to determine the C++ standard. By defining any of these symbols, the internal check is overridden and the provided C++ version is unconditionally assumed. This can be helpful for compilers that only implement parts of the standard and would be detected incorrectly.

      See full documentation of JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, and JSON_HAS_CPP_20.

      "},{"location":"features/macros/#json_has_filesystem-json_has_experimental_filesystem","title":"JSON_HAS_FILESYSTEM, JSON_HAS_EXPERIMENTAL_FILESYSTEM","text":"

      When compiling with C++17, the library provides conversions from and to std::filesystem::path. As compiler support for filesystem is limited, the library tries to detect whether <filesystem>/std::filesystem (JSON_HAS_FILESYSTEM) or <experimental/filesystem>/std::experimental::filesystem (JSON_HAS_EXPERIMENTAL_FILESYSTEM) should be used. To override the built-in check, define JSON_HAS_FILESYSTEM or JSON_HAS_EXPERIMENTAL_FILESYSTEM to 1.

      See full documentation of JSON_HAS_FILESYSTEM and JSON_HAS_EXPERIMENTAL_FILESYSTEM.

      "},{"location":"features/macros/#json_noexception","title":"JSON_NOEXCEPTION","text":"

      Exceptions can be switched off by defining the symbol JSON_NOEXCEPTION.

      See full documentation of JSON_NOEXCEPTION.

      "},{"location":"features/macros/#json_disable_enum_serialization","title":"JSON_DISABLE_ENUM_SERIALIZATION","text":"

      When defined, default parse and serialize functions for enums are excluded and have to be provided by the user, for example, using NLOHMANN_JSON_SERIALIZE_ENUM.

      See full documentation of JSON_DISABLE_ENUM_SERIALIZATION.

      "},{"location":"features/macros/#json_no_io","title":"JSON_NO_IO","text":"

      When defined, headers <cstdio>, <ios>, <iosfwd>, <istream>, and <ostream> are not included and parse functions relying on these headers are excluded. This is relevant for environment where these I/O functions are disallowed for security reasons (e.g., Intel Software Guard Extensions (SGX)).

      See full documentation of JSON_NO_IO.

      "},{"location":"features/macros/#json_skip_library_version_check","title":"JSON_SKIP_LIBRARY_VERSION_CHECK","text":"

      When defined, the library will not create a compiler warning when a different version of the library was already included.

      See full documentation of JSON_SKIP_LIBRARY_VERSION_CHECK.

      "},{"location":"features/macros/#json_skip_unsupported_compiler_check","title":"JSON_SKIP_UNSUPPORTED_COMPILER_CHECK","text":"

      When defined, the library will not create a compile error when a known unsupported compiler is detected. This allows to use the library with compilers that do not fully support C++11 and may only work if unsupported features are not used.

      See full documentation of JSON_SKIP_UNSUPPORTED_COMPILER_CHECK.

      "},{"location":"features/macros/#json_throw_userexception","title":"JSON_THROW_USER(exception)","text":"

      This macro overrides throw calls inside the library. The argument is the exception to be thrown.

      See full documentation of JSON_THROW_USER(exception).

      "},{"location":"features/macros/#json_try_user","title":"JSON_TRY_USER","text":"

      This macro overrides try calls inside the library.

      See full documentation of JSON_TRY_USER.

      "},{"location":"features/macros/#json_use_implicit_conversions","title":"JSON_USE_IMPLICIT_CONVERSIONS","text":"

      When defined to 0, implicit conversions are switched off. By default, implicit conversions are switched on.

      See full documentation of JSON_USE_IMPLICIT_CONVERSIONS.

      "},{"location":"features/macros/#nlohmann_define_derived_type_intrusivetype-base_type-member","title":"NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE(type, base_type, member...)","text":""},{"location":"features/macros/#nlohmann_define_derived_type_intrusive_with_defaulttype-base_type-member","title":"NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT(type, base_type, member...)","text":""},{"location":"features/macros/#nlohmann_define_derived_type_non_intrusivetype-base_type-member","title":"NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE(type, base_type, member...)","text":""},{"location":"features/macros/#nlohmann_define_derived_type_non_intrusive_with_defaulttype-base_type-member","title":"NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT(type, base_type, member...)","text":""},{"location":"features/macros/#nlohmann_define_type_intrusivetype-member","title":"NLOHMANN_DEFINE_TYPE_INTRUSIVE(type, member...)","text":"

      This macro can be used to simplify the serialization/deserialization of types if (1) want to use a JSON object as serialization and (2) want to use the member variable names as object keys in that object.

      The macro is to be defined inside the class/struct to create code for. Unlike NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, it can access private members. The first parameter is the name of the class/struct, and all remaining parameters name the members.

      See full documentation of NLOHMANN_DEFINE_TYPE_INTRUSIVE.

      "},{"location":"features/macros/#nlohmann_define_type_intrusive_with_defaulttype-member","title":"NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT(type, member...)","text":"

      This macro is similar to NLOHMANN_DEFINE_TYPE_INTRUSIVE. It will not throw an exception in from_json() due to a missing value in the JSON object, but can throw due to a mismatched type. The from_json() function default constructs an object and uses its values as the defaults when calling the value function.

      See full documentation of NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT.

      "},{"location":"features/macros/#nlohmann_define_type_intrusive_only_serializetype-member","title":"NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE(type, member...)","text":"

      This macro is similar to NLOHMANN_DEFINE_TYPE_INTRUSIVE except that it defines only the serialization code. This is useful when the user type does not have a default constructor and only the serialization is required.

      See full documentation of NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE.

      "},{"location":"features/macros/#nlohmann_define_type_non_intrusivetype-member","title":"NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(type, member...)","text":"

      This macro can be used to simplify the serialization/deserialization of types if (1) want to use a JSON object as serialization and (2) want to use the member variable names as object keys in that object.

      The macro is to be defined inside the namespace of the class/struct to create code for. Private members cannot be accessed. Use NLOHMANN_DEFINE_TYPE_INTRUSIVE in these scenarios. The first parameter is the name of the class/struct, and all remaining parameters name the members.

      See full documentation of NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE.

      "},{"location":"features/macros/#nlohmann_define_type_non_intrusive_with_defaulttype-member","title":"NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT(type, member...)","text":"

      This macro is similar to NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE. It will not throw an exception in from_json() due to a missing value in the JSON object, but can throw due to a mismatched type. The from_json() function default constructs an object and uses its values as the defaults when calling the value function.

      See full documentation of NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT.

      "},{"location":"features/macros/#nlohmann_define_type_non_intrusive_only_serializetype-member","title":"NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE(type, member...)","text":"

      This macro is similar to NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE except that it defines only the serialization code. This is useful when the user type does not have a default constructor and only the serialization is required.

      See full documentation of NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE.

      "},{"location":"features/macros/#nlohmann_json_serialize_enumtype","title":"NLOHMANN_JSON_SERIALIZE_ENUM(type, ...)","text":"

      This macro simplifies the serialization/deserialization of enum types. See Specializing enum conversion for more information.

      See full documentation of NLOHMANN_JSON_SERIALIZE_ENUM.

      "},{"location":"features/macros/#nlohmann_json_version_major-nlohmann_json_version_minor-nlohmann_json_version_patch","title":"NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH","text":"

      These macros are defined by the library and contain the version numbers according to Semantic Versioning 2.0.0.

      See full documentation of NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, and NLOHMANN_JSON_VERSION_PATCH.

      "},{"location":"features/merge_patch/","title":"JSON Merge Patch","text":"

      The library supports JSON Merge Patch (RFC 7386) as a patch format. The merge patch format is primarily intended for use with the HTTP PATCH method as a means of describing a set of modifications to a target resource's content. This function applies a merge patch to the current JSON value.

      Instead of using JSON Pointer to specify values to be manipulated, it describes the changes using a syntax that closely mimics the document being modified.

      Example

      The following code shows how a JSON Merge Patch is applied to a JSON document.

      #include <iostream>\n#include <nlohmann/json.hpp>\n#include <iomanip> // for std::setw\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // the original document\n    json document = R\"({\n                \"title\": \"Goodbye!\",\n                \"author\": {\n                    \"givenName\": \"John\",\n                    \"familyName\": \"Doe\"\n                },\n                \"tags\": [\n                    \"example\",\n                    \"sample\"\n                ],\n                \"content\": \"This will be unchanged\"\n            })\"_json;\n\n    // the patch\n    json patch = R\"({\n                \"title\": \"Hello!\",\n                \"phoneNumber\": \"+01-123-456-7890\",\n                \"author\": {\n                    \"familyName\": null\n                },\n                \"tags\": [\n                    \"example\"\n                ]\n            })\"_json;\n\n    // apply the patch\n    document.merge_patch(patch);\n\n    // output original and patched document\n    std::cout << std::setw(4) << document << std::endl;\n}\n

      Output:

      {\n    \"author\": {\n        \"givenName\": \"John\"\n    },\n    \"content\": \"This will be unchanged\",\n    \"phoneNumber\": \"+01-123-456-7890\",\n    \"tags\": [\n        \"example\"\n    ],\n    \"title\": \"Hello!\"\n}\n
      "},{"location":"features/namespace/","title":"nlohmann Namespace","text":"

      The 3.11.0 release introduced an inline namespace to allow different parts of a codebase to safely use different versions of the JSON library as long as they never exchange instances of library types.

      "},{"location":"features/namespace/#structure","title":"Structure","text":"

      The complete default namespace name is derived as follows:

      • The root namespace is always nlohmann.
      • The inline namespace starts with json_abi and is followed by serveral optional ABI tags according to the value of these ABI-affecting macros, in order:
        • JSON_DIAGNOSTICS defined non-zero appends _diag.
        • JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON defined non-zero appends _ldvcmp.
      • The inline namespace ends with the suffix _v followed by the 3 components of the version number separated by underscores. To omit the version component, see Disabling the version component below.

      For example, the namespace name for version 3.11.2 with JSON_DIAGNOSTICS defined to 1 is:

      nlohmann::json_abi_diag_v3_11_2\n
      "},{"location":"features/namespace/#purpose","title":"Purpose","text":"

      Several incompatibilities have been observed. Amongst the most common ones is linking code compiled with different definitions of JSON_DIAGNOSTICS. This is illustrated in the diagram below.

      graph\n    json[\"<strong>nlohmann_json (v3.10.5)</strong><br>JSON_DIAGNOSTICS=0\"]\n    json_diag[\"<strong>nlohmann_json (v3.10.5)</strong><br>JSON_DIAGNOSTICS=1\"]\n    library[\"<strong>some library</strong>\"]\n    app[\"<strong>application</strong>\"]\n\n    library --> json\n    app --> json_diag\n    app --> library

      In releases prior to 3.11.0, mixing any version of the JSON library with different JSON_DIAGNOSTICS settings would result in a crashing application. If some_library never passes instances of JSON library types to the application, this scenario became safe in version 3.11.0 and above due to the inline namespace yielding distinct symbol names.

      "},{"location":"features/namespace/#limitations","title":"Limitations","text":"

      Neither the compiler nor the linker will issue as much as a warning when translation units \u2013 intended to be linked together and that include different versions and/or configurations of the JSON library \u2013 exchange and use library types.

      There is an exception when forward declarations are used (i.e., when including json_fwd.hpp) in which case the linker may complain about undefined references.

      "},{"location":"features/namespace/#disabling-the-version-component","title":"Disabling the version component","text":"

      Different versions are not necessarily ABI-incompatible, but the project does not actively track changes in the ABI and recommends that all parts of a codebase exchanging library types be built with the same version. Users can, at their own risk, disable the version component of the linline namespace, allowing different versions \u2013 but not configurations \u2013 to be used in cases where the linker would otherwise output undefined reference errors.

      To do so, define NLOHMANN_JSON_NAMESPACE_NO_VERSION to 1.

      This applies to version 3.11.2 and above only, versions 3.11.0 and 3.11.1 can apply the technique described in the next section to emulate the effect of the NLOHMANN_JSON_NAMESPACE_NO_VERSION macro.

      Use at your own risk

      Disabling the namespace version component and mixing ABI-incompatible versions will result in crashes or incorrect behavior. You have been warned!

      "},{"location":"features/namespace/#disabling-the-inline-namespace-completely","title":"Disabling the inline namespace completely","text":"

      When interoperability with code using a pre-3.11.0 version of the library is required, users can, at their own risk restore the old namespace layout by redefining NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END as follows:

      #define NLOHMANN_JSON_NAMESPACE_BEGIN  namespace nlohmann {\n#define NLOHMANN_JSON_NAMESPACE_END    }\n

      Use at your own risk

      Overriding the namespace and mixing ABI-incompatible versions will result in crashes or incorrect behavior. You have been warned!

      "},{"location":"features/namespace/#version-history","title":"Version history","text":"
      • Introduced inline namespace (json_v3_11_0[_abi-tag]*) in version 3.11.0.
      • Changed structure of inline namespace in version 3.11.2.
      "},{"location":"features/object_order/","title":"Object Order","text":"

      The JSON standard defines objects as \"an unordered collection of zero or more name/value pairs\". As such, an implementation does not need to preserve any specific order of object keys.

      "},{"location":"features/object_order/#default-behavior-sort-keys","title":"Default behavior: sort keys","text":"

      The default type nlohmann::json uses a std::map to store JSON objects, and thus stores object keys sorted alphabetically.

      Example
      #include <iostream>\n#include \"json.hpp\"\n\nusing json = nlohmann::json;\n\nint main()\n{\n    json j;\n    j[\"one\"] = 1;\n    j[\"two\"] = 2;\n    j[\"three\"] = 3;\n\n    std::cout << j.dump(2) << '\\n';\n}\n

      Output:

      {\n  \"one\": 1,\n  \"three\": 3,\n  \"two\": 2\n}\n
      "},{"location":"features/object_order/#alternative-behavior-preserve-insertion-order","title":"Alternative behavior: preserve insertion order","text":"

      If you do want to preserve the insertion order, you can try the type nlohmann::ordered_json.

      Example
      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing ordered_json = nlohmann::ordered_json;\n\nint main()\n{\n    ordered_json j;\n    j[\"one\"] = 1;\n    j[\"two\"] = 2;\n    j[\"three\"] = 3;\n\n    std::cout << j.dump(2) << '\\n';\n}\n

      Output:

      {\n  \"one\": 1,\n  \"two\": 2,\n  \"three\": 3\n}\n

      Alternatively, you can use a more sophisticated ordered map like tsl::ordered_map (integration) or nlohmann::fifo_map (integration).

      "},{"location":"features/object_order/#notes-on-parsing","title":"Notes on parsing","text":"

      Note that you also need to call the right parse function when reading from a file. Assume file input.json contains the JSON object above:

      {\n  \"one\": 1,\n  \"two\": 2,\n  \"three\": 3\n}\n

      Right way

      The following code correctly calls the parse function from nlohmann::ordered_json:

      std::ifstream i(\"input.json\");\nauto j = nlohmann::ordered_json::parse(i);\nstd::cout << j.dump(2) << std::endl;\n

      The output will be:

      {\n  \"one\": 1,\n  \"two\": 2,\n  \"three\": 3\n}\n
      Wrong way

      The following code incorrectly calls the parse function from nlohmann::json which does not preserve the insertion order, but sorts object keys. Assigning the result to nlohmann::ordered_json compiles, but does not restore the order from the input file.

      std::ifstream i(\"input.json\");\nnlohmann::ordered_json j = nlohmann::json::parse(i);\nstd::cout << j.dump(2) << std::endl;\n

      The output will be:

      {\n  \"one\": 1,\n  \"three\": 3\n  \"two\": 2,\n}\n
      "},{"location":"features/binary_formats/","title":"Binary Formats","text":"

      Though JSON is a ubiquitous data format, it is not a very compact format suitable for data exchange, for instance over a network. Hence, the library supports

      • BJData (Binary JData),
      • BSON (Binary JSON),
      • CBOR (Concise Binary Object Representation),
      • MessagePack, and
      • UBJSON (Universal Binary JSON)

      to efficiently encode JSON values to byte vectors and to decode such vectors.

      "},{"location":"features/binary_formats/#comparison","title":"Comparison","text":""},{"location":"features/binary_formats/#completeness","title":"Completeness","text":"Format Serialization Deserialization BJData complete complete BSON incomplete: top-level value must be an object incomplete, but all JSON types are supported CBOR complete incomplete, but all JSON types are supported MessagePack complete complete UBJSON complete complete"},{"location":"features/binary_formats/#binary-values","title":"Binary values","text":"Format Binary values Binary subtypes BJData not supported not supported BSON supported supported CBOR supported supported MessagePack supported supported UBJSON not supported not supported

      See binary values for more information.

      "},{"location":"features/binary_formats/#sizes","title":"Sizes","text":"Format canada.json twitter.json citm_catalog.json jeopardy.json BJData 53.2 % 91.1 % 78.1 % 96.6 % BJData (size) 58.6 % 92.1 % 86.7 % 97.4 % BJData (size+tyoe) 58.6 % 92.1 % 86.5 % 97.4 % BSON 85.8 % 95.2 % 95.8 % 106.7 % CBOR 50.5 % 86.3 % 68.4 % 88.0 % MessagePack 50.5 % 86.0 % 68.5 % 87.9 % UBJSON 53.2 % 91.3 % 78.2 % 96.6 % UBJSON (size) 58.6 % 92.3 % 86.8 % 97.4 % UBJSON (size+type) 55.9 % 92.3 % 85.0 % 95.0 %

      Sizes compared to minified JSON value.

      "},{"location":"features/binary_formats/bjdata/","title":"BJData","text":"

      The BJData format was derived from and improved upon Universal Binary JSON(UBJSON) specification (Draft 12). Specifically, it introduces an optimized array container for efficient storage of N-dimensional packed arrays (ND-arrays); it also adds 4 new type markers - [u] - uint16, [m] - uint32, [M] - uint64 and [h] - float16 - to unambiguously map common binary numeric types; furthermore, it uses little-endian (LE) to store all numerics instead of big-endian (BE) as in UBJSON to avoid unnecessary conversions on commonly available platforms.

      Compared to other binary JSON-like formats such as MessagePack and CBOR, both BJData and UBJSON demonstrate a rare combination of being both binary and quasi-human-readable. This is because all semantic elements in BJData and UBJSON, including the data-type markers and name/string types are directly human-readable. Data stored in the BJData/UBJSON format are not only compact in size, fast to read/write, but also can be directly searched or read using simple processing.

      References

      • BJData Specification
      "},{"location":"features/binary_formats/bjdata/#serialization","title":"Serialization","text":"

      The library uses the following mapping from JSON values types to BJData types according to the BJData specification:

      JSON value type value/range BJData type marker null null null Z boolean true true T boolean false false F number_integer -9223372036854775808..-2147483649 int64 L number_integer -2147483648..-32769 int32 l number_integer -32768..-129 int16 I number_integer -128..127 int8 i number_integer 128..255 uint8 U number_integer 256..32767 int16 I number_integer 32768..65535 uint16 u number_integer 65536..2147483647 int32 l number_integer 2147483648..4294967295 uint32 m number_integer 4294967296..9223372036854775807 int64 L number_integer 9223372036854775808..18446744073709551615 uint64 M number_unsigned 0..127 int8 i number_unsigned 128..255 uint8 U number_unsigned 256..32767 int16 I number_unsigned 32768..65535 uint16 u number_unsigned 65536..2147483647 int32 l number_unsigned 2147483648..4294967295 uint32 m number_unsigned 4294967296..9223372036854775807 int64 L number_unsigned 9223372036854775808..18446744073709551615 uint64 M number_float any value float64 D string with shortest length indicator string S array see notes on optimized format/ND-array array [ object see notes on optimized format map {

      Complete mapping

      The mapping is complete in the sense that any JSON value type can be converted to a BJData value.

      Any BJData output created by to_bjdata can be successfully parsed by from_bjdata.

      Size constraints

      The following values can not be converted to a BJData value:

      • strings with more than 18446744073709551615 bytes, i.e., 2^{64}-1 bytes (theoretical)

      Unused BJData markers

      The following markers are not used in the conversion:

      • Z: no-op values are not created.
      • C: single-byte strings are serialized with S markers.

      NaN/infinity handling

      If NaN or Infinity are stored inside a JSON number, they are serialized properly. This behavior differs from the dump() function which serializes NaN or Infinity to null.

      Endianness

      A breaking difference between BJData and UBJSON is the endianness of numerical values. In BJData, all numerical data types (integers UiuImlML and floating-point values hdD) are stored in the little-endian (LE) byte order as opposed to big-endian as used by UBJSON. Adopting LE to store numeric records avoids unnecessary byte swapping on most modern computers where LE is used as the default byte order.

      Optimized formats

      Optimized formats for containers are supported via two parameters of to_bjdata:

      • Parameter use_size adds size information to the beginning of a container and removes the closing marker.
      • Parameter use_type further checks whether all elements of a container have the same type and adds the type marker to the beginning of the container. The use_type parameter must only be used together with use_size = true.

      Note that use_size = true alone may result in larger representations - the benefit of this parameter is that the receiving side is immediately informed of the number of elements in the container.

      ND-array optimized format

      BJData extends UBJSON's optimized array size marker to support ND-arrays of uniform numerical data types (referred to as packed arrays). For example, the 2-D uint8 integer array [[1,2],[3,4],[5,6]], stored as nested optimized array in UBJSON [ [$U#i2 1 2 [$U#i2 3 4 [$U#i2 5 6 ], can be further compressed in BJData to [$U#[$i#i2 2 3 1 2 3 4 5 6 or [$U#[i2 i3] 1 2 3 4 5 6.

      To maintain type and size information, ND-arrays are converted to JSON objects following the annotated array format (defined in the JData specification (Draft 3)), when parsed using from_bjdata. For example, the above 2-D uint8 array can be parsed and accessed as

      {\n    \"_ArrayType_\": \"uint8\",\n    \"_ArraySize_\": [2,3],\n    \"_ArrayData_\": [1,2,3,4,5,6]\n}\n

      Likewise, when a JSON object in the above form is serialzed using to_bjdata, it is automatically converted into a compact BJData ND-array. The only exception is, that when the 1-dimensional vector stored in \"_ArraySize_\" contains a single integer or two integers with one being 1, a regular 1-D optimized array is generated.

      The current version of this library does not yet support automatic detection of and conversion from a nested JSON array input to a BJData ND-array.

      Restrictions in optimized data types for arrays and objects

      Due to diminished space saving, hampered readability, and increased security risks, in BJData, the allowed data types following the $ marker in an optimized array and object container are restricted to non-zero-fixed-length data types. Therefore, the valid optimized type markers can only be one of UiuImlMLhdDC. This also means other variable ([{SH) or zero-length types (TFN) can not be used in an optimized array or object in BJData.

      Binary values

      If the JSON data contains the binary type, the value stored is a list of integers, as suggested by the BJData documentation. In particular, this means that the serialization and the deserialization of JSON containing binary values into BJData and back will result in a different JSON object.

      Example
      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\n// function to print BJData's diagnostic format\nvoid print_byte(uint8_t byte)\n{\n    if (32 < byte and byte < 128)\n    {\n        std::cout << (char)byte;\n    }\n    else\n    {\n        std::cout << (int)byte;\n    }\n}\n\nint main()\n{\n    // create a JSON value\n    json j = R\"({\"compact\": true, \"schema\": false})\"_json;\n\n    // serialize it to BJData\n    std::vector<std::uint8_t> v = json::to_bjdata(j);\n\n    // print the vector content\n    for (auto& byte : v)\n    {\n        print_byte(byte);\n    }\n    std::cout << std::endl;\n\n    // create an array of numbers\n    json array = {1, 2, 3, 4, 5, 6, 7, 8};\n\n    // serialize it to BJData using default representation\n    std::vector<std::uint8_t> v_array = json::to_bjdata(array);\n    // serialize it to BJData using size optimization\n    std::vector<std::uint8_t> v_array_size = json::to_bjdata(array, true);\n    // serialize it to BJData using type optimization\n    std::vector<std::uint8_t> v_array_size_and_type = json::to_bjdata(array, true, true);\n\n    // print the vector contents\n    for (auto& byte : v_array)\n    {\n        print_byte(byte);\n    }\n    std::cout << std::endl;\n\n    for (auto& byte : v_array_size)\n    {\n        print_byte(byte);\n    }\n    std::cout << std::endl;\n\n    for (auto& byte : v_array_size_and_type)\n    {\n        print_byte(byte);\n    }\n    std::cout << std::endl;\n}\n

      Output:

      {i7compactTi6schemaF}\n[i1i2i3i4i5i6i7i8]\n[#i8i1i2i3i4i5i6i7i8\n[$i#i812345678\n
      "},{"location":"features/binary_formats/bjdata/#deserialization","title":"Deserialization","text":"

      The library maps BJData types to JSON value types as follows:

      BJData type JSON value type marker no-op no value, next value is read N null null Z false false F true true T float16 number_float h float32 number_float d float64 number_float D uint8 number_unsigned U int8 number_integer i uint16 number_unsigned u int16 number_integer I uint32 number_unsigned m int32 number_integer l uint64 number_unsigned M int64 number_integer L string string S char string C array array (optimized values are supported) [ ND-array object (in JData annotated array format) [$.#[. object object (optimized values are supported) {

      Complete mapping

      The mapping is complete in the sense that any BJData value can be converted to a JSON value.

      Example
      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create byte vector\n    std::vector<std::uint8_t> v = {0x7B, 0x69, 0x07, 0x63, 0x6F, 0x6D, 0x70, 0x61,\n                                   0x63, 0x74, 0x54, 0x69, 0x06, 0x73, 0x63, 0x68,\n                                   0x65, 0x6D, 0x61, 0x69, 0x00, 0x7D\n                                  };\n\n    // deserialize it with BJData\n    json j = json::from_bjdata(v);\n\n    // print the deserialized JSON value\n    std::cout << std::setw(2) << j << std::endl;\n}\n

      Output:

      {\n  \"compact\": true,\n  \"schema\": 0\n}\n
      "},{"location":"features/binary_formats/bson/","title":"BSON","text":"

      BSON, short for Binary JSON, is a binary-encoded serialization of JSON-like documents. Like JSON, BSON supports the embedding of documents and arrays within other documents and arrays. BSON also contains extensions that allow representation of data types that are not part of the JSON spec. For example, BSON has a Date type and a BinData type.

      References

      • BSON Website - the main source on BSON
      • BSON Specification - the specification
      "},{"location":"features/binary_formats/bson/#serialization","title":"Serialization","text":"

      The library uses the following mapping from JSON values types to BSON types:

      JSON value type value/range BSON type marker null null null 0x0A boolean true, false boolean 0x08 number_integer -9223372036854775808..-2147483649 int64 0x12 number_integer -2147483648..2147483647 int32 0x10 number_integer 2147483648..9223372036854775807 int64 0x12 number_unsigned 0..2147483647 int32 0x10 number_unsigned 2147483648..9223372036854775807 int64 0x12 number_unsigned 9223372036854775808..18446744073709551615 -- -- number_float any value double 0x01 string any value string 0x02 array any value document 0x04 object any value document 0x03 binary any value binary 0x05

      Incomplete mapping

      The mapping is incomplete, since only JSON-objects (and things contained therein) can be serialized to BSON. Also, integers larger than 9223372036854775807 cannot be serialized to BSON, and the keys may not contain U+0000, since they are serialized a zero-terminated c-strings.

      Example
      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON value\n    json j = R\"({\"compact\": true, \"schema\": 0})\"_json;\n\n    // serialize it to BSON\n    std::vector<std::uint8_t> v = json::to_bson(j);\n\n    // print the vector content\n    for (auto& byte : v)\n    {\n        std::cout << \"0x\" << std::hex << std::setw(2) << std::setfill('0') << (int)byte << \" \";\n    }\n    std::cout << std::endl;\n}\n

      Output:

      0x1b 0x00 0x00 0x00 0x08 0x63 0x6f 0x6d 0x70 0x61 0x63 0x74 0x00 0x01 0x10 0x73 0x63 0x68 0x65 0x6d 0x61 0x00 0x00 0x00 0x00 0x00 0x00 \n
      "},{"location":"features/binary_formats/bson/#deserialization","title":"Deserialization","text":"

      The library maps BSON record types to JSON value types as follows:

      BSON type BSON marker byte JSON value type double 0x01 number_float string 0x02 string document 0x03 object array 0x04 array binary 0x05 binary undefined 0x06 unsupported ObjectId 0x07 unsupported boolean 0x08 boolean UTC Date-Time 0x09 unsupported null 0x0A null Regular Expr. 0x0B unsupported DB Pointer 0x0C unsupported JavaScript Code 0x0D unsupported Symbol 0x0E unsupported JavaScript Code 0x0F unsupported int32 0x10 number_integer Timestamp 0x11 unsupported 128-bit decimal float 0x13 unsupported Max Key 0x7F unsupported Min Key 0xFF unsupported

      Incomplete mapping

      The mapping is incomplete. The unsupported mappings are indicated in the table above.

      Example
      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create byte vector\n    std::vector<std::uint8_t> v = {0x1b, 0x00, 0x00, 0x00, 0x08, 0x63, 0x6f, 0x6d,\n                                   0x70, 0x61, 0x63, 0x74, 0x00, 0x01, 0x10, 0x73,\n                                   0x63, 0x68, 0x65, 0x6d, 0x61, 0x00, 0x00, 0x00,\n                                   0x00, 0x00, 0x00\n                                  };\n\n    // deserialize it with BSON\n    json j = json::from_bson(v);\n\n    // print the deserialized JSON value\n    std::cout << std::setw(2) << j << std::endl;\n}\n

      Output:

      {\n  \"compact\": true,\n  \"schema\": 0\n}\n
      "},{"location":"features/binary_formats/cbor/","title":"CBOR","text":"

      The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation.

      References

      • CBOR Website - the main source on CBOR
      • CBOR Playground - an interactive webpage to translate between JSON and CBOR
      • RFC 7049 - the CBOR specification
      "},{"location":"features/binary_formats/cbor/#serialization","title":"Serialization","text":"

      The library uses the following mapping from JSON values types to CBOR types according to the CBOR specification (RFC 7049):

      JSON value type value/range CBOR type first byte null null Null 0xF6 boolean true True 0xF5 boolean false False 0xF4 number_integer -9223372036854775808..-2147483649 Negative integer (8 bytes follow) 0x3B number_integer -2147483648..-32769 Negative integer (4 bytes follow) 0x3A number_integer -32768..-129 Negative integer (2 bytes follow) 0x39 number_integer -128..-25 Negative integer (1 byte follow) 0x38 number_integer -24..-1 Negative integer 0x20..0x37 number_integer 0..23 Integer 0x00..0x17 number_integer 24..255 Unsigned integer (1 byte follow) 0x18 number_integer 256..65535 Unsigned integer (2 bytes follow) 0x19 number_integer 65536..4294967295 Unsigned integer (4 bytes follow) 0x1A number_integer 4294967296..18446744073709551615 Unsigned integer (8 bytes follow) 0x1B number_unsigned 0..23 Integer 0x00..0x17 number_unsigned 24..255 Unsigned integer (1 byte follow) 0x18 number_unsigned 256..65535 Unsigned integer (2 bytes follow) 0x19 number_unsigned 65536..4294967295 Unsigned integer (4 bytes follow) 0x1A number_unsigned 4294967296..18446744073709551615 Unsigned integer (8 bytes follow) 0x1B number_float any value representable by a float Single-Precision Float 0xFA number_float any value NOT representable by a float Double-Precision Float 0xFB string length: 0..23 UTF-8 string 0x60..0x77 string length: 23..255 UTF-8 string (1 byte follow) 0x78 string length: 256..65535 UTF-8 string (2 bytes follow) 0x79 string length: 65536..4294967295 UTF-8 string (4 bytes follow) 0x7A string length: 4294967296..18446744073709551615 UTF-8 string (8 bytes follow) 0x7B array size: 0..23 array 0x80..0x97 array size: 23..255 array (1 byte follow) 0x98 array size: 256..65535 array (2 bytes follow) 0x99 array size: 65536..4294967295 array (4 bytes follow) 0x9A array size: 4294967296..18446744073709551615 array (8 bytes follow) 0x9B object size: 0..23 map 0xA0..0xB7 object size: 23..255 map (1 byte follow) 0xB8 object size: 256..65535 map (2 bytes follow) 0xB9 object size: 65536..4294967295 map (4 bytes follow) 0xBA object size: 4294967296..18446744073709551615 map (8 bytes follow) 0xBB binary size: 0..23 byte string 0x40..0x57 binary size: 23..255 byte string (1 byte follow) 0x58 binary size: 256..65535 byte string (2 bytes follow) 0x59 binary size: 65536..4294967295 byte string (4 bytes follow) 0x5A binary size: 4294967296..18446744073709551615 byte string (8 bytes follow) 0x5B

      Binary values with subtype are mapped to tagged values (0xD8..0xDB) depending on the subtype, followed by a byte string, see \"binary\" cells in the table above.

      Complete mapping

      The mapping is complete in the sense that any JSON value type can be converted to a CBOR value.

      NaN/infinity handling

      If NaN or Infinity are stored inside a JSON number, they are serialized properly. This behavior differs from the normal JSON serialization which serializes NaN or Infinity to null.

      Unused CBOR types

      The following CBOR types are not used in the conversion:

      • UTF-8 strings terminated by \"break\" (0x7F)
      • arrays terminated by \"break\" (0x9F)
      • maps terminated by \"break\" (0xBF)
      • byte strings terminated by \"break\" (0x5F)
      • date/time (0xC0..0xC1)
      • bignum (0xC2..0xC3)
      • decimal fraction (0xC4)
      • bigfloat (0xC5)
      • expected conversions (0xD5..0xD7)
      • simple values (0xE0..0xF3, 0xF8)
      • undefined (0xF7)
      • half-precision floats (0xF9)
      • break (0xFF)

      Tagged items

      Binary subtypes will be serialized as tagged items. See binary values for an example.

      Example
      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON value\n    json j = R\"({\"compact\": true, \"schema\": 0})\"_json;\n\n    // serialize it to CBOR\n    std::vector<std::uint8_t> v = json::to_cbor(j);\n\n    // print the vector content\n    for (auto& byte : v)\n    {\n        std::cout << \"0x\" << std::hex << std::setw(2) << std::setfill('0') << (int)byte << \" \";\n    }\n    std::cout << std::endl;\n}\n

      Output:

      0xa2 0x67 0x63 0x6f 0x6d 0x70 0x61 0x63 0x74 0xf5 0x66 0x73 0x63 0x68 0x65 0x6d 0x61 0x00 \n
      "},{"location":"features/binary_formats/cbor/#deserialization","title":"Deserialization","text":"

      The library maps CBOR types to JSON value types as follows:

      CBOR type JSON value type first byte Integer number_unsigned 0x00..0x17 Unsigned integer number_unsigned 0x18 Unsigned integer number_unsigned 0x19 Unsigned integer number_unsigned 0x1A Unsigned integer number_unsigned 0x1B Negative integer number_integer 0x20..0x37 Negative integer number_integer 0x38 Negative integer number_integer 0x39 Negative integer number_integer 0x3A Negative integer number_integer 0x3B Byte string binary 0x40..0x57 Byte string binary 0x58 Byte string binary 0x59 Byte string binary 0x5A Byte string binary 0x5B UTF-8 string string 0x60..0x77 UTF-8 string string 0x78 UTF-8 string string 0x79 UTF-8 string string 0x7A UTF-8 string string 0x7B UTF-8 string string 0x7F array array 0x80..0x97 array array 0x98 array array 0x99 array array 0x9A array array 0x9B array array 0x9F map object 0xA0..0xB7 map object 0xB8 map object 0xB9 map object 0xBA map object 0xBB map object 0xBF False false 0xF4 True true 0xF5 Null null 0xF6 Half-Precision Float number_float 0xF9 Single-Precision Float number_float 0xFA Double-Precision Float number_float 0xFB

      Incomplete mapping

      The mapping is incomplete in the sense that not all CBOR types can be converted to a JSON value. The following CBOR types are not supported and will yield parse errors:

      • date/time (0xC0..0xC1)
      • bignum (0xC2..0xC3)
      • decimal fraction (0xC4)
      • bigfloat (0xC5)
      • expected conversions (0xD5..0xD7)
      • simple values (0xE0..0xF3, 0xF8)
      • undefined (0xF7)

      Object keys

      CBOR allows map keys of any type, whereas JSON only allows strings as keys in object values. Therefore, CBOR maps with keys other than UTF-8 strings are rejected.

      Tagged items

      Tagged items will throw a parse error by default. They can be ignored by passing cbor_tag_handler_t::ignore to function from_cbor. They can be stored by passing cbor_tag_handler_t::store to function from_cbor.

      Example
      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create byte vector\n    std::vector<std::uint8_t> v = {0xa2, 0x67, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x63,\n                                   0x74, 0xf5, 0x66, 0x73, 0x63, 0x68, 0x65, 0x6d,\n                                   0x61, 0x00\n                                  };\n\n    // deserialize it with CBOR\n    json j = json::from_cbor(v);\n\n    // print the deserialized JSON value\n    std::cout << std::setw(2) << j << std::endl;\n}\n

      Output:

      {\n  \"compact\": true,\n  \"schema\": 0\n}\n
      "},{"location":"features/binary_formats/messagepack/","title":"MessagePack","text":"

      MessagePack is an efficient binary serialization format. It lets you exchange data among multiple languages like JSON. But it's faster and smaller. Small integers are encoded into a single byte, and typical short strings require only one extra byte in addition to the strings themselves.

      References

      • MessagePack website
      • MessagePack specification
      "},{"location":"features/binary_formats/messagepack/#serialization","title":"Serialization","text":"

      The library uses the following mapping from JSON values types to MessagePack types according to the MessagePack specification:

      JSON value type value/range MessagePack type first byte null null nil 0xC0 boolean true true 0xC3 boolean false false 0xC2 number_integer -9223372036854775808..-2147483649 int64 0xD3 number_integer -2147483648..-32769 int32 0xD2 number_integer -32768..-129 int16 0xD1 number_integer -128..-33 int8 0xD0 number_integer -32..-1 negative fixint 0xE0..0xFF number_integer 0..127 positive fixint 0x00..0x7F number_integer 128..255 uint 8 0xCC number_integer 256..65535 uint 16 0xCD number_integer 65536..4294967295 uint 32 0xCE number_integer 4294967296..18446744073709551615 uint 64 0xCF number_unsigned 0..127 positive fixint 0x00..0x7F number_unsigned 128..255 uint 8 0xCC number_unsigned 256..65535 uint 16 0xCD number_unsigned 65536..4294967295 uint 32 0xCE number_unsigned 4294967296..18446744073709551615 uint 64 0xCF number_float any value representable by a float float 32 0xCA number_float any value NOT representable by a float float 64 0xCB string length: 0..31 fixstr 0xA0..0xBF string length: 32..255 str 8 0xD9 string length: 256..65535 str 16 0xDA string length: 65536..4294967295 str 32 0xDB array size: 0..15 fixarray 0x90..0x9F array size: 16..65535 array 16 0xDC array size: 65536..4294967295 array 32 0xDD object size: 0..15 fix map 0x80..0x8F object size: 16..65535 map 16 0xDE object size: 65536..4294967295 map 32 0xDF binary size: 0..255 bin 8 0xC4 binary size: 256..65535 bin 16 0xC5 binary size: 65536..4294967295 bin 32 0xC6

      Complete mapping

      The mapping is complete in the sense that any JSON value type can be converted to a MessagePack value.

      Any MessagePack output created by to_msgpack can be successfully parsed by from_msgpack.

      Size constraints

      The following values can not be converted to a MessagePack value:

      • strings with more than 4294967295 bytes
      • byte strings with more than 4294967295 bytes
      • arrays with more than 4294967295 elements
      • objects with more than 4294967295 elements

      NaN/infinity handling

      If NaN or Infinity are stored inside a JSON number, they are serialized properly in contrast to the dump function which serializes NaN or Infinity to null.

      Example
      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON value\n    json j = R\"({\"compact\": true, \"schema\": 0})\"_json;\n\n    // serialize it to MessagePack\n    std::vector<std::uint8_t> v = json::to_msgpack(j);\n\n    // print the vector content\n    for (auto& byte : v)\n    {\n        std::cout << \"0x\" << std::hex << std::setw(2) << std::setfill('0') << (int)byte << \" \";\n    }\n    std::cout << std::endl;\n}\n

      Output:

      0x82 0xa7 0x63 0x6f 0x6d 0x70 0x61 0x63 0x74 0xc3 0xa6 0x73 0x63 0x68 0x65 0x6d 0x61 0x00 \n
      "},{"location":"features/binary_formats/messagepack/#deserialization","title":"Deserialization","text":"

      The library maps MessagePack types to JSON value types as follows:

      MessagePack type JSON value type first byte positive fixint number_unsigned 0x00..0x7F fixmap object 0x80..0x8F fixarray array 0x90..0x9F fixstr string 0xA0..0xBF nil null 0xC0 false false 0xC2 true true 0xC3 float 32 number_float 0xCA float 64 number_float 0xCB uint 8 number_unsigned 0xCC uint 16 number_unsigned 0xCD uint 32 number_unsigned 0xCE uint 64 number_unsigned 0xCF int 8 number_integer 0xD0 int 16 number_integer 0xD1 int 32 number_integer 0xD2 int 64 number_integer 0xD3 str 8 string 0xD9 str 16 string 0xDA str 32 string 0xDB array 16 array 0xDC array 32 array 0xDD map 16 object 0xDE map 32 object 0xDF bin 8 binary 0xC4 bin 16 binary 0xC5 bin 32 binary 0xC6 ext 8 binary 0xC7 ext 16 binary 0xC8 ext 32 binary 0xC9 fixext 1 binary 0xD4 fixext 2 binary 0xD5 fixext 4 binary 0xD6 fixext 8 binary 0xD7 fixext 16 binary 0xD8 negative fixint number_integer 0xE0-0xFF

      Info

      Any MessagePack output created by to_msgpack can be successfully parsed by from_msgpack.

      Example
      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create byte vector\n    std::vector<std::uint8_t> v = {0x82, 0xa7, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x63,\n                                   0x74, 0xc3, 0xa6, 0x73, 0x63, 0x68, 0x65, 0x6d,\n                                   0x61, 0x00\n                                  };\n\n    // deserialize it with MessagePack\n    json j = json::from_msgpack(v);\n\n    // print the deserialized JSON value\n    std::cout << std::setw(2) << j << std::endl;\n}\n

      Output:

      {\n  \"compact\": true,\n  \"schema\": 0\n}\n
      "},{"location":"features/binary_formats/ubjson/","title":"UBJSON","text":"

      Universal Binary JSON (UBJSON) is a binary form directly imitating JSON, but requiring fewer bytes of data. It aims to achieve the generality of JSON, combined with being much easier to process than JSON.

      References

      • UBJSON Website
      "},{"location":"features/binary_formats/ubjson/#serialization","title":"Serialization","text":"

      The library uses the following mapping from JSON values types to UBJSON types according to the UBJSON specification:

      JSON value type value/range UBJSON type marker null null null Z boolean true true T boolean false false F number_integer -9223372036854775808..-2147483649 int64 L number_integer -2147483648..-32769 int32 l number_integer -32768..-129 int16 I number_integer -128..127 int8 i number_integer 128..255 uint8 U number_integer 256..32767 int16 I number_integer 32768..2147483647 int32 l number_integer 2147483648..9223372036854775807 int64 L number_unsigned 0..127 int8 i number_unsigned 128..255 uint8 U number_unsigned 256..32767 int16 I number_unsigned 32768..2147483647 int32 l number_unsigned 2147483648..9223372036854775807 int64 L number_unsigned 2147483649..18446744073709551615 high-precision H number_float any value float64 D string with shortest length indicator string S array see notes on optimized format array [ object see notes on optimized format map {

      Complete mapping

      The mapping is complete in the sense that any JSON value type can be converted to a UBJSON value.

      Any UBJSON output created by to_ubjson can be successfully parsed by from_ubjson.

      Size constraints

      The following values can not be converted to a UBJSON value:

      • strings with more than 9223372036854775807 bytes (theoretical)

      Unused UBJSON markers

      The following markers are not used in the conversion:

      • Z: no-op values are not created.
      • C: single-byte strings are serialized with S markers.

      NaN/infinity handling

      If NaN or Infinity are stored inside a JSON number, they are serialized properly. This behavior differs from the dump() function which serializes NaN or Infinity to null.

      Optimized formats

      The optimized formats for containers are supported: Parameter use_size adds size information to the beginning of a container and removes the closing marker. Parameter use_type further checks whether all elements of a container have the same type and adds the type marker to the beginning of the container. The use_type parameter must only be used together with use_size = true.

      Note that use_size = true alone may result in larger representations - the benefit of this parameter is that the receiving side is immediately informed on the number of elements of the container.

      Binary values

      If the JSON data contains the binary type, the value stored is a list of integers, as suggested by the UBJSON documentation. In particular, this means that serialization and the deserialization of a JSON containing binary values into UBJSON and back will result in a different JSON object.

      Example
      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\n// function to print UBJSON's diagnostic format\nvoid print_byte(uint8_t byte)\n{\n    if (32 < byte and byte < 128)\n    {\n        std::cout << (char)byte;\n    }\n    else\n    {\n        std::cout << (int)byte;\n    }\n}\n\nint main()\n{\n    // create a JSON value\n    json j = R\"({\"compact\": true, \"schema\": false})\"_json;\n\n    // serialize it to UBJSON\n    std::vector<std::uint8_t> v = json::to_ubjson(j);\n\n    // print the vector content\n    for (auto& byte : v)\n    {\n        print_byte(byte);\n    }\n    std::cout << std::endl;\n\n    // create an array of numbers\n    json array = {1, 2, 3, 4, 5, 6, 7, 8};\n\n    // serialize it to UBJSON using default representation\n    std::vector<std::uint8_t> v_array = json::to_ubjson(array);\n    // serialize it to UBJSON using size optimization\n    std::vector<std::uint8_t> v_array_size = json::to_ubjson(array, true);\n    // serialize it to UBJSON using type optimization\n    std::vector<std::uint8_t> v_array_size_and_type = json::to_ubjson(array, true, true);\n\n    // print the vector contents\n    for (auto& byte : v_array)\n    {\n        print_byte(byte);\n    }\n    std::cout << std::endl;\n\n    for (auto& byte : v_array_size)\n    {\n        print_byte(byte);\n    }\n    std::cout << std::endl;\n\n    for (auto& byte : v_array_size_and_type)\n    {\n        print_byte(byte);\n    }\n    std::cout << std::endl;\n}\n

      Output:

      {i7compactTi6schemaF}\n[i1i2i3i4i5i6i7i8]\n[#i8i1i2i3i4i5i6i7i8\n[$i#i812345678\n
      "},{"location":"features/binary_formats/ubjson/#deserialization","title":"Deserialization","text":"

      The library maps UBJSON types to JSON value types as follows:

      UBJSON type JSON value type marker no-op no value, next value is read N null null Z false false F true true T float32 number_float d float64 number_float D uint8 number_unsigned U int8 number_integer i int16 number_integer I int32 number_integer l int64 number_integer L string string S char string C array array (optimized values are supported) [ object object (optimized values are supported) {

      Complete mapping

      The mapping is complete in the sense that any UBJSON value can be converted to a JSON value.

      Example
      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create byte vector\n    std::vector<std::uint8_t> v = {0x7B, 0x69, 0x07, 0x63, 0x6F, 0x6D, 0x70, 0x61,\n                                   0x63, 0x74, 0x54, 0x69, 0x06, 0x73, 0x63, 0x68,\n                                   0x65, 0x6D, 0x61, 0x69, 0x00, 0x7D\n                                  };\n\n    // deserialize it with UBJSON\n    json j = json::from_ubjson(v);\n\n    // print the deserialized JSON value\n    std::cout << std::setw(2) << j << std::endl;\n}\n

      Output:

      {\n  \"compact\": true,\n  \"schema\": 0\n}\n
      "},{"location":"features/element_access/","title":"Element Access","text":"

      There are many ways elements in a JSON value can be accessed:

      • unchecked access via operator[]
      • checked access via at
      • access with default value via value
      • iterators
      • JSON pointers
      "},{"location":"features/element_access/checked_access/","title":"Checked access: at","text":""},{"location":"features/element_access/checked_access/#overview","title":"Overview","text":"

      The at member function performs checked access; that is, it returns a reference to the desired value if it exists and throws a basic_json::out_of_range exception otherwise.

      Read access

      Consider the following JSON value:

      {\n    \"name\": \"Mary Smith\",\n    \"age\": 42,\n    \"hobbies\": [\"hiking\", \"reading\"]\n}\n

      Assume the value is parsed to a json variable j.

      expression value j {\"name\": \"Mary Smith\", \"age\": 42, \"hobbies\": [\"hiking\", \"reading\"]} j.at(\"name\") \"Mary Smith\" j.at(\"age\") 42 j.at(\"hobbies\") [\"hiking\", \"reading\"] j.at(\"hobbies\").at(0) \"hiking\" j.at(\"hobbies\").at(1) \"reading\"

      The return value is a reference, so it can be modified by the original value.

      Write access
      j.at(\"name\") = \"John Smith\";\n

      This code produces the following JSON value:

      {\n    \"name\": \"John Smith\",\n    \"age\": 42,\n    \"hobbies\": [\"hiking\", \"reading\"]\n}\n

      When accessing an invalid index (i.e., an index greater than or equal to the array size) or the passed object key is non-existing, an exception is thrown.

      Accessing via invalid index or missing key
      j.at(\"hobbies\").at(3) = \"cooking\";\n

      This code produces the following exception:

      [json.exception.out_of_range.401] array index 3 is out of range\n

      When you extended diagnostic messages are enabled by defining JSON_DIAGNOSTICS, the exception further gives information where the key or index is missing or out of range.

      [json.exception.out_of_range.401] (/hobbies) array index 3 is out of range\n
      "},{"location":"features/element_access/checked_access/#notes","title":"Notes","text":"

      Exceptions

      • at can only be used with objects (with a string argument) or with arrays (with a numeric argument). For other types, a basic_json::type_error is thrown.
      • basic_json::out_of_range exception exceptions are thrown if the provided key is not found in an object or the provided index is invalid.
      "},{"location":"features/element_access/checked_access/#summary","title":"Summary","text":"scenario non-const value const value access to existing object key reference to existing value is returned const reference to existing value is returned access to valid array index reference to existing value is returned const reference to existing value is returned access to non-existing object key basic_json::out_of_range exception is thrown basic_json::out_of_range exception is thrown access to invalid array index basic_json::out_of_range exception is thrown basic_json::out_of_range exception is thrown"},{"location":"features/element_access/default_value/","title":"Access with default value: value","text":""},{"location":"features/element_access/default_value/#overview","title":"Overview","text":"

      In many situations such as configuration files, missing values are not exceptional, but may be treated as if a default value was present.

      Example

      Consider the following JSON value:

      {\n    \"logOutput\": \"result.log\",\n    \"append\": true\n}\n

      Assume the value is parsed to a json variable j.

      expression value j {\"logOutput\": \"result.log\", \"append\": true} j.value(\"logOutput\", \"logfile.log\") \"result.log\" j.value(\"append\", true) true j.value(\"append\", false) true j.value(\"logLevel\", \"verbose\") \"verbose\""},{"location":"features/element_access/default_value/#note","title":"Note","text":"

      Exceptions

      • value can only be used with objects. For other types, a basic_json::type_error is thrown.
      "},{"location":"features/element_access/unchecked_access/","title":"Unchecked access: operator[]","text":""},{"location":"features/element_access/unchecked_access/#overview","title":"Overview","text":"

      Elements in a JSON object and a JSON array can be accessed via operator[] similar to a std::map and a std::vector, respectively.

      Read access

      Consider the following JSON value:

      {\n    \"name\": \"Mary Smith\",\n    \"age\": 42,\n    \"hobbies\": [\"hiking\", \"reading\"]\n}\n

      Assume the value is parsed to a json variable j.

      expression value j {\"name\": \"Mary Smith\", \"age\": 42, \"hobbies\": [\"hiking\", \"reading\"]} j[\"name\"] \"Mary Smith\" j[\"age\"] 42 j[\"hobbies\"] [\"hiking\", \"reading\"] j[\"hobbies\"][0] \"hiking\" j[\"hobbies\"][1] \"reading\"

      The return value is a reference, so it can modify the original value. In case the passed object key is non-existing, a null value is inserted which can be immediately be overwritten.

      Write access
      j[\"name\"] = \"John Smith\";\nj[\"maidenName\"] = \"Jones\";\n

      This code produces the following JSON value:

      {\n    \"name\": \"John Smith\",\n    \"maidenName\": \"Jones\",\n    \"age\": 42,\n    \"hobbies\": [\"hiking\", \"reading\"]\n}\n

      When accessing an invalid index (i.e., an index greater than or equal to the array size), the JSON array is resized such that the passed index is the new maximal index. Intermediate values are filled with null.

      Filling up arrays with null values
      j[\"hobbies\"][0] = \"running\";\nj[\"hobbies\"][3] = \"cooking\";\n

      This code produces the following JSON value:

      {\n    \"name\": \"John Smith\",\n    \"maidenName\": \"Jones\",\n    \"age\": 42,\n    \"hobbies\": [\"running\", \"reading\", null, \"cooking\"]\n}\n
      "},{"location":"features/element_access/unchecked_access/#notes","title":"Notes","text":"

      Design rationale

      The library behaves differently to std::vector and std::map:

      • std::vector::operator[] never inserts a new element.
      • std::map::operator[] is not available for const values.

      The type json wraps all JSON value types. It would be impossible to remove operator[] for const objects. At the same time, inserting elements for non-const objects is really convenient as it avoids awkward insert calls. To this end, we decided to have an inserting non-const behavior for both arrays and objects.

      Info

      The access is unchecked. In case the passed object key does not exist or the passed array index is invalid, no exception is thrown.

      Danger

      • It is undefined behavior to access a const object with a non-existing key.
      • It is undefined behavior to access a const array with an invalid index.
      • In debug mode, an assertion will fire in both cases. You can disable assertions by defining the preprocessor symbol NDEBUG or redefine the macro JSON_ASSERT(x). See the documentation on runtime assertions for more information.

      Exceptions

      operator[] can only be used with objects (with a string argument) or with arrays (with a numeric argument). For other types, a basic_json::type_error is thrown.

      "},{"location":"features/element_access/unchecked_access/#summary","title":"Summary","text":"scenario non-const value const value access to existing object key reference to existing value is returned const reference to existing value is returned access to valid array index reference to existing value is returned const reference to existing value is returned access to non-existing object key reference to newly inserted null value is returned undefined behavior; runtime assertion in debug mode access to invalid array index reference to newly inserted null value is returned; any index between previous maximal index and passed index are filled with null undefined behavior; runtime assertion in debug mode"},{"location":"features/parsing/","title":"Parsing","text":"

      Note

      This page is under construction.

      "},{"location":"features/parsing/#input","title":"Input","text":""},{"location":"features/parsing/#sax-vs-dom-parsing","title":"SAX vs. DOM parsing","text":""},{"location":"features/parsing/#exceptions","title":"Exceptions","text":"

      See parsing and exceptions.

      "},{"location":"features/parsing/json_lines/","title":"JSON Lines","text":"

      The JSON Lines format is a text format of newline-delimited JSON. In particular:

      1. The input must be UTF-8 encoded.
      2. Every line must be a valid JSON value.
      3. The line separator must be \\n. As \\r is silently ignored, \\r\\n is also supported.
      4. The final character may be \\n, but is not required to be one.

      JSON Text example

      {\"name\": \"Gilbert\", \"wins\": [[\"straight\", \"7\u2663\"], [\"one pair\", \"10\u2665\"]]}\n{\"name\": \"Alexa\", \"wins\": [[\"two pair\", \"4\u2660\"], [\"two pair\", \"9\u2660\"]]}\n{\"name\": \"May\", \"wins\": []}\n{\"name\": \"Deloise\", \"wins\": [[\"three of a kind\", \"5\u2663\"]]}\n

      JSON Lines input with more than one value is treated as invalid JSON by the parse or accept functions. To process it line by line, functions like std::getline can be used:

      Example: Parse JSON Text input line by line

      The example below demonstrates how JSON Lines can be processed.

      #include <sstream>\n#include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // JSON Lines (see https://jsonlines.org)\n    std::stringstream input;\n    input << R\"({\"name\": \"Gilbert\", \"wins\": [[\"straight\", \"7\u2663\"], [\"one pair\", \"10\u2665\"]]}\n{\"name\": \"Alexa\", \"wins\": [[\"two pair\", \"4\u2660\"], [\"two pair\", \"9\u2660\"]]}\n{\"name\": \"May\", \"wins\": []}\n{\"name\": \"Deloise\", \"wins\": [[\"three of a kind\", \"5\u2663\"]]}\n)\";\n\n    std::string line;\n    while (std::getline(input, line))\n    {\n        std::cout << json::parse(line) << std::endl;\n    }\n}\n

      Output:

      {\"name\":\"Gilbert\",\"wins\":[[\"straight\",\"7\u2663\"],[\"one pair\",\"10\u2665\"]]}\n{\"name\":\"Alexa\",\"wins\":[[\"two pair\",\"4\u2660\"],[\"two pair\",\"9\u2660\"]]}\n{\"name\":\"May\",\"wins\":[]}\n{\"name\":\"Deloise\",\"wins\":[[\"three of a kind\",\"5\u2663\"]]}\n

      Note

      Using operator>> like

      json j;\nwhile (input >> j)\n{\n    std::cout << j << std::endl;\n}\n

      with a JSON Lines input does not work, because the parser will try to parse one value after the last one.

      "},{"location":"features/parsing/parse_exceptions/","title":"Parsing and Exceptions","text":"

      When the input is not valid JSON, an exception of type parse_error is thrown. This exception contains the position in the input where the error occurred, together with a diagnostic message and the last read input token. The exceptions page contains a list of examples for parse error exceptions. In case you process untrusted input, always enclose your code with a try/catch block, like

      json j;\ntry\n{\n    j = json::parse(my_input);\n}\ncatch (json::parse_error& ex)\n{\n    std::cerr << \"parse error at byte \" << ex.byte << std::endl;\n}\n

      In case exceptions are undesired or not supported by the environment, there are different ways to proceed:

      "},{"location":"features/parsing/parse_exceptions/#switch-off-exceptions","title":"Switch off exceptions","text":"

      The parse() function accepts a bool parameter allow_exceptions which controls whether an exception is thrown when a parse error occurs (true, default) or whether a discarded value should be returned (false).

      json j = json::parse(my_input, nullptr, false);\nif (j.is_discarded())\n{\n    std::cerr << \"parse error\" << std::endl;\n}\n

      Note there is no diagnostic information available in this scenario.

      "},{"location":"features/parsing/parse_exceptions/#use-accept-function","title":"Use accept() function","text":"

      Alternatively, function accept() can be used which does not return a json value, but a bool indicating whether the input is valid JSON.

      if (!json::accept(my_input))\n{\n    std::cerr << \"parse error\" << std::endl;\n}\n

      Again, there is no diagnostic information available.

      "},{"location":"features/parsing/parse_exceptions/#user-defined-sax-interface","title":"User-defined SAX interface","text":"

      Finally, you can implement the SAX interface and decide what should happen in case of a parse error.

      This function has the following interface:

      bool parse_error(std::size_t position,\n                 const std::string& last_token,\n                 const json::exception& ex);\n

      The return value indicates whether the parsing should continue, so the function should usually return false.

      Example
      #include <iostream>\n#include \"json.hpp\"\n\nusing json = nlohmann::json;\n\nclass sax_no_exception : public nlohmann::detail::json_sax_dom_parser<json>\n{\n  public:\n    sax_no_exception(json& j)\n      : nlohmann::detail::json_sax_dom_parser<json>(j, false)\n    {}\n\n    bool parse_error(std::size_t position,\n                     const std::string& last_token,\n                     const json::exception& ex)\n    {\n        std::cerr << \"parse error at input byte \" << position << \"\\n\"\n                  << ex.what() << \"\\n\"\n                  << \"last read: \\\"\" << last_token << \"\\\"\"\n                  << std::endl;\n        return false;\n    }\n};\n\nint main()\n{\n    std::string myinput = \"[1,2,3,]\";\n\n    json result;\n    sax_no_exception sax(result);\n\n    bool parse_result = json::sax_parse(myinput, &sax);\n    if (!parse_result)\n    {\n        std::cerr << \"parsing unsuccessful!\" << std::endl;\n    }\n\n    std::cout << \"parsed value: \" << result << std::endl;\n}\n

      Output:

      parse error at input byte 8\n[json.exception.parse_error.101] parse error at line 1, column 8: syntax error while parsing value - unexpected ']'; expected '[', '{', or a literal\nlast read: \"3,]\"\nparsing unsuccessful!\nparsed value: [1,2,3]\n
      "},{"location":"features/parsing/parser_callbacks/","title":"Parser Callbacks","text":""},{"location":"features/parsing/parser_callbacks/#overview","title":"Overview","text":"

      With a parser callback function, the result of parsing a JSON text can be influenced. When passed to parse, it is called on certain events (passed as parse_event_t via parameter event) with a set recursion depth depth and context JSON value parsed. The return value of the callback function is a boolean indicating whether the element that emitted the callback shall be kept or not.

      The type of the callback function is:

      template<typename BasicJsonType>\nusing parser_callback_t =\n    std::function<bool(int depth, parse_event_t event, BasicJsonType& parsed)>;\n
      "},{"location":"features/parsing/parser_callbacks/#callback-event-types","title":"Callback event types","text":"

      We distinguish six scenarios (determined by the event type) in which the callback function can be called. The following table describes the values of the parameters depth, event, and parsed.

      parameter event description parameter depth parameter parsed parse_event_t::object_start the parser read { and started to process a JSON object depth of the parent of the JSON object a JSON value with type discarded parse_event_t::key the parser read a key of a value in an object depth of the currently parsed JSON object a JSON string containing the key parse_event_t::object_end the parser read } and finished processing a JSON object depth of the parent of the JSON object the parsed JSON object parse_event_t::array_start the parser read [ and started to process a JSON array depth of the parent of the JSON array a JSON value with type discarded parse_event_t::array_end the parser read ] and finished processing a JSON array depth of the parent of the JSON array the parsed JSON array parse_event_t::value the parser finished reading a JSON value depth of the value the parsed JSON value Example

      When parsing the following JSON text,

      {\n    \"name\": \"Berlin\",\n    \"location\": [\n        52.519444,\n        13.406667\n    ]\n}\n

      these calls are made to the callback function:

      event depth parsed object_start 0 discarded key 1 \"name\" value 1 \"Berlin\" key 1 \"location\" array_start 1 discarded value 2 52.519444 value 2 13.406667 array_end 1 [52.519444,13.406667] object_end 0 {\"location\":[52.519444,13.406667],\"name\":\"Berlin\"}"},{"location":"features/parsing/parser_callbacks/#return-value","title":"Return value","text":"

      Discarding a value (i.e., returning false) has different effects depending on the context in which the function was called:

      • Discarded values in structured types are skipped. That is, the parser will behave as if the discarded value was never read.
      • In case a value outside a structured type is skipped, it is replaced with null. This case happens if the top-level element is skipped.
      Example

      The example below demonstrates the parse() function with and without callback function.

      #include <iostream>\n#include <iomanip>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, 38793]\n        }\n    }\n    )\";\n\n    // parse and serialize JSON\n    json j_complete = json::parse(text);\n    std::cout << std::setw(4) << j_complete << \"\\n\\n\";\n\n    // define parser callback\n    json::parser_callback_t cb = [](int depth, json::parse_event_t event, json & parsed)\n    {\n        // skip object elements with key \"Thumbnail\"\n        if (event == json::parse_event_t::key and parsed == json(\"Thumbnail\"))\n        {\n            return false;\n        }\n        else\n        {\n            return true;\n        }\n    };\n\n    // parse (with callback) and serialize JSON\n    json j_filtered = json::parse(text, cb);\n    std::cout << std::setw(4) << j_filtered << '\\n';\n}\n

      Output:

      {\n    \"Image\": {\n        \"Animated\": false,\n        \"Height\": 600,\n        \"IDs\": [\n            116,\n            943,\n            234,\n            38793\n        ],\n        \"Thumbnail\": {\n            \"Height\": 125,\n            \"Url\": \"http://www.example.com/image/481989943\",\n            \"Width\": 100\n        },\n        \"Title\": \"View from 15th Floor\",\n        \"Width\": 800\n    }\n}\n\n{\n    \"Image\": {\n        \"Animated\": false,\n        \"Height\": 600,\n        \"IDs\": [\n            116,\n            943,\n            234,\n            38793\n        ],\n        \"Title\": \"View from 15th Floor\",\n        \"Width\": 800\n    }\n}\n
      "},{"location":"features/parsing/sax_interface/","title":"SAX Interface","text":"

      The library uses a SAX-like interface with the following functions:

      classDiagram\n\nclass sax_t [\"json::sax_t\"] {\n    <<interface>>\n    +bool null()*\n\n    +bool boolean(bool val)*\n\n    +bool number_integer(number_integer_t val)*\n    +bool number_unsigned(number_unsigned_t val)*\n\n    +bool number_float(number_float_t val, const string_t& s)*\n\n    +bool string(string_t& val)*\n    +bool binary(binary_t& val)*\n\n    +bool start_object(std::size_t elements)*\n    +bool end_object()*\n    +bool start_array(std::size_t elements)*\n    +bool end_array()*\n    +bool key(string_t& val)*\n\n    +bool parse_error(std::size_t position, const std::string& last_token, const json::exception& ex)*\n}
      // called when null is parsed\nbool null();\n\n// called when a boolean is parsed; value is passed\nbool boolean(bool val);\n\n// called when a signed or unsigned integer number is parsed; value is passed\nbool number_integer(number_integer_t val);\nbool number_unsigned(number_unsigned_t val);\n\n// called when a floating-point number is parsed; value and original string is passed\nbool number_float(number_float_t val, const string_t& s);\n\n// called when a string is parsed; value is passed and can be safely moved away\nbool string(string_t& val);\n// called when a binary value is parsed; value is passed and can be safely moved away\nbool binary(binary& val);\n\n// called when an object or array begins or ends, resp. The number of elements is passed (or -1 if not known)\nbool start_object(std::size_t elements);\nbool end_object();\nbool start_array(std::size_t elements);\nbool end_array();\n// called when an object key is parsed; value is passed and can be safely moved away\nbool key(string_t& val);\n\n// called when a parse error occurs; byte position, the last token, and an exception is passed\nbool parse_error(std::size_t position, const std::string& last_token, const json::exception& ex);\n

      The return value of each function determines whether parsing should proceed.

      To implement your own SAX handler, proceed as follows:

      1. Implement the SAX interface in a class. You can use class nlohmann::json_sax<json> as base class, but you can also use any class where the functions described above are implemented and public.
      2. Create an object of your SAX interface class, e.g. my_sax.
      3. Call bool json::sax_parse(input, &my_sax); where the first parameter can be any input like a string or an input stream and the second parameter is a pointer to your SAX interface.

      Note the sax_parse function only returns a bool indicating the result of the last executed SAX event. It does not return json value - it is up to you to decide what to do with the SAX events. Furthermore, no exceptions are thrown in case of a parse error - it is up to you what to do with the exception object passed to your parse_error implementation. Internally, the SAX interface is used for the DOM parser (class json_sax_dom_parser) as well as the acceptor (json_sax_acceptor), see file json_sax.hpp.

      "},{"location":"features/parsing/sax_interface/#see-also","title":"See also","text":"
      • json_sax - documentation of the SAX interface
      • sax_parse - SAX parser
      "},{"location":"features/types/","title":"Types","text":"

      This page gives an overview how JSON values are stored and how this can be configured.

      "},{"location":"features/types/#overview","title":"Overview","text":"

      By default, JSON values are stored as follows:

      JSON type C++ type object std::map<std::string, basic_json> array std::vector<basic_json> null std::nullptr_t string std::string boolean bool number std::int64_t, std::uint64_t, and double

      Note there are three different types for numbers - when parsing JSON text, the best fitting type is chosen.

      "},{"location":"features/types/#storage","title":"Storage","text":"
      classDiagram\n\nclass value_t {\n    <<enumeration>>\n    null\n    object\n    array\n    string\n    boolean\n    number_integer\n    number_unsigned\n    number_float\n    binary\n    discarded\n}\n\nclass json_value {\n    <<union>>\n    object_t* object\n    array_t* array\n    string_t* string\n    binary_t* binary\n    boolean_t boolean\n    number_integer_t number_integer\n    number_unsigned_t number_unsigned\n    number_float_t number_float\n}\n\nclass basic_json {\n    -value_t m_type\n    -json_value m_value\n    +typedef object_t\n    +typedef array_t\n    +typedef binary_t\n    +typedef boolean_t\n    +typedef number_integer_t\n    +typedef number_unsigned_t\n    +typedef number_float_t\n}\n\nbasic_json .. json_value\nbasic_json .. value_t
      "},{"location":"features/types/#template-arguments","title":"Template arguments","text":"

      The data types to store a JSON value are derived from the template arguments passed to class basic_json:

      template<\n    template<typename U, typename V, typename... Args> class ObjectType = std::map,\n    template<typename U, typename... Args> class ArrayType = std::vector,\n    class StringType = std::string,\n    class BooleanType = bool,\n    class NumberIntegerType = std::int64_t,\n    class NumberUnsignedType = std::uint64_t,\n    class NumberFloatType = double,\n    template<typename U> class AllocatorType = std::allocator,\n    template<typename T, typename SFINAE = void> class JSONSerializer = adl_serializer,\n    class BinaryType = std::vector<std::uint8_t>\n>\nclass basic_json;\n

      Type json is an alias for basic_json<> and uses the default types.

      From the template arguments, the following types are derived:

      using object_comparator_t = std::less<>;\nusing object_t = ObjectType<StringType, basic_json, object_comparator_t,\n                   AllocatorType<std::pair<const StringType, basic_json>>>;\n\nusing array_t = ArrayType<basic_json, AllocatorType<basic_json>>;\n\nusing string_t = StringType;\n\nusing boolean_t = BooleanType;\n\nusing number_integer_t = NumberIntegerType;\nusing number_unsigned_t = NumberUnsignedType;\nusing number_float_t = NumberFloatType;\n\nusing binary_t = nlohmann::byte_container_with_subtype<BinaryType>;\n
      "},{"location":"features/types/#objects","title":"Objects","text":"

      RFC 8259 describes JSON objects as follows:

      An object is an unordered collection of zero or more name/value pairs, where a name is a string and a value is a string, number, boolean, null, object, or array.

      "},{"location":"features/types/#default-type","title":"Default type","text":"

      With the default values for ObjectType (std::map), StringType (std::string), and AllocatorType (std::allocator), the default value for object_t is:

      std::map<\n  std::string, // key_type\n  basic_json, // value_type\n  std::less<>, // key_compare\n  std::allocator<std::pair<const std::string, basic_json>> // allocator_type\n>\n
      "},{"location":"features/types/#behavior","title":"Behavior","text":"

      The choice of object_t influences the behavior of the JSON class. With the default type, objects have the following behavior:

      • When all names are unique, objects will be interoperable in the sense that all software implementations receiving that object will agree on the name-value mappings.
      • When the names within an object are not unique, it is unspecified which one of the values for a given key will be chosen. For instance, {\"key\": 2, \"key\": 1} could be equal to either {\"key\": 1} or {\"key\": 2}.
      • Internally, name/value pairs are stored in lexicographical order of the names. Objects will also be serialized (see dump) in this order. For instance, both {\"b\": 1, \"a\": 2} and {\"a\": 2, \"b\": 1} will be stored and serialized as {\"a\": 2, \"b\": 1}.
      • When comparing objects, the order of the name/value pairs is irrelevant. This makes objects interoperable in the sense that they will not be affected by these differences. For instance, {\"b\": 1, \"a\": 2} and {\"a\": 2, \"b\": 1} will be treated as equal.
      "},{"location":"features/types/#key-order","title":"Key order","text":"

      The order name/value pairs are added to the object is not preserved by the library. Therefore, iterating an object may return name/value pairs in a different order than they were originally stored. In fact, keys will be traversed in alphabetical order as std::map with std::less is used by default. Please note this behavior conforms to RFC 8259, because any order implements the specified \"unordered\" nature of JSON objects.

      "},{"location":"features/types/#limits","title":"Limits","text":"

      RFC 8259 specifies:

      An implementation may set limits on the maximum depth of nesting.

      In this class, the object's limit of nesting is not explicitly constrained. However, a maximum depth of nesting may be introduced by the compiler or runtime environment. A theoretical limit can be queried by calling the max_size function of a JSON object.

      "},{"location":"features/types/#storage_1","title":"Storage","text":"

      Objects are stored as pointers in a basic_json type. That is, for any access to object values, a pointer of type object_t* must be dereferenced.

      "},{"location":"features/types/#arrays","title":"Arrays","text":"

      RFC 8259 describes JSON arrays as follows:

      An array is an ordered sequence of zero or more values.

      "},{"location":"features/types/#default-type_1","title":"Default type","text":"

      With the default values for ArrayType (std::vector) and AllocatorType (std::allocator), the default value for array_t is:

      std::vector<\n  basic_json, // value_type\n  std::allocator<basic_json> // allocator_type\n>\n
      "},{"location":"features/types/#limits_1","title":"Limits","text":"

      RFC 8259 specifies:

      An implementation may set limits on the maximum depth of nesting.

      In this class, the array's limit of nesting is not explicitly constrained. However, a maximum depth of nesting may be introduced by the compiler or runtime environment. A theoretical limit can be queried by calling the max_size function of a JSON array.

      "},{"location":"features/types/#storage_2","title":"Storage","text":"

      Arrays are stored as pointers in a basic_json type. That is, for any access to array values, a pointer of type array_t* must be dereferenced.

      "},{"location":"features/types/#strings","title":"Strings","text":"

      RFC 8259 describes JSON strings as follows:

      A string is a sequence of zero or more Unicode characters.

      Unicode values are split by the JSON class into byte-sized characters during deserialization.

      "},{"location":"features/types/#default-type_2","title":"Default type","text":"

      With the default values for StringType (std::string), the default value for string_t is std::string.

      "},{"location":"features/types/#encoding","title":"Encoding","text":"

      Strings are stored in UTF-8 encoding. Therefore, functions like std::string::size() or std::string::length() return the number of bytes in the string rather than the number of characters or glyphs.

      "},{"location":"features/types/#string-comparison","title":"String comparison","text":"

      RFC 8259 states:

      Software implementations are typically required to test names of object members for equality. Implementations that transform the textual representation into sequences of Unicode code units and then perform the comparison numerically, code unit by code unit, are interoperable in the sense that implementations will agree in all cases on equality or inequality of two strings. For example, implementations that compare strings with escaped characters unconverted may incorrectly find that \"a\\\\b\" and \"a\\u005Cb\" are not equal.

      This implementation is interoperable as it does compare strings code unit by code unit.

      "},{"location":"features/types/#storage_3","title":"Storage","text":"

      String values are stored as pointers in a basic_json type. That is, for any access to string values, a pointer of type string_t* must be dereferenced.

      "},{"location":"features/types/#booleans","title":"Booleans","text":"

      RFC 8259 implicitly describes a boolean as a type which differentiates the two literals true and false.

      "},{"location":"features/types/#default-type_3","title":"Default type","text":"

      With the default values for BooleanType (bool), the default value for boolean_t is bool.

      "},{"location":"features/types/#storage_4","title":"Storage","text":"

      Boolean values are stored directly inside a basic_json type.

      "},{"location":"features/types/#numbers","title":"Numbers","text":"

      See the number handling article for a detailed discussion on how numbers are handled by this library.

      RFC 8259 describes numbers as follows:

      The representation of numbers is similar to that used in most programming languages. A number is represented in base 10 using decimal digits. It contains an integer component that may be prefixed with an optional minus sign, which may be followed by a fraction part and/or an exponent part. Leading zeros are not allowed. (...) Numeric values that cannot be represented in the grammar below (such as Infinity and NaN) are not permitted.

      This description includes both integer and floating-point numbers. However, C++ allows more precise storage if it is known whether the number is a signed integer, an unsigned integer or a floating-point number. Therefore, three different types, number_integer_t, number_unsigned_t, and number_float_t are used.

      "},{"location":"features/types/#default-types","title":"Default types","text":"

      With the default values for NumberIntegerType (std::int64_t), the default value for number_integer_t is std::int64_t. With the default values for NumberUnsignedType (std::uint64_t), the default value for number_unsigned_t is std::uint64_t. With the default values for NumberFloatType (double), the default value for number_float_t is double.

      "},{"location":"features/types/#default-behavior","title":"Default behavior","text":"
      • The restrictions about leading zeros is not enforced in C++. Instead, leading zeros in integer literals lead to an interpretation as octal number. Internally, the value will be stored as decimal number. For instance, the C++ integer literal 010 will be serialized to 8. During deserialization, leading zeros yield an error.
      • Not-a-number (NaN) values will be serialized to null.
      "},{"location":"features/types/#limits_2","title":"Limits","text":"

      RFC 8259 specifies:

      An implementation may set limits on the range and precision of numbers.

      When the default type is used, the maximal integer number that can be stored is 9223372036854775807 (INT64_MAX) and the minimal integer number that can be stored is -9223372036854775808 (INT64_MIN). Integer numbers that are out of range will yield over/underflow when used in a constructor. During deserialization, too large or small integer numbers will be automatically be stored as number_unsigned_t or number_float_t.

      When the default type is used, the maximal unsigned integer number that can be stored is 18446744073709551615 (UINT64_MAX) and the minimal integer number that can be stored is 0. Integer numbers that are out of range will yield over/underflow when used in a constructor. During deserialization, too large or small integer numbers will be automatically be stored as number_integer_t or number_float_t.

      RFC 8259 further states:

      Note that when such software is used, numbers that are integers and are in the range [-2^{53}+1, 2^{53}-1] are interoperable in the sense that implementations will agree exactly on their numeric values.

      As this range is a subrange of the exactly supported range [INT64_MIN, INT64_MAX], this class's integer type is interoperable.

      RFC 8259 states:

      This specification allows implementations to set limits on the range and precision of numbers accepted. Since software that implements IEEE 754-2008 binary64 (double precision) numbers is generally available and widely used, good interoperability can be achieved by implementations that expect no more precision or range than these provide, in the sense that implementations will approximate JSON numbers within the expected precision.

      This implementation does exactly follow this approach, as it uses double precision floating-point numbers. Note values smaller than -1.79769313486232e+308 and values greater than 1.79769313486232e+308 will be stored as NaN internally and be serialized to null.

      "},{"location":"features/types/#storage_5","title":"Storage","text":"

      Integer number values, unsigned integer number values, and floating-point number values are stored directly inside a basic_json type.

      "},{"location":"features/types/number_handling/","title":"Number Handling","text":"

      This document describes how the library is handling numbers.

      "},{"location":"features/types/number_handling/#background","title":"Background","text":"

      This section briefly summarizes how the JSON specification describes how numbers should be handled.

      "},{"location":"features/types/number_handling/#json-number-syntax","title":"JSON number syntax","text":"

      JSON defines the syntax of numbers as follows:

      RFC 8259, Section 6

      The representation of numbers is similar to that used in most programming languages. A number is represented in base 10 using decimal digits. It contains an integer component that may be prefixed with an optional minus sign, which may be followed by a fraction part and/or an exponent part. Leading zeros are not allowed.

      A fraction part is a decimal point followed by one or more digits.

      An exponent part begins with the letter E in uppercase or lowercase, which may be followed by a plus or minus sign. The E and optional sign are followed by one or more digits.

      The following railroad diagram from json.org visualizes the number syntax:

      "},{"location":"features/types/number_handling/#number-interoperability","title":"Number interoperability","text":"

      On number interoperability, the following remarks are made:

      RFC 8259, Section 6

      This specification allows implementations to set limits on the range and precision of numbers accepted. Since software that implements IEEE 754 binary64 (double precision) numbers [IEEE754] is generally available and widely used, good interoperability can be achieved by implementations that expect no more precision or range than these provide, in the sense that implementations will approximate JSON numbers within the expected precision. A JSON number such as 1E400 or 3.141592653589793238462643383279 may indicate potential interoperability problems, since it suggests that the software that created it expects receiving software to have greater capabilities for numeric magnitude and precision than is widely available.

      Note that when such software is used, numbers that are integers and are in the range [-2^{53}+1, 2^{53}-1] are interoperable in the sense that implementations will agree exactly on their numeric values.

      "},{"location":"features/types/number_handling/#library-implementation","title":"Library implementation","text":"

      This section describes how the above number specification is implemented by this library.

      "},{"location":"features/types/number_handling/#number-storage","title":"Number storage","text":"

      In the default json type, numbers are stored as std::uint64_t, std::int64_t, and double, respectively. Thereby, std::uint64_t and std::int64_t are used only if they can store the number without loss of precision. If this is impossible (e.g., if the number is too large), the number is stored as double.

      Notes

      • Numbers with a decimal digit or scientific notation are always stored as double.
      • The number types can be changed, see Template number types.
      • As of version 3.9.1, the conversion is realized by std::strtoull, std::strtoll, and std::strtod, respectively.

      Examples

      • Integer -12345678912345789123456789 is smaller than INT64_MIN and will be stored as floating-point number -1.2345678912345788e+25.
      • Integer 1E3 will be stored as floating-point number 1000.0.
      "},{"location":"features/types/number_handling/#number-limits","title":"Number limits","text":"
      • Any 64-bit signed or unsigned integer can be stored without loss of precision.
      • Numbers exceeding the limits of double (i.e., numbers that after conversion via std::strtod are not satisfying std::isfinite such as 1E400) will throw exception json.exception.out_of_range.406 during parsing.
      • Floating-point numbers are rounded to the next number representable as double. For instance 3.141592653589793238462643383279 is stored as 0x400921fb54442d18. This is the same behavior as the code double x = 3.141592653589793238462643383279;.

      Interoperability

      • The library interoperable with respect to the specification, because its supported range [-2^{63}, 2^{64}-1] is larger than the described range [-2^{53}+1, 2^{53}-1].
      • All integers outside the range [-2^{63}, 2^{64}-1], as well as floating-point numbers are stored as double. This also concurs with the specification above.
      "},{"location":"features/types/number_handling/#zeros","title":"Zeros","text":"

      The JSON number grammar allows for different ways to express zero, and this library will store zeros differently:

      Literal Stored value and type Serialization 0 std::uint64_t(0) 0 -0 std::int64_t(0) 0 0.0 double(0.0) 0.0 -0.0 double(-0.0) -0.0 0E0 double(0.0) 0.0 -0E0 double(-0.0) -0.0

      That is, -0 is stored as a signed integer, but the serialization does not reproduce the -.

      "},{"location":"features/types/number_handling/#number-serialization","title":"Number serialization","text":"
      • Integer numbers are serialized as is; that is, no scientific notation is used.
      • Floating-point numbers are serialized as specified by the %g printf modifier with std::numeric_limits<double>::max_digits10 significant digits. The rationale is to use the shortest representation while still allow round-tripping.

      Notes regarding precision of floating-point numbers

      As described above, floating-point numbers are rounded to the nearest double and serialized with the shortest representation to allow round-tripping. This can yield confusing examples:

      • The serialization can have fewer decimal places than the input: 2555.5599999999999 will be serialized as 2555.56. The reverse can also be true.
      • The serialization can be in scientific notation even if the input is not: 0.0000972439793401814 will be serialized as 9.72439793401814e-05. The reverse can also be true: 12345E-5 will be serialized as 0.12345.
      • Conversions from float to double can also introduce rounding errors:
        float f = 0.3;\njson j = f;\nstd::cout << j << '\\n';\n
        yields 0.30000001192092896.

      All examples here can be reproduced by passing the original double value to

      std::printf(\"%.*g\\n\", std::numeric_limits<double>::max_digits10, double_value);\n
      "},{"location":"features/types/number_handling/#nan-handling","title":"NaN handling","text":"

      NaN (not-a-number) cannot be expressed with the number syntax described above and are in fact explicitly excluded:

      RFC 8259, Section 6

      Numeric values that cannot be represented in the grammar below (such as Infinity and NaN) are not permitted.

      That is, there is no way to parse a NaN value. However, NaN values can be stored in a JSON value by assignment.

      This library serializes NaN values as null. This corresponds to the behavior of JavaScript's JSON.stringify function.

      Example

      The following example shows how a NaN value is stored in a json value.

      int main()\n{\n    double val = std::numeric_limits<double>::quiet_NaN();\n    std::cout << \"val=\" << val << std::endl;\n    json j = val;\n    std::cout << \"j=\" << j.dump() << std::endl;\n    val = j;\n    std::cout << \"val=\" << val << std::endl;\n}\n

      output:

      val=nan\nj=null\nval=nan\n
      "},{"location":"features/types/number_handling/#number-comparison","title":"Number comparison","text":"

      Floating-point inside JSON values numbers are compared with json::number_float_t::operator== which is double::operator== by default.

      Alternative comparison functions

      To compare floating-point while respecting an epsilon, an alternative comparison function could be used, for instance

      template<typename T, typename = typename std::enable_if<std::is_floating_point<T>::value, T>::type>\ninline bool is_same(T a, T b, T epsilon = std::numeric_limits<T>::epsilon()) noexcept\n{\n    return std::abs(a - b) <= epsilon;\n}\n
      Or you can self-define an operator equal function like this:

      bool my_equal(const_reference lhs, const_reference rhs)\n{\n    const auto lhs_type lhs.type();\n    const auto rhs_type rhs.type();\n    if (lhs_type == rhs_type)\n    {\n        switch(lhs_type)\n        {\n            // self_defined case\n            case value_t::number_float:\n                return std::abs(lhs - rhs) <= std::numeric_limits<float>::epsilon();\n\n            // other cases remain the same with the original\n            ...\n        }\n    }\n    ...\n}\n

      (see #703 for more information.)

      Note

      NaN values never compare equal to themselves or to other NaN values. See #514.

      "},{"location":"features/types/number_handling/#number-conversion","title":"Number conversion","text":"

      Just like the C++ language itself, the get family of functions allows conversions between unsigned and signed integers, and between integers and floating-point values to integers. This behavior may be surprising.

      Unconditional number conversions

      double d = 42.3;                                   // non-integer double value 42.3\njson jd = d;                                       // stores double value 42.3\nstd::int64_t i = jd.template get<std::int64_t>();  // now i==42; no warning or error is produced\n

      Note the last line with throw a json.exception.type_error.302 exception if jd is not a numerical type, for instance a string.

      The rationale is twofold:

      1. JSON does not define a number type or precision (see above).
      2. C++ also allows to silently convert between number types.

      Conditional number conversion

      The code above can be solved by explicitly checking the nature of the value with members such as is_number_integer() or is_number_unsigned():

      // check if jd is really integer-valued\nif (jd.is_number_integer())\n{\n    // if so, do the conversion and use i\n    std::int64_t i = jd.template get<std::int64_t>();\n    // ...\n}\nelse\n{\n    // otherwise, take appropriate action\n    // ...\n}\n

      Note this approach also has the advantage that it can react on non-numerical JSON value types such as strings.

      (Example taken from #777.)

      "},{"location":"features/types/number_handling/#determine-number-types","title":"Determine number types","text":"

      As the example in Number conversion shows, there are different functions to determine the type of the stored number:

      • is_number() returns true for any number type
      • is_number_integer() returns true for signed and unsigned integers
      • is_number_unsigned() returns true for unsigned integers only
      • is_number_float() returns true for floating-point numbers
      • type_name() returns \"number\" for any number type
      • type() returns a different enumerator of value_t for all number types
      function unsigned integer signed integer floating-point string is_number() true true true false is_number_integer() true true false false is_number_unsigned() true false false false is_number_float() false false true false type_name() \"number\" \"number\" \"number\" \"string\" type() number_unsigned number_integer number_float string"},{"location":"features/types/number_handling/#template-number-types","title":"Template number types","text":"

      The number types can be changed with template parameters.

      position number type default type possible values 5 signed integers std::int64_t std::int32_t, std::int16_t, etc. 6 unsigned integers std::uint64_t std::uint32_t, std::uint16_t, etc. 7 floating-point double float, long double

      Constraints on number types

      • The type for signed integers must be convertible from long long. The type for floating-point numbers is used in case of overflow.
      • The type for unsigned integers must be convertible from unsigned long long. The type for floating-point numbers is used in case of overflow.
      • The types for signed and unsigned integers must be distinct, see #2573.
      • Only double, float, and long double are supported for floating-point numbers.

      Example

      A basic_json type that uses long double as floating-point type.

      using json_ld = nlohmann::basic_json<std::map, std::vector, std::string, bool,\n                                     std::int64_t, std::uint64_t, long double>;\n

      Note values should then be parsed with json_ld::parse rather than json::parse as the latter would parse floating-point values to double before then converting them to long double.

      "},{"location":"home/code_of_conduct/","title":"Contributor Covenant Code of Conduct","text":""},{"location":"home/code_of_conduct/#our-pledge","title":"Our Pledge","text":"

      In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.

      "},{"location":"home/code_of_conduct/#our-standards","title":"Our Standards","text":"

      Examples of behavior that contributes to creating a positive environment include:

      • Using welcoming and inclusive language
      • Being respectful of differing viewpoints and experiences
      • Gracefully accepting constructive criticism
      • Focusing on what is best for the community
      • Showing empathy towards other community members

      Examples of unacceptable behavior by participants include:

      • The use of sexualized language or imagery and unwelcome sexual attention or advances
      • Trolling, insulting/derogatory comments, and personal or political attacks
      • Public or private harassment
      • Publishing others' private information, such as a physical or electronic address, without explicit permission
      • Other conduct which could reasonably be considered inappropriate in a professional setting
      "},{"location":"home/code_of_conduct/#our-responsibilities","title":"Our Responsibilities","text":"

      Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.

      Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.

      "},{"location":"home/code_of_conduct/#scope","title":"Scope","text":"

      This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.

      "},{"location":"home/code_of_conduct/#enforcement","title":"Enforcement","text":"

      Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at mail@nlohmann.me. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.

      Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.

      "},{"location":"home/code_of_conduct/#attribution","title":"Attribution","text":"

      This Code of Conduct is adapted from the Contributor Covenant, version 1.4, available at http://contributor-covenant.org/version/1/4

      "},{"location":"home/customers/","title":"Customers","text":"

      The library is used in multiple projects, applications, operating systems, etc. The list below is not exhaustive, but the result of an internet search. If you know further customers of the library, please let me know.

      "},{"location":"home/customers/#space-exploration","title":"Space Exploration","text":"
      • Peregrine Lunar Lander Flight 01 - The library was utilized for payload management in the Peregrine Moon Lander, developed by Astrobotic Technology and launched as part of NASA's Commercial Lunar Payload Services (CLPS) program. After six days in orbit, the spacecraft was intentionally redirected into Earth's atmosphere, where it burned up over the Pacific Ocean on January 18, 2024.
      "},{"location":"home/customers/#automotive","title":"Automotive","text":"
      • Alexa Auto SDK, a software development kit enabling the integration of Alexa into automotive systems
      • Apollo, a framework for building autonomous driving systems
      • Automotive Grade Linux (AGL): a collaborative open-source platform for automotive software development
      • Genesis Motor (infotainment), a luxury automotive brand
      • Hyundai (infotainment), a global automotive brand
      • Kia (infotainment), a global automotive brand
      • Mercedes-Benz Operating System (MB.OS), a core component of the vehicle software ecosystem from Mercedes-Benz
      • Rivian (infotainment), an electric vehicle manufacturer
      • Suzuki (infotainment), a global automotive and motorcycle manufacturer
      "},{"location":"home/customers/#gaming-and-entertainment","title":"Gaming and Entertainment","text":"
      • Assassin's Creed: Mirage: a stealth-action game set in the Middle East, focusing on the journey of a young assassin with classic parkour and stealth mechanics
      • Chasm: The Rift: a first-person shooter blending horror and adventure, where players navigate dark realms and battle monsters
      • College Football 25: a college football simulation game featuring gameplay that mimics real-life college teams and competitions
      • Concepts: a digital sketching app designed for creative professionals, offering flexible drawing tools for illustration, design, and brainstorming
      • Depthkit: a tool for creating and capturing volumetric video, enabling immersive 3D experiences and interactive content
      • immersivetech: a technology company focused on immersive experiences, providing tools and solutions for virtual and augmented reality applications
      • LOOT, a tool for optimizing the load order of game plugins, commonly used in The Elder Scrolls and Fallout series
      • Madden NFL 25: a sports simulation game capturing the excitement of American football with realistic gameplay and team management features
      • Marne, an unofficial private server platform for hosting custom Battlefield 1 game experiences
      • Minecraft, a popular sandbox video game
      • NHL 22: a hockey simulation game offering realistic gameplay, team management, and various modes to enhance the hockey experience
      • Pixelpart: a 2D animation and video compositing software that allows users to create animated graphics and visual effects with a focus on simplicity and ease of use
      • Red Dead Redemption II: an open-world action-adventure game following an outlaw's story in the late 1800s, emphasizing deep storytelling and immersive gameplay
      • Tactics Ogre: Reborn, a tactical role-playing game featuring strategic battles and deep storytelling elements
      • Throne and Liberty, an MMORPG that offers an expansive fantasy world with dynamic gameplay and immersive storytelling
      • Unity Vivox, a communication service that enables voice and text chat functionality in multiplayer games developed with Unity
      • Zool: Redimensioned: a modern reimagining of the classic platformer featuring fast-paced gameplay and vibrant environments
      "},{"location":"home/customers/#consumer-electronics","title":"Consumer Electronics","text":"
      • Audinate: a provider of networked audio solutions specializing in Dante technology, which facilitates high-quality digital audio transport over IP networks
      • Cisco Webex Desk Camera, a video camera designed for professional-quality video conferencing and remote collaboration
      • Philips Hue Personal Wireless Lighting: a smart lighting system for customizable and wireless home illumination
      • Ray-Ban Meta Smart glasses, a pair of smart glasses designed for capturing photos and videos with integrated connectivity and social features
      • Siemens SINEMA Remote Connect, a remote connectivity solution for monitoring and managing industrial networks and devices securely
      • Sony PlayStation 4, a gaming console developed by Sony that offers a wide range of games and multimedia entertainment features
      • Sony Virtual Webcam Driver for Remote Camera, a software driver that enables the use of Sony cameras as virtual webcams for video conferencing and streaming
      "},{"location":"home/customers/#operating-systems","title":"Operating Systems","text":"
      • Apple iOS and macOS, a family of operating systems developed by Apple, including iOS for mobile devices and macOS for desktop computers
      • Google Fuchsia, an open-source operating system developed by Google, designed to be secure, updatable, and adaptable across various devices
      • SerenityOS, an open-source operating system that aims to provide a simple and beautiful user experience with a focus on simplicity and elegance
      • Yocto: a Linux-based build system for creating custom operating systems and software distributions, tailored for embedded devices and IoT applications
      "},{"location":"home/customers/#development-tools-and-ides","title":"Development Tools and IDEs","text":"
      • Accentize SpectralBalance, an adaptive speech analysis tool designed to enhance audio quality by optimizing frequency balance in recordings
      • Arm Compiler for Linux, a software development toolchain for compiling and optimizing applications on Arm-based Linux systems
      • BBEdit, a professional text and code editor for macOS
      • CoderPad, a collaborative coding platform that enables real-time code interviews and assessments for developers; the library is included in every CoderPad instance and can be accessed with a simple #include \"json.hpp\"
      • Compiler Explorer, a web-based tool that allows users to write, compile, and visualize the assembly output of code in various programming languages; the library is readily available and accessible with the directive #include <nlohmann/json.hpp>.
      • GitHub CodeQL, a code analysis tool used for identifying security vulnerabilities and bugs in software through semantic queries
      • Hex-Rays: a reverse engineering toolset for analyzing and decompiling binaries, primarily used for security research and vulnerability analysis
      • ImHex, a hex editor designed for reverse engineering, providing advanced features for data analysis and manipulation
      • Intel GPA Framework, a suite of cross-platform tools for capturing, analyzing, and optimizing graphics applications across different APIs
      • Meta Yoga, a layout engine that facilitates flexible and efficient user interface design across multiple platforms
      • MKVToolNix, a set of tools for creating, editing, and inspecting MKV (Matroska) multimedia container files
      • NVIDIA Nsight Compute, a performance analysis tool for CUDA applications that provides detailed insights into GPU performance metrics
      • Notepad++, a free source code editor that supports various programming languages
      • OpenRGB, an open source RGB lighting control that doesn't depend on manufacturer software
      • OpenTelemetry C++: a library for collecting and exporting observability data in C++, enabling developers to implement distributed tracing and metrics in their application
      • Qt Creator, an IDE for developing applications using the Qt application framework
      • Scanbot SDK: a software development kit (SDK) that provides tools for integrating advanced document scanning and barcode scanning capabilities into applications
      "},{"location":"home/customers/#machine-learning-and-ai","title":"Machine Learning and AI","text":"
      • Apple Core ML Tools, a set of tools for converting and configuring machine learning models for deployment in Apple's Core ML framework
      • Avular Mobile Robotics: a platform for developing and deploying mobile robotics solutions
      • Google gemma.cpp, a lightweight C++ inference engine designed for running AI models from the Gemma family
      • llama.cpp, a C++ library designed for efficient inference of large language models (LLMs), enabling streamlined integration into applications
      • Mozilla llamafile, a tool designed for distributing and executing large language models (LLMs) efficiently using a single file format
      • NVIDIA ACE, a suite of real-time AI solutions designed for the development of interactive avatars and digital human applications, enabling scalable and sophisticated user interactions
      • Peer: a platform offering personalized AI assistants for interactive learning and creative collaboration
      • stable-diffusion.cpp: a C++ implementation of the Stable Diffusion image generation model
      • TanvasTouch: a software development kit (SDK) that enables developers to create tactile experiences on touchscreens, allowing users to feel textures and physical sensations in a digital environment
      • TensorFlow, a machine learning framework that facilitates the development and training of models, supporting data serialization and efficient data exchange between components
      "},{"location":"home/customers/#scientific-research-and-analysis","title":"Scientific Research and Analysis","text":"
      • BLACK, a bounded linear temporal logic (LTL) satisfiability checker
      • CERN Atlas Athena, a software framework used in the ATLAS experiment at the Large Hadron Collider (LHC) for performance monitoring
      • KAMERA: a platform for synchronized data collection and real-time deep learning to map marine species like polar bears and seals, aiding Arctic ecosystem research
      • KiCad: a free and open-source software suite for electronic design automation
      • MeVisLab: a software framework for medical image processing and visualization.
      • OpenPMD API: a versatile programming interface for accessing and managing scientific data, designed to facilitate the efficient storage, retrieval, and sharing of simulation data across various applications and platforms
      • ParaView: an open-source tool for large-scale data visualization and analysis across various scientific domains
      • QGIS: a free and open-source geographic information system (GIS) application that allows users to create, edit, visualize, and analyze geospatial data across a variety of formats
      • VTK: a software library for 3D computer graphics, image processing, and visualization
      • VolView: a lightweight application for interactive visualization and analysis of 3D medical imaging data.
      "},{"location":"home/customers/#business-and-productivity-software","title":"Business and Productivity Software","text":"
      • ArcGIS PRO, a desktop geographic information system (GIS) application developed by Esri for mapping and spatial analysis
      • Autodesk Desktop, a software platform developed by Autodesk for creating and managing desktop applications and services
      • Check Point: a cybersecurity company specializing in threat prevention and network security solutions, offering a range of products designed to protect enterprises from cyber threats and ensure data integrity
      • Microsoft Office for Mac, a suite of productivity applications developed by Microsoft for macOS, including tools for word processing, spreadsheets, and presentations
      • Nexthink Infinity: a digital employee experience management platform for monitoring and improving IT performance
      • Sophos Connect Client: a secure VPN client from Sophos that allows remote users to connect to their corporate network, ensuring secure access to resources and data
      • Stonebranch: a cloud-based cybersecurity solution that integrates backup, disaster recovery, and cybersecurity features to protect data and ensure business continuity for organizations
      • Tablecruncher: a data analysis tool that allows users to import, analyze, and visualize spreadsheet data, offering interactive features for better insights and decision-making
      • magicplan, a mobile application for creating floor plans and interior designs using augmented reality
      "},{"location":"home/customers/#databases-and-big-data","title":"Databases and Big Data","text":"
      • ADIOS2: a data management framework designed for high-performance input and output operations
      • Cribl Stream: a real-time data processing platform that enables organizations to collect, route, and transform observability data, enhancing visibility and insights into their systems
      • DB Browser for SQLite, a visual open-source tool for creating, designing, and editing SQLite database files
      • MySQL Connector/C++, a C++ library for connecting and interacting with MySQL databases
      • MySQL NDB Cluster, a distributed database system that provides high availability and scalability for MySQL databases
      • PrestoDB, a distributed SQL query engine designed for large-scale data analytics, originally developed by Facebook
      • ROOT Data Analysis Framework, an open-source data analysis framework widely used in high-energy physics and other fields for data processing and visualization
      "},{"location":"home/customers/#simulation-and-modeling","title":"Simulation and Modeling","text":"
      • Arcturus HoloSuite, a software toolset for capturing, editing, and streaming volumetric video, featuring advanced compression technologies for high-quality 3D content creation
      • azul, a fast and efficient 3D city model viewer designed for visualizing urban environments and spatial data
      • Blender, a free and open-source 3D creation suite for modeling, animation, rendering, and more
      • cpplot, a library for creating interactive graphs and charts in C++, which can be viewed in web browsers
      • NVIDIA Omniverse, a platform for 3D content creation and collaboration that enables real-time simulations and interactive experiences across various industries
      • Pixar Renderman, a photorealistic 3D rendering software developed by Pixar, widely used in the film industry for creating high-quality visual effects and animations
      • ROS - Robot Operating System, a set of software libraries and tools that assist in developing robot applications
      • UBS, a multinational financial services and banking company
      • GAMS: a high-performance mathematical modeling system for optimization and decision support
      • M-Star: a computational fluid dynamics software for simulating and analyzing fluid flow
      • MapleSim CAD Toolbox: a software extension for MapleSim that integrates CAD models, allowing users to import, manipulate, and analyze 3D CAD data within the MapleSim environment for enhanced modeling and simulation
      • Kitware SMTK: a software toolkit for managing simulation models and workflows in scientific and engineering applications
      "},{"location":"home/customers/#enterprise-and-cloud-applications","title":"Enterprise and Cloud Applications","text":"
      • Acronis Cyber Protect Cloud: an all-in-one data protection solution that combines backup, disaster recovery, and cybersecurity to safeguard business data from threats like ransomware
      • Baereos: a backup solution that provides data protection and recovery options for various environments, including physical and virtual systems
      • Bitdefender Home Scanner, a tool from Bitdefender that scans devices for malware and security threats, providing a safeguard against potential online dangers
      • Citrix Provisioning: a solution that streamlines the delivery of virtual desktops and applications by allowing administrators to manage and provision resources efficiently across multiple environments
      • Citrix Virtual Apps and Desktops, a solution from Citrix that delivers virtual apps and desktops
      • Cyberarc: a security solution that specializes in privileged access management, enabling organizations to control and monitor access to critical systems and data, thereby enhancing overall cybersecurity posture
      • Egnyte Desktop: a secure cloud storage solution designed for businesses, enabling file sharing, collaboration, and data management across teams while ensuring compliance and data protection
      • Ethereum Solidity, a high-level, object-oriented programming language designed for implementing smart contracts on the Ethereum platform
      • Inciga: a monitoring tool for IT infrastructure, designed to provide insights into system performance and availability through customizable dashboards and alerts
      • Intel Accelerator Management Daemon for VMware ESXi: a management tool designed for monitoring and controlling Intel hardware accelerators within VMware ESXi environments, optimizing performance and resource allocation
      • Juniper Identity Management Service
      • Microsoft Azure IoT SDK, a collection of tools and libraries to help developers connect, build, and deploy Internet of Things (IoT) solutions on the Azure cloud platform
      • Microsoft WinGet, a command-line utility included in the Windows Package Manager
      • Pointr: a platform for indoor positioning and navigation solutions, offering tools and SDKs for developers to create location-based applications
      "},{"location":"home/design_goals/","title":"Design goals","text":"

      There 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.

      See the contribution guidelines for more information.

      "},{"location":"home/exceptions/","title":"Exceptions","text":""},{"location":"home/exceptions/#overview","title":"Overview","text":""},{"location":"home/exceptions/#base-type","title":"Base type","text":"

      All exceptions inherit from class json::exception (which in turn inherits from std::exception). It is used as the base class for all exceptions thrown by the basic_json class. This class can hence be used as \"wildcard\" to catch exceptions.

      classDiagram\n  direction LR\n    class `std::exception` {\n        <<interface>>\n    }\n\n    class `json::exception` {\n        +const int id\n        +const char* what() const\n    }\n\n    class `json::parse_error` {\n        +const std::size_t byte\n    }\n\n    class `json::invalid_iterator`\n    class `json::type_error`\n    class `json::out_of_range`\n    class `json::other_error`\n\n    `std::exception` <|-- `json::exception`\n    `json::exception` <|-- `json::parse_error`\n    `json::exception` <|-- `json::invalid_iterator`\n    `json::exception` <|-- `json::type_error`\n    `json::exception` <|-- `json::out_of_range`\n    `json::exception` <|-- `json::other_error`
      "},{"location":"home/exceptions/#switch-off-exceptions","title":"Switch off exceptions","text":"

      Exceptions are used widely within the library. They can, however, be switched off with either using the compiler flag -fno-exceptions or by defining the symbol JSON_NOEXCEPTION. In this case, exceptions are replaced by abort() calls. You can further control this behavior by defining JSON_THROW_USER (overriding throw), JSON_TRY_USER (overriding try), and JSON_CATCH_USER (overriding catch).

      Note that JSON_THROW_USER should leave the current scope (e.g., by throwing or aborting), as continuing after it may yield undefined behavior.

      Example

      The code below switches off exceptions and creates a log entry with a detailed error message in case of errors.

      #include <iostream>\n\n#define JSON_TRY_USER if(true)\n#define JSON_CATCH_USER(exception) if(false)\n#define JSON_THROW_USER(exception)                           \\\n    {std::clog << \"Error in \" << __FILE__ << \":\" << __LINE__ \\\n               << \" (function \" << __FUNCTION__ << \") - \"    \\\n               << (exception).what() << std::endl;           \\\n     std::abort();}\n\n#include <nlohmann/json.hpp>\n

      Note the explanatory what() string of exceptions is not available for MSVC if exceptions are disabled, see #2824.

      See documentation of JSON_TRY_USER, JSON_CATCH_USER and JSON_THROW_USER for more information.

      "},{"location":"home/exceptions/#extended-diagnostic-messages","title":"Extended diagnostic messages","text":"

      Exceptions in the library are thrown in the local context of the JSON value they are detected. This makes detailed diagnostics messages, and hence debugging, difficult.

      Example
      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    json j;\n    j[\"address\"][\"street\"] = \"Fake Street\";\n    j[\"address\"][\"housenumber\"] = \"12\";\n\n    try\n    {\n        int housenumber = j[\"address\"][\"housenumber\"];\n    }\n    catch (const json::exception& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n}\n

      Output:

      [json.exception.type_error.302] type must be number, but is string\n

      This exception can be hard to debug if storing the value \"12\" and accessing it is further apart.

      To create better diagnostics messages, each JSON value needs a pointer to its parent value such that a global context (i.e., a path from the root value to the value that lead to the exception) can be created. That global context is provided as JSON Pointer.

      As this global context comes at the price of storing one additional pointer per JSON value and runtime overhead to maintain the parent relation, extended diagnostics are disabled by default. They can, however, be enabled by defining the preprocessor symbol JSON_DIAGNOSTICS to 1 before including json.hpp.

      Example
      #include <iostream>\n\n# define JSON_DIAGNOSTICS 1\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    json j;\n    j[\"address\"][\"street\"] = \"Fake Street\";\n    j[\"address\"][\"housenumber\"] = \"12\";\n\n    try\n    {\n        int housenumber = j[\"address\"][\"housenumber\"];\n    }\n    catch (const json::exception& e)\n    {\n        std::cout << e.what() << '\\n';\n    }\n}\n

      Output:

      [json.exception.type_error.302] (/address/housenumber) type must be number, but is string\n

      Now the exception message contains a JSON Pointer /address/housenumber that indicates which value has the wrong type.

      See documentation of JSON_DIAGNOSTICS for more information.

      "},{"location":"home/exceptions/#parse-errors","title":"Parse errors","text":"

      This exception is thrown by the library when a parse error occurs. Parse errors can occur during the deserialization of JSON text, CBOR, MessagePack, as well as when using JSON Patch.

      Exceptions have ids 1xx.

      Byte index

      Member byte holds the byte index of the last read character in the input file.

      For an input with n bytes, 1 is the index of the first character and n+1 is the index of the terminating null byte or the end of file. This also holds true when reading a byte vector (CBOR or MessagePack).

      Example

      The following code shows how a parse_error exception can be caught.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    try\n    {\n        // parsing input with a syntax error\n        json::parse(\"[1,2,3,]\");\n    }\n    catch (const json::parse_error& e)\n    {\n        // output exception information\n        std::cout << \"message: \" << e.what() << '\\n'\n                  << \"exception id: \" << e.id << '\\n'\n                  << \"byte position of error: \" << e.byte << std::endl;\n    }\n}\n

      Output:

      message: [json.exception.parse_error.101] parse error at line 1, column 8: syntax error while parsing value - unexpected ']'; expected '[', '{', or a literal\nexception id: 101\nbyte position of error: 8\n
      "},{"location":"home/exceptions/#jsonexceptionparse_error101","title":"json.exception.parse_error.101","text":"

      This error indicates a syntax error while deserializing a JSON text. The error message describes that an unexpected token (character) was encountered, and the member byte indicates the error position.

      Example message

      Input ended prematurely:

      [json.exception.parse_error.101] parse error at 2: unexpected end of input; expected string literal\n

      No input:

      [json.exception.parse_error.101] parse error at line 1, column 1: attempting to parse an empty input; check that your input string or stream contains the expected JSON\n

      Control character was not escaped:

      [json.exception.parse_error.101] parse error at line 1, column 2: syntax error while parsing value - invalid string: control character U+0009 (HT) must be escaped to \\u0009 or \\\\; last read: '\"<U+0009>'\"\n

      String was not closed:

      [json.exception.parse_error.101] parse error at line 1, column 2: syntax error while parsing value - invalid string: missing closing quote; last read: '\"'\n

      Invalid number format:

      [json.exception.parse_error.101] parse error at line 1, column 3: syntax error while parsing value - invalid number; expected '+', '-', or digit after exponent; last read: '1E'\n

      \\u was not be followed by four hex digits:

      [json.exception.parse_error.101] parse error at line 1, column 6: syntax error while parsing value - invalid string: '\\u' must be followed by 4 hex digits; last read: '\"\\u01\"'\n

      Invalid UTF-8 surrogate pair:

      [json.exception.parse_error.101] parse error at line 1, column 13: syntax error while parsing value - invalid string: surrogate U+DC00..U+DFFF must follow U+D800..U+DBFF; last read: '\"\\uD7FF\\uDC00'\"\n

      Invalid UTF-8 byte:

      [json.exception.parse_error.101] parse error at line 3, column 24: syntax error while parsing value - invalid string: ill-formed UTF-8 byte; last read: '\"vous \\352t'\n

      Tip

      • Make sure the input is correctly read. Try to write the input to standard output to check if, for instance, the input file was successfully opened.
      • Paste the input to a JSON validator like http://jsonlint.com or a tool like jq.
      "},{"location":"home/exceptions/#jsonexceptionparse_error102","title":"json.exception.parse_error.102","text":"

      JSON uses the \\uxxxx format to describe Unicode characters. Code points above 0xFFFF are split into two \\uxxxx entries (\"surrogate pairs\"). This error indicates that the surrogate pair is incomplete or contains an invalid code point.

      Example message

      parse error at 14: missing or wrong low surrogate\n

      Note

      This exception is not used any more. Instead json.exception.parse_error.101 with a more detailed description is used.

      "},{"location":"home/exceptions/#jsonexceptionparse_error103","title":"json.exception.parse_error.103","text":"

      Unicode supports code points up to 0x10FFFF. Code points above 0x10FFFF are invalid.

      Example message

      parse error: code points above 0x10FFFF are invalid\n

      Note

      This exception is not used any more. Instead json.exception.parse_error.101 with a more detailed description is used.

      "},{"location":"home/exceptions/#jsonexceptionparse_error104","title":"json.exception.parse_error.104","text":"

      RFC 6902 requires a JSON Patch document to be a JSON document that represents an array of objects.

      Example message

      [json.exception.parse_error.104] parse error: JSON patch must be an array of objects\n
      "},{"location":"home/exceptions/#jsonexceptionparse_error105","title":"json.exception.parse_error.105","text":"

      An operation of a JSON Patch document must contain exactly one \"op\" member, whose value indicates the operation to perform. Its value must be one of \"add\", \"remove\", \"replace\", \"move\", \"copy\", or \"test\"; other values are errors.

      Example message

      [json.exception.parse_error.105] parse error: operation 'add' must have member 'value'\n
      [json.exception.parse_error.105] parse error: operation 'copy' must have string member 'from'\n
      [json.exception.parse_error.105] parse error: operation value 'foo' is invalid\n

      "},{"location":"home/exceptions/#jsonexceptionparse_error106","title":"json.exception.parse_error.106","text":"

      An array index in a JSON Pointer (RFC 6901) may be 0 or any number without a leading 0.

      Example message

      [json.exception.parse_error.106] parse error: array index '01' must not begin with '0'\n
      "},{"location":"home/exceptions/#jsonexceptionparse_error107","title":"json.exception.parse_error.107","text":"

      A JSON Pointer must be a Unicode string containing a sequence of zero or more reference tokens, each prefixed by a / character.

      Example message

      [json.exception.parse_error.107] parse error at byte 1: JSON pointer must be empty or begin with '/' - was: 'foo'\n
      "},{"location":"home/exceptions/#jsonexceptionparse_error108","title":"json.exception.parse_error.108","text":"

      In a JSON Pointer, only ~0 and ~1 are valid escape sequences.

      Example message

      [json.exception.parse_error.108] parse error: escape character '~' must be followed with '0' or '1'\n
      "},{"location":"home/exceptions/#jsonexceptionparse_error109","title":"json.exception.parse_error.109","text":"

      A JSON Pointer array index must be a number.

      Example messages

      [json.exception.parse_error.109] parse error: array index 'one' is not a number\n
      [json.exception.parse_error.109] parse error: array index '+1' is not a number\n

      "},{"location":"home/exceptions/#jsonexceptionparse_error110","title":"json.exception.parse_error.110","text":"

      When parsing CBOR or MessagePack, the byte vector ends before the complete value has been read.

      Example message

      [json.exception.parse_error.110] parse error at byte 5: syntax error while parsing CBOR string: unexpected end of input\n
      [json.exception.parse_error.110] parse error at byte 2: syntax error while parsing UBJSON value: expected end of input; last byte: 0x5A\n

      "},{"location":"home/exceptions/#jsonexceptionparse_error112","title":"json.exception.parse_error.112","text":"

      An unexpected byte was read in a binary format or length information is invalid (BSON).

      Example messages

      [json.exception.parse_error.112] parse error at byte 1: syntax error while parsing CBOR value: invalid byte: 0x1C\n
      [json.exception.parse_error.112] parse error at byte 1: syntax error while parsing MessagePack value: invalid byte: 0xC1\n
      [json.exception.parse_error.112] parse error at byte 4: syntax error while parsing BJData size: expected '#' after type information; last byte: 0x02\n
      [json.exception.parse_error.112] parse error at byte 4: syntax error while parsing UBJSON size: expected '#' after type information; last byte: 0x02\n
      [json.exception.parse_error.112] parse error at byte 10: syntax error while parsing BSON string: string length must be at least 1, is -2147483648\n
      [json.exception.parse_error.112] parse error at byte 15: syntax error while parsing BSON binary: byte array length cannot be negative, is -1\n

      "},{"location":"home/exceptions/#jsonexceptionparse_error113","title":"json.exception.parse_error.113","text":"

      While parsing a map key, a value that is not a string has been read.

      Example messages

      [json.exception.parse_error.113] parse error at byte 2: syntax error while parsing CBOR string: expected length specification (0x60-0x7B) or indefinite string type (0x7F); last byte: 0xFF\n
      [json.exception.parse_error.113] parse error at byte 2: syntax error while parsing MessagePack string: expected length specification (0xA0-0xBF, 0xD9-0xDB); last byte: 0xFF\n
      [json.exception.parse_error.113] parse error at byte 2: syntax error while parsing UBJSON char: byte after 'C' must be in range 0x00..0x7F; last byte: 0x82\n

      "},{"location":"home/exceptions/#jsonexceptionparse_error114","title":"json.exception.parse_error.114","text":"

      The parsing of the corresponding BSON record type is not implemented (yet).

      Example message

      [json.exception.parse_error.114] parse error at byte 5: Unsupported BSON record type 0xFF\n
      "},{"location":"home/exceptions/#jsonexceptionparse_error115","title":"json.exception.parse_error.115","text":"

      A UBJSON high-precision number could not be parsed.

      Example message

      [json.exception.parse_error.115] parse error at byte 5: syntax error while parsing UBJSON high-precision number: invalid number text: 1A\n
      "},{"location":"home/exceptions/#iterator-errors","title":"Iterator errors","text":"

      This exception is thrown if iterators passed to a library function do not match the expected semantics.

      Exceptions have ids 2xx.

      Example

      The following code shows how an invalid_iterator exception can be caught.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    try\n    {\n        // calling iterator::key() on non-object iterator\n        json j = \"string\";\n        json::iterator it = j.begin();\n        auto k = it.key();\n    }\n    catch (const json::invalid_iterator& e)\n    {\n        // output exception information\n        std::cout << \"message: \" << e.what() << '\\n'\n                  << \"exception id: \" << e.id << std::endl;\n    }\n}\n

      Output:

      message: [json.exception.invalid_iterator.207] cannot use key() for non-object iterators\nexception id: 207\n
      "},{"location":"home/exceptions/#jsonexceptioninvalid_iterator201","title":"json.exception.invalid_iterator.201","text":"

      The iterators passed to constructor basic_json(InputIT first, InputIT last) are not compatible, meaning they do not belong to the same container. Therefore, the range (first, last) is invalid.

      Example message

      [json.exception.invalid_iterator.201] iterators are not compatible\n
      "},{"location":"home/exceptions/#jsonexceptioninvalid_iterator202","title":"json.exception.invalid_iterator.202","text":"

      In the erase or insert function, the passed iterator pos does not belong to the JSON value for which the function was called. It hence does not define a valid position for the deletion/insertion.

      Example messages

      [json.exception.invalid_iterator.202] iterator does not fit current value\n
      [json.exception.invalid_iterator.202] iterators first and last must point to objects\n

      "},{"location":"home/exceptions/#jsonexceptioninvalid_iterator203","title":"json.exception.invalid_iterator.203","text":"

      Either iterator passed to function erase(IteratorType first, IteratorType last) does not belong to the JSON value from which values shall be erased. It hence does not define a valid range to delete values from.

      Example message

      [json.exception.invalid_iterator.203] iterators do not fit current value\n
      "},{"location":"home/exceptions/#jsonexceptioninvalid_iterator204","title":"json.exception.invalid_iterator.204","text":"

      When an iterator range for a primitive type (number, boolean, or string) is passed to a constructor or an erase function, this range has to be exactly (begin(), end()), because this is the only way the single stored value is expressed. All other ranges are invalid.

      Example message

      [json.exception.invalid_iterator.204] iterators out of range\n
      "},{"location":"home/exceptions/#jsonexceptioninvalid_iterator205","title":"json.exception.invalid_iterator.205","text":"

      When an iterator for a primitive type (number, boolean, or string) is passed to an erase function, the iterator has to be the begin() iterator, because it is the only way to address the stored value. All other iterators are invalid.

      Example message

      [json.exception.invalid_iterator.205] iterator out of range\n
      "},{"location":"home/exceptions/#jsonexceptioninvalid_iterator206","title":"json.exception.invalid_iterator.206","text":"

      The iterators passed to constructor basic_json(InputIT first, InputIT last) belong to a JSON null value and hence to not define a valid range.

      Example message

      [json.exception.invalid_iterator.206] cannot construct with iterators from null\n
      "},{"location":"home/exceptions/#jsonexceptioninvalid_iterator207","title":"json.exception.invalid_iterator.207","text":"

      The key() member function can only be used on iterators belonging to a JSON object, because other types do not have a concept of a key.

      Example message

      [json.exception.invalid_iterator.207] cannot use key() for non-object iterators\n
      "},{"location":"home/exceptions/#jsonexceptioninvalid_iterator208","title":"json.exception.invalid_iterator.208","text":"

      The operator[] to specify a concrete offset cannot be used on iterators belonging to a JSON object, because JSON objects are unordered.

      Example message

      [json.exception.invalid_iterator.208] cannot use operator[] for object iterators\n
      "},{"location":"home/exceptions/#jsonexceptioninvalid_iterator209","title":"json.exception.invalid_iterator.209","text":"

      The offset operators (+, -, +=, -=) cannot be used on iterators belonging to a JSON object, because JSON objects are unordered.

      Example message

      [json.exception.invalid_iterator.209] cannot use offsets with object iterators\n
      "},{"location":"home/exceptions/#jsonexceptioninvalid_iterator210","title":"json.exception.invalid_iterator.210","text":"

      The iterator range passed to the insert function are not compatible, meaning they do not belong to the same container. Therefore, the range (first, last) is invalid.

      Example message

      [json.exception.invalid_iterator.210] iterators do not fit\n
      "},{"location":"home/exceptions/#jsonexceptioninvalid_iterator211","title":"json.exception.invalid_iterator.211","text":"

      The iterator range passed to the insert function must not be a subrange of the container to insert to.

      Example message

      [json.exception.invalid_iterator.211] passed iterators may not belong to container\n
      "},{"location":"home/exceptions/#jsonexceptioninvalid_iterator212","title":"json.exception.invalid_iterator.212","text":"

      When two iterators are compared, they must belong to the same container.

      Example message

      [json.exception.invalid_iterator.212] cannot compare iterators of different containers\n
      "},{"location":"home/exceptions/#jsonexceptioninvalid_iterator213","title":"json.exception.invalid_iterator.213","text":"

      The order of object iterators cannot be compared, because JSON objects are unordered.

      Example message

      [json.exception.invalid_iterator.213] cannot compare order of object iterators\n
      "},{"location":"home/exceptions/#jsonexceptioninvalid_iterator214","title":"json.exception.invalid_iterator.214","text":"

      Cannot get value for iterator: Either the iterator belongs to a null value or it is an iterator to a primitive type (number, boolean, or string), but the iterator is different to begin().

      Example message

      [json.exception.invalid_iterator.214] cannot get value\n
      "},{"location":"home/exceptions/#type-errors","title":"Type errors","text":"

      This exception is thrown in case of a type error; that is, a library function is executed on a JSON value whose type does not match the expected semantics.

      Exceptions have ids 3xx.

      Example

      The following code shows how a type_error exception can be caught.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    try\n    {\n        // calling push_back() on a string value\n        json j = \"string\";\n        j.push_back(\"another string\");\n    }\n    catch (const json::type_error& e)\n    {\n        // output exception information\n        std::cout << \"message: \" << e.what() << '\\n'\n                  << \"exception id: \" << e.id << std::endl;\n    }\n}\n

      Output:

      message: [json.exception.type_error.308] cannot use push_back() with string\nexception id: 308\n
      "},{"location":"home/exceptions/#jsonexceptiontype_error301","title":"json.exception.type_error.301","text":"

      To create an object from an initializer list, the initializer list must consist only of a list of pairs whose first element is a string. When this constraint is violated, an array is created instead.

      Example message

      [json.exception.type_error.301] cannot create object from initializer list\n
      "},{"location":"home/exceptions/#jsonexceptiontype_error302","title":"json.exception.type_error.302","text":"

      During implicit or explicit value conversion, the JSON type must be compatible to the target type. For instance, a JSON string can only be converted into string types, but not into numbers or boolean types.

      Example messages

      [json.exception.type_error.302] type must be object, but is null\n
      [json.exception.type_error.302] type must be string, but is object\n

      "},{"location":"home/exceptions/#jsonexceptiontype_error303","title":"json.exception.type_error.303","text":"

      To retrieve a reference to a value stored in a basic_json object with get_ref, the type of the reference must match the value type. For instance, for a JSON array, the ReferenceType must be array_t &.

      Example messages

      [json.exception.type_error.303] incompatible ReferenceType for get_ref, actual type is object\n
      [json.exception.type_error.303] incompatible ReferenceType for get_ref, actual type is number\"\n

      "},{"location":"home/exceptions/#jsonexceptiontype_error304","title":"json.exception.type_error.304","text":"

      The at() member functions can only be executed for certain JSON types.

      Example messages

      [json.exception.type_error.304] cannot use at() with string\n
      [json.exception.type_error.304] cannot use at() with number\n

      "},{"location":"home/exceptions/#jsonexceptiontype_error305","title":"json.exception.type_error.305","text":"

      The operator[] member functions can only be executed for certain JSON types.

      Example messages

      [json.exception.type_error.305] cannot use operator[] with a string argument with array\n
      [json.exception.type_error.305] cannot use operator[] with a numeric argument with object\n

      "},{"location":"home/exceptions/#jsonexceptiontype_error306","title":"json.exception.type_error.306","text":"

      The value() member functions can only be executed for certain JSON types.

      Example message

      [json.exception.type_error.306] cannot use value() with number\n
      "},{"location":"home/exceptions/#jsonexceptiontype_error307","title":"json.exception.type_error.307","text":"

      The erase() member functions can only be executed for certain JSON types.

      Example message

      [json.exception.type_error.307] cannot use erase() with string\n
      "},{"location":"home/exceptions/#jsonexceptiontype_error308","title":"json.exception.type_error.308","text":"

      The push_back() and operator+= member functions can only be executed for certain JSON types.

      Example message

      [json.exception.type_error.308] cannot use push_back() with string\n
      "},{"location":"home/exceptions/#jsonexceptiontype_error309","title":"json.exception.type_error.309","text":"

      The insert() member functions can only be executed for certain JSON types.

      Example messages

      [json.exception.type_error.309] cannot use insert() with array\n
      [json.exception.type_error.309] cannot use insert() with number\n

      "},{"location":"home/exceptions/#jsonexceptiontype_error310","title":"json.exception.type_error.310","text":"

      The swap() member functions can only be executed for certain JSON types.

      Example message

      [json.exception.type_error.310] cannot use swap() with number\n
      "},{"location":"home/exceptions/#jsonexceptiontype_error311","title":"json.exception.type_error.311","text":"

      The emplace() and emplace_back() member functions can only be executed for certain JSON types.

      Example messages

      [json.exception.type_error.311] cannot use emplace() with number\n
      [json.exception.type_error.311] cannot use emplace_back() with number\n

      "},{"location":"home/exceptions/#jsonexceptiontype_error312","title":"json.exception.type_error.312","text":"

      The update() member functions can only be executed for certain JSON types.

      Example message

      [json.exception.type_error.312] cannot use update() with array\n
      "},{"location":"home/exceptions/#jsonexceptiontype_error313","title":"json.exception.type_error.313","text":"

      The unflatten function converts an object whose keys are JSON Pointers back into an arbitrary nested JSON value. The JSON Pointers must not overlap, because then the resulting value would not be well-defined.

      Example message

      [json.exception.type_error.313] invalid value to unflatten\n
      "},{"location":"home/exceptions/#jsonexceptiontype_error314","title":"json.exception.type_error.314","text":"

      The unflatten function only works for an object whose keys are JSON Pointers.

      Example message

      Calling unflatten() on an array [1,2,3]:

      [json.exception.type_error.314] only objects can be unflattened\n
      "},{"location":"home/exceptions/#jsonexceptiontype_error315","title":"json.exception.type_error.315","text":"

      The unflatten() function only works for an object whose keys are JSON Pointers and whose values are primitive.

      Example message

      Calling unflatten() on an object {\"/1\", [1,2,3]}:

      [json.exception.type_error.315] values in object must be primitive\n
      "},{"location":"home/exceptions/#jsonexceptiontype_error316","title":"json.exception.type_error.316","text":"

      The dump() function only works with UTF-8 encoded strings; that is, if you assign a std::string to a JSON value, make sure it is UTF-8 encoded.

      Example message

      Calling dump() on a JSON value containing an ISO 8859-1 encoded string:

      [json.exception.type_error.316] invalid UTF-8 byte at index 15: 0x6F\n

      Tip

      • Store the source file with UTF-8 encoding.
      • Pass an error handler as last parameter to the dump() function to avoid this exception:
        • json::error_handler_t::replace will replace invalid bytes sequences with U+FFFD
        • json::error_handler_t::ignore will silently ignore invalid byte sequences
      "},{"location":"home/exceptions/#jsonexceptiontype_error317","title":"json.exception.type_error.317","text":"

      The dynamic type of the object cannot be represented in the requested serialization format (e.g. a raw true or null JSON object cannot be serialized to BSON)

      Example messages

      Serializing null to BSON:

      [json.exception.type_error.317] to serialize to BSON, top-level type must be object, but is null\n
      Serializing [1,2,3] to BSON:
      [json.exception.type_error.317] to serialize to BSON, top-level type must be object, but is array\n

      Tip

      Encapsulate the JSON value in an object. That is, instead of serializing true, serialize {\"value\": true}

      "},{"location":"home/exceptions/#out-of-range","title":"Out of range","text":"

      This exception is thrown in case a library function is called on an input parameter that exceeds the expected range, for instance in case of array indices or nonexisting object keys.

      Exceptions have ids 4xx.

      Example

      The following code shows how an out_of_range exception can be caught.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    try\n    {\n        // calling at() for an invalid index\n        json j = {1, 2, 3, 4};\n        j.at(4) = 10;\n    }\n    catch (const json::out_of_range& e)\n    {\n        // output exception information\n        std::cout << \"message: \" << e.what() << '\\n'\n                  << \"exception id: \" << e.id << std::endl;\n    }\n}\n

      Output:

      message: [json.exception.out_of_range.401] array index 4 is out of range\nexception id: 401\n
      "},{"location":"home/exceptions/#jsonexceptionout_of_range401","title":"json.exception.out_of_range.401","text":"

      The provided array index i is larger than size-1.

      Example message

      array index 3 is out of range\n
      "},{"location":"home/exceptions/#jsonexceptionout_of_range402","title":"json.exception.out_of_range.402","text":"

      The special array index - in a JSON Pointer never describes a valid element of the array, but the index past the end. That is, it can only be used to add elements at this position, but not to read it.

      Example message

      array index '-' (3) is out of range\n
      "},{"location":"home/exceptions/#jsonexceptionout_of_range403","title":"json.exception.out_of_range.403","text":"

      The provided key was not found in the JSON object.

      Example message

      key 'foo' not found\n
      "},{"location":"home/exceptions/#jsonexceptionout_of_range404","title":"json.exception.out_of_range.404","text":"

      A reference token in a JSON Pointer could not be resolved.

      Example message

      unresolved reference token 'foo'\n
      "},{"location":"home/exceptions/#jsonexceptionout_of_range405","title":"json.exception.out_of_range.405","text":"

      The JSON Patch operations 'remove' and 'add' can not be applied to the root element of the JSON value.

      Example message

      JSON pointer has no parent\n
      "},{"location":"home/exceptions/#jsonexceptionout_of_range406","title":"json.exception.out_of_range.406","text":"

      A parsed number could not be stored as without changing it to NaN or INF.

      Example message

      number overflow parsing '10E1000'\n
      "},{"location":"home/exceptions/#jsonexceptionout_of_range407","title":"json.exception.out_of_range.407","text":"

      UBJSON and BSON only support integer numbers up to 9223372036854775807.

      Example message

      number overflow serializing '9223372036854775808'\n

      Note

      Since version 3.9.0, integer numbers beyond int64 are serialized as high-precision UBJSON numbers, and this exception does not further occur.

      "},{"location":"home/exceptions/#jsonexceptionout_of_range408","title":"json.exception.out_of_range.408","text":"

      The size (following #) of an UBJSON array or object exceeds the maximal capacity.

      Example message

      excessive array size: 8658170730974374167\n
      "},{"location":"home/exceptions/#jsonexceptionout_of_range409","title":"json.exception.out_of_range.409","text":"

      Key identifiers to be serialized to BSON cannot contain code point U+0000, since the key is stored as zero-terminated c-string.

      Example message

      BSON key cannot contain code point U+0000 (at byte 2)\n
      "},{"location":"home/exceptions/#further-exceptions","title":"Further exceptions","text":"

      This exception is thrown in case of errors that cannot be classified with the other exception types.

      Exceptions have ids 5xx.

      Example

      The following code shows how an other_error exception can be caught.

      #include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    try\n    {\n        // executing a failing JSON Patch operation\n        json value = R\"({\n            \"best_biscuit\": {\n                \"name\": \"Oreo\"\n            }\n        })\"_json;\n        json patch = R\"([{\n            \"op\": \"test\",\n            \"path\": \"/best_biscuit/name\",\n            \"value\": \"Choco Leibniz\"\n        }])\"_json;\n        value.patch(patch);\n    }\n    catch (const json::other_error& e)\n    {\n        // output exception information\n        std::cout << \"message: \" << e.what() << '\\n'\n                  << \"exception id: \" << e.id << std::endl;\n    }\n}\n

      Output:

      message: [json.exception.other_error.501] unsuccessful: {\"op\":\"test\",\"path\":\"/best_biscuit/name\",\"value\":\"Choco Leibniz\"}\nexception id: 501\n
      "},{"location":"home/exceptions/#jsonexceptionother_error501","title":"json.exception.other_error.501","text":"

      A JSON Patch operation 'test' failed. The unsuccessful operation is also printed.

      Example message

      Executing {\"op\":\"test\", \"path\":\"/baz\", \"value\":\"bar\"} on {\"baz\": \"qux\"}:

      [json.exception.other_error.501] unsuccessful: {\"op\":\"test\",\"path\":\"/baz\",\"value\":\"bar\"}\n
      "},{"location":"home/faq/","title":"Frequently Asked Questions (FAQ)","text":""},{"location":"home/faq/#known-bugs","title":"Known bugs","text":""},{"location":"home/faq/#brace-initialization-yields-arrays","title":"Brace initialization yields arrays","text":"

      Question

      Why does

      json j{true};\n

      and

      json j(true);\n

      yield different results ([true] vs. true)?

      This is a known issue, and -- even worse -- the behavior differs between GCC and Clang. The \"culprit\" for this is the library's constructor overloads for initializer lists to allow syntax like

      json array = {1, 2, 3, 4};\n

      for arrays and

      json object = {{\"one\", 1}, {\"two\", 2}}; \n

      for objects.

      Tip

      To avoid any confusion and ensure portable code, do not use brace initialization with the types basic_json, json, or ordered_json unless you want to create an object or array as shown in the examples above.

      "},{"location":"home/faq/#limitations","title":"Limitations","text":""},{"location":"home/faq/#relaxed-parsing","title":"Relaxed parsing","text":"

      Question

      Can you add an option to ignore trailing commas?

      This library does not support any feature which would jeopardize interoperability.

      "},{"location":"home/faq/#parse-errors-reading-non-ascii-characters","title":"Parse errors reading non-ASCII characters","text":"

      Questions

      • Why is the parser complaining about a Chinese character?
      • Does the library support Unicode?
      • I get an exception [json.exception.parse_error.101] parse error at line 1, column 53: syntax error while parsing value - invalid string: ill-formed UTF-8 byte; last read: '\"Test\u00e9$')\"

      The library supports Unicode input as follows:

      • Only UTF-8 encoded input is supported which is the default encoding for JSON according to RFC 8259.
      • std::u16string and std::u32string can be parsed, assuming UTF-16 and UTF-32 encoding, respectively. These encodings are not supported when reading from files or other input containers.
      • Other encodings such as Latin-1 or ISO 8859-1 are not supported and will yield parse or serialization errors.
      • Unicode noncharacters will not be replaced by the library.
      • Invalid surrogates (e.g., incomplete pairs such as \\uDEAD) will yield parse errors.
      • The strings stored in the library are UTF-8 encoded. When using the default string type (std::string), note that its length/size functions return the number of stored bytes rather than the number of characters or glyphs.
      • When you store strings with different encodings in the library, calling dump() may throw an exception unless json::error_handler_t::replace or json::error_handler_t::ignore are used as error handlers.

      In most cases, the parser is right to complain, because the input is not UTF-8 encoded. This is especially true for Microsoft Windows where Latin-1 or ISO 8859-1 is often the standard encoding.

      "},{"location":"home/faq/#wide-string-handling","title":"Wide string handling","text":"

      Question

      Why are wide strings (e.g., std::wstring) dumped as arrays of numbers?

      As described above, the library assumes UTF-8 as encoding. To store a wide string, you need to change the encoding.

      Example

      #include <codecvt> // codecvt_utf8\n#include <locale>  // wstring_convert\n\n// encoding function\nstd::string to_utf8(std::wstring& wide_string)\n{\n    static std::wstring_convert<std::codecvt_utf8<wchar_t>> utf8_conv;\n    return utf8_conv.to_bytes(wide_string);\n}\n\njson j;\nstd::wstring ws = L\"\u8ecaB1234 \u3053\u3093\u306b\u3061\u306f\";\n\nj[\"original\"] = ws;\nj[\"encoded\"] = to_utf8(ws);\n\nstd::cout << j << std::endl;\n

      The result is:

      {\n  \"encoded\": \"\u8ecaB1234 \u3053\u3093\u306b\u3061\u306f\",\n  \"original\": [36554, 66, 49, 50, 51, 52, 32, 12371, 12435, 12395, 12385, 12399]\n}\n
      "},{"location":"home/faq/#exceptions","title":"Exceptions","text":""},{"location":"home/faq/#parsing-without-exceptions","title":"Parsing without exceptions","text":"

      Question

      Is it possible to indicate a parse error without throwing an exception?

      Yes, see Parsing and exceptions.

      "},{"location":"home/faq/#key-name-in-exceptions","title":"Key name in exceptions","text":"

      Question

      Can I get the key of the object item that caused an exception?

      Yes, you can. Please define the symbol JSON_DIAGNOSTICS to get extended diagnostics messages.

      "},{"location":"home/faq/#serialization-issues","title":"Serialization issues","text":""},{"location":"home/faq/#number-precision","title":"Number precision","text":"

      Question

      • It seems that precision is lost when serializing a double.
      • Can I change the precision for floating-point serialization?

      The library uses std::numeric_limits<number_float_t>::digits10 (15 for IEEE doubles) digits for serialization. This value is sufficient to guarantee roundtripping. If one uses more than this number of digits of precision, then string -> value -> string is not guaranteed to round-trip.

      cppreference.com

      The value of std::numeric_limits<T>::digits10 is the number of base-10 digits that can be represented by the type T without change, that is, any number with this many significant decimal digits can be converted to a value of type T and back to decimal form, without change due to rounding or overflow.

      Tip

      The website https://float.exposed gives a good insight into the internal storage of floating-point numbers.

      See this section on the library's number handling for more information.

      "},{"location":"home/faq/#compilation-issues","title":"Compilation issues","text":""},{"location":"home/faq/#android-sdk","title":"Android SDK","text":"

      Question

      Why does the code not compile with Android SDK?

      Android defaults to using very old compilers and C++ libraries. To fix this, add the following to your Application.mk. This will switch to the LLVM C++ library, the Clang compiler, and enable C++11 and other features disabled by default.

      APP_STL := c++_shared\nNDK_TOOLCHAIN_VERSION := clang3.6\nAPP_CPPFLAGS += -frtti -fexceptions\n

      The code compiles successfully with Android NDK, Revision 9 - 11 (and possibly later) and CrystaX's Android NDK version 10.

      "},{"location":"home/faq/#missing-stl-function","title":"Missing STL function","text":"

      Questions

      • Why do I get a compilation error 'to_string' is not a member of 'std' (or similarly, for strtod or strtof)?
      • Why does the code not compile with MinGW or Android SDK?

      This is not an issue with the code, but rather with the compiler itself. On Android, see above to build with a newer environment. For MinGW, please refer to this site and this discussion for information on how to fix this bug. For Android NDK using APP_STL := gnustl_static, please refer to this discussion.

      "},{"location":"home/license/","title":"License","text":"

      The class is licensed under the MIT License:

      Copyright \u00a9 2013-2024 Niels Lohmann

      Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \u201cSoftware\u201d), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

      The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

      THE SOFTWARE IS PROVIDED \u201cAS IS\u201d, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

      The class contains the UTF-8 Decoder from Bjoern Hoehrmann which is licensed under the MIT License (see above). Copyright \u00a9 2008-2009 Bj\u00f6rn Hoehrmann bjoern@hoehrmann.de

      The class contains a slightly modified version of the Grisu2 algorithm from Florian Loitsch which is licensed under the MIT License (see above). Copyright \u00a9 2009 Florian Loitsch

      The class contains a copy of Hedley from Evan Nemerson which is licensed as CC0-1.0.

      "},{"location":"home/releases/","title":"Releases","text":""},{"location":"home/releases/#v373","title":"v3.7.3","text":"

      Files

      • include.zip (274 KB)
      • include.zip.asc (1 KB)
      • json.hpp (791 KB)
      • json.hpp.asc (1 KB)

      Release date: 2019-11-17 SHA-256: 3b5d2b8f8282b80557091514d8ab97e27f9574336c804ee666fda673a9b59926 (json.hpp), 87b5884741427220d3a33df1363ae0e8b898099fbc59f1c451113f6732891014 (include.zip)

      "},{"location":"home/releases/#summary","title":"Summary","text":"

      This release fixes a bug introduced in release 3.7.2 which could yield quadratic complexity in destructor calls. All changes are backward-compatible.

      "},{"location":"home/releases/#bug-fixes","title":"Bug Fixes","text":"
      • Removed reserve() calls from the destructor which could lead to quadratic complexity. #1837 #1838
      "},{"location":"home/releases/#deprecated-functions","title":"Deprecated functions","text":"

      This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):

      • Function iterator_wrapper are deprecated. Please use the member function items() instead.
      • Functions friend std::istream& operator<<(basic_json&, std::istream&) and friend std::ostream& operator>>(const basic_json&, std::ostream&) are deprecated. Please use friend std::istream& operator>>(std::istream&, basic_json&) and friend operator<<(std::ostream&, const basic_json&) instead.
      "},{"location":"home/releases/#v372","title":"v3.7.2","text":"

      Files

      • include.zip (274 KB)
      • include.zip.asc (1 KB)
      • json.hpp (791 KB)
      • json.hpp.asc (1 KB)

      Release date: 2019-11-10 SHA-256: 0a65fcbbe1b334d3f45c9498e5ee28c3f3b2428aea98557da4a3ff12f0f14ad6 (json.hpp), 67f69c9a93b7fa0612dc1b6273119d2c560317333581845f358aaa68bff8f087 (include.zip)

      "},{"location":"home/releases/#summary_1","title":"Summary","text":"

      Project bad_json_parsers tested how JSON parser libraries react on deeply nested inputs. It turns out that this library segfaulted at a certain nesting depth. This bug was fixed with this release. Now the parsing is only bounded by the available memory. All changes are backward-compatible.

      "},{"location":"home/releases/#bug-fixes_1","title":"Bug Fixes","text":"
      • Fixed a bug that lead to stack overflow for deeply nested JSON values (objects, array) by changing the implementation of the destructor from a recursive to an iterative approach. #832, #1419, #1835
      "},{"location":"home/releases/#further-changes","title":"Further Changes","text":"
      • Added WhiteStone Bolt. #1830
      "},{"location":"home/releases/#deprecated-functions_1","title":"Deprecated functions","text":"

      This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):

      • Function iterator_wrapper are deprecated. Please use the member function items() instead.
      • Functions friend std::istream& operator<<(basic_json&, std::istream&) and friend std::ostream& operator>>(const basic_json&, std::ostream&) are deprecated. Please use friend std::istream& operator>>(std::istream&, basic_json&) and friend operator<<(std::ostream&, const basic_json&) instead.
      "},{"location":"home/releases/#v371","title":"v3.7.1","text":"

      Files

      • include.zip (273 KB)
      • include.zip.asc (1 KB)
      • json.hpp (789 KB)
      • json.hpp.asc (1 KB)

      Release date: 2019-11-06 SHA-256: b5ba7228f3c22a882d379e93d08eab4349458ee16fbf45291347994eac7dc7ce (json.hpp), 77b9f54b34e7989e6f402afb516f7ff2830df551c3a36973085e2c7a6b1045fe (include.zip)

      "},{"location":"home/releases/#summary_2","title":"Summary","text":"

      This release fixes several small bugs in the library. All changes are backward-compatible.

      "},{"location":"home/releases/#bug-fixes_2","title":"Bug Fixes","text":"
      • Fixed a segmentation fault when serializing std::int64_t minimum value. #1708 #1722
      • Fixed the contains() function for JSON Pointers. #1727 #1741
      • Fixed too lax SFINAE guard for conversion from std::pair and std::tuple to json. #1805 #1806 #1825 #1826
      • Fixed some regressions detected by UBSAN. Updated CI to use Clang-Tidy 7.1.0. #1716 #1728
      • Fixed integer truncation in iteration_proxy. #1797
      • Updated Hedley to v11 to fix a E2512 error in MSVC. #1799
      • Fixed a compile error in enum deserialization of non non-default-constructible types. #1647 #1821
      • Fixed the conversion from json to std::valarray.
      "},{"location":"home/releases/#improvements","title":"Improvements","text":"
      • The items() function can now be used with a custom string type. #1765
      • Made json_pointer::back const. #1764 #1769
      • Meson is part of the release archive. #1672 #1694
      • Improved documentation on the Meson and Spack package manager. #1694 #1720
      "},{"location":"home/releases/#further-changes_1","title":"Further Changes","text":"
      • Added GitHub Workflow with ubuntu-latest/GCC 7.4.0 as CI step.
      • Added GCC 9 to Travis CI to compile with C++20 support. #1724
      • Added MSVC 2019 to the AppVeyor CI. #1780
      • Added badge to fuzzing status.
      • Fixed some cppcheck warnings. #1760
      • Fixed several typos in the documentation. #1720 #1767 #1803
      • Added documentation on the JSON_THROW_USER, JSON_TRY_USER, and JSON_CATCH_USER macros to control user-defined exception handling.
      • Used GitHub's CODEOWNERS and SECURITY feature.
      • Removed GLOB from CMake files. #1779
      • Updated to Doctest 2.3.5.
      "},{"location":"home/releases/#deprecated-functions_2","title":"Deprecated functions","text":"

      This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):

      • Function iterator_wrapper are deprecated. Please use the member function items() instead.
      • Functions friend std::istream& operator<<(basic_json&, std::istream&) and friend std::ostream& operator>>(const basic_json&, std::ostream&) are deprecated. Please use friend std::istream& operator>>(std::istream&, basic_json&) and friend operator<<(std::ostream&, const basic_json&) instead.
      "},{"location":"home/releases/#v370","title":"v3.7.0","text":"

      Files

      • include.zip (143 KB)
      • include.zip.asc (1 KB)
      • json.hpp (782 KB)
      • json.hpp.asc (1 KB)

      Release date: 2019-07-28 SHA-256: a503214947952b69f0062f572cb74c17582a495767446347ce2e452963fc2ca4 (json.hpp), 541c34438fd54182e9cdc68dd20c898d766713ad6d901fb2c6e28ff1f1e7c10d (include.zip)

      "},{"location":"home/releases/#summary_3","title":"Summary","text":"

      This release introduces a few convenience functions and performs a lot of house keeping (bug fixes and small improvements). All changes are backward-compatible.

      "},{"location":"home/releases/#new-features","title":"New Features","text":"
      • Add overload of the contains function to check if a JSON pointer is valid without throwing exceptions, just like its counterpart for object keys. #1600
      • Add a function to_string to allow for generic conversion to strings. #916 #1585
      • Add return value for the emplace_back function, returning a reference to the added element just like C++17 is introducing this for std::vector. #1609
      • Add info how to use the library with the pacman package manager on MSYS2. #1670
      "},{"location":"home/releases/#bug-fixes_3","title":"Bug Fixes","text":"
      • Fix an issue where typedefs with certain names yielded a compilation error. #1642 #1643
      • Fix a conversion to std::string_view in the unit tests. #1634 #1639
      • Fix MSVC Debug build. #1536 #1570 #1608
      • Fix get_to method to clear existing content before writing. #1511 #1555
      • Fix a -Wc++17-extensions warning. nodiscard attributes are now only used with Clang when -std=c++17 is used. #1535 #1551
      "},{"location":"home/releases/#improvements_1","title":"Improvements","text":"
      • Switch from Catch to doctest for the unit tests which speeds up compilation and runtime of the 112,112,308 tests.
      • Add an explicit section to the README about the frequently addressed topics character encoding, comments in JSON, and the order of object keys.
      "},{"location":"home/releases/#further-changes_2","title":"Further Changes","text":"
      • Use GNUInstallDirs to set library install directories. #1673
      • Fix links in the README. #1620 #1621 #1622 #1623 #1625
      • Mention json type on the documentation start page. #1616
      • Complete documentation of value() function with respect to type_error.302 exception. #1601
      • Fix links in the documentation. #1598
      • Add regression tests for MSVC. #1543 #1570
      • Use CircleCI for continuous integration.
      • Use Doozer for continuous integration on Linux (CentOS, Raspbian, Fedora)
      • Add tests to check each CMake flag (JSON_BuildTests, JSON_Install, JSON_MultipleHeaders, JSON_Sanitizer, JSON_Valgrind, JSON_NoExceptions, JSON_Coverage).
      • Use Hedley to avoid re-inventing several compiler-agnostic feature macros like JSON_DEPRECATED, JSON_NODISCARD, JSON_LIKELY, JSON_UNLIKELY, JSON_HAS_CPP_14, or JSON_HAS_CPP_17. Functions taking or returning pointers are annotated accordingly when a pointer will not be null.
      • Build and run tests on AppVeyor in DEBUG and RELEASE mode.
      "},{"location":"home/releases/#deprecated-functions_3","title":"Deprecated functions","text":"

      This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):

      • Function iterator_wrapper are deprecated. Please use the member function items() instead.
      • Functions friend std::istream& operator<<(basic_json&, std::istream&) and friend std::ostream& operator>>(const basic_json&, std::ostream&) are deprecated. Please use friend std::istream& operator>>(std::istream&, basic_json&) and friend operator<<(std::ostream&, const basic_json&) instead.
      "},{"location":"home/releases/#v361","title":"v3.6.1","text":"

      Files

      • include.zip (136 KB)
      • include.zip.asc (1 KB)
      • json.hpp (711 KB)
      • json.hpp.asc (1 KB)

      Release date: 2019-03-20 SHA-256: d2eeb25d2e95bffeb08ebb7704cdffd2e8fca7113eba9a0b38d60a5c391ea09a (json.hpp), 69cc88207ce91347ea530b227ff0776db82dcb8de6704e1a3d74f4841bc651cf (include.zip)

      "},{"location":"home/releases/#summary_4","title":"Summary","text":"

      This release fixes a regression and a bug introduced by the earlier 3.6.0 release. All changes are backward-compatible.

      "},{"location":"home/releases/#bug-fixes_4","title":"Bug Fixes","text":"
      • Fixed regression of #590 which could lead to compilation errors with GCC 7 and GCC 8. #1530
      • Fixed a compilation error when <Windows.h> was included. #1531
      "},{"location":"home/releases/#further-changes_3","title":"Further Changes","text":"
      • Fixed a warning for missing field initializers. #1527
      "},{"location":"home/releases/#deprecated-functions_4","title":"Deprecated functions","text":"

      This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):

      • Function iterator_wrapper are deprecated. Please use the member function items() instead.
      • Functions friend std::istream& operator<<(basic_json&, std::istream&) and friend std::ostream& operator>>(const basic_json&, std::ostream&) are deprecated. Please use friend std::istream& operator>>(std::istream&, basic_json&) and friend operator<<(std::ostream&, const basic_json&) instead.
      "},{"location":"home/releases/#v360","title":"v3.6.0","text":"

      Files

      • include.zip (136 KB)
      • include.zip.asc (1 KB)
      • json.hpp (711 KB)
      • json.hpp.asc (1 KB)

      Release date: 2019-03-20 SHA-256: ce9839370f28094c71107c405affb3b08c4a098154988014cbb0800b1c44a831 (json.hpp), 237c5e66e7f8186a02804ce9dbd5f69ce89fe7424ef84adf6142e973bd9532f4 (include.zip)

      \u2139\ufe0f This release introduced a regression. Please update to version 3.6.1!

      "},{"location":"home/releases/#summary_5","title":"Summary","text":"

      This release adds some convenience functions for JSON Pointers, introduces a contains function to check if a key is present in an object, and improves the performance of integer serialization. Furthermore, a lot of small bug fixes and improvements have been made. All changes are backward-compatible.

      "},{"location":"home/releases/#new-features_1","title":"New Features","text":"
      • Overworked the public interface for JSON Pointers. The creation of JSON Pointers is simplified with operator/ and operator/=. JSON Pointers can be inspected with empty, back, and parent_pointer, and manipulated with push_back and pop_back. #1434
      • Added a boolean method contains to check whether an element exists in a JSON object with a given key. Returns false when called on non-object types. #1471 #1474
      "},{"location":"home/releases/#bug-fixes_5","title":"Bug Fixes","text":"
      • Fixed a compilation issues with libc 2.12. #1483 #1514
      • Fixed endian conversion on PPC64. #1489
      • Fixed library to compile with GCC 9. #1472 #1492
      • Fixed a compilation issue with GCC 7 on CentOS. #1496
      • Fixed an integer overflow. #1447
      • Fixed buffer flushing in serializer. #1445 #1446
      "},{"location":"home/releases/#improvements_2","title":"Improvements","text":"
      • The performance of dumping integers has been greatly improved. #1411
      • Added CMake parameter JSON_Install to control whether the library should be installed (default: on). #1330
      • Fixed a lot of compiler and linter warnings. #1400 #1435 #1502
      • Reduced required CMake version from 3.8 to 3.1. #1409 #1428 #1441 #1498
      • Added nodiscard attribute to meta(), array(), object(), from_cbor, from_msgpack, from_ubjson, from_bson, and parse. #1433
      "},{"location":"home/releases/#further-changes_4","title":"Further Changes","text":"
      • Added missing headers. #1500
      • Fixed typos and broken links in README. #1417 #1423 #1425 #1451 #1455 #1491
      • Fixed documentation of parse function. #1473
      • Suppressed warning that cannot be fixed inside the library. #1401 #1468
      • Imroved package manager suppert:
        • Updated Buckaroo instructions. #1495
        • Improved Meson support. #1463
        • Added Conda package manager documentation. #1430
        • Added NuGet package manager documentation. #1132
      • Continuous Integration
        • Removed unstable or deprecated Travis builders (Xcode 6.4 - 8.2) and added Xcode 10.1 builder.
        • Added Clang 7 to Travis CI.
        • Fixed AppVeyor x64 builds. #1374 #1414
      • Updated thirdparty libraries:
        • Catch 1.12.0 -> 1.12.2
        • Google Benchmark 1.3.0 -> 1.4.1
        • Doxygen 1.8.15 -> 1.8.16
      "},{"location":"home/releases/#deprecated-functions_5","title":"Deprecated functions","text":"

      This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):

      • Function iterator_wrapper are deprecated. Please use the member function items() instead.
      • Functions friend std::istream& operator<<(basic_json&, std::istream&) and friend std::ostream& operator>>(const basic_json&, std::ostream&) are deprecated. Please use friend std::istream& operator>>(std::istream&, basic_json&) and friend operator<<(std::ostream&, const basic_json&) instead.
      "},{"location":"home/releases/#v350","title":"v3.5.0","text":"

      Files

      • include.zip (133 KB)
      • include.zip.asc (1 KB)
      • json.hpp (693 KB)
      • json.hpp.asc (1 KB)

      Release date: 2018-12-22 SHA-256: 8a6dbf3bf01156f438d0ca7e78c2971bca50eec4ca6f0cf59adf3464c43bb9d5 (json.hpp), 3564da9c5b0cf2e032f97c69baedf10ddbc98030c337d0327a215ea72259ea21 (include.zip)

      "},{"location":"home/releases/#summary_6","title":"Summary","text":"

      This release introduces the support for structured bindings and reading from FILE*. Besides, a few bugs have been fixed. All changes are backward-compatible.

      "},{"location":"home/releases/#new-features_2","title":"New Features","text":"
      • Structured bindings are now supported for JSON objects and arrays via the items() member function, so finally this code is possible:

        for (auto& [key, val] : j.items()) {\n    std::cout << key << ':' << val << '\\n';\n}\n
        #1388 #1391

      • Added support for reading from FILE* to support situations in which streams are nit available or would require too much RAM. #1370 #1392

      "},{"location":"home/releases/#bug-fixes_6","title":"Bug Fixes","text":"
      • The eofbit was not set for input streams when the end of a stream was reached while parsing. #1340 #1343
      • Fixed a bug in the SAX parser for BSON arrays.
      "},{"location":"home/releases/#improvements_3","title":"Improvements","text":"
      • Added support for Clang 5.0.1 (PS4 version). #1341 #1342
      "},{"location":"home/releases/#further-changes_5","title":"Further Changes","text":"
      • Added a warning for implicit conversions to the documentation: It is not recommended to use implicit conversions when reading from a JSON value. Details about this recommendation can be found here. #1363
      • Fixed typos in the documentation. #1329 #1380 #1382
      • Fixed a C4800 warning. #1364
      • Fixed a -Wshadow warning #1346
      • Wrapped std::snprintf calls to avoid error in MSVC. #1337
      • Added code to allow installation via Meson. #1345
      "},{"location":"home/releases/#deprecated-functions_6","title":"Deprecated functions","text":"

      This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):

      • Function iterator_wrapper are deprecated. Please use the member function items() instead.
      • Functions friend std::istream& operator<<(basic_json&, std::istream&) and friend std::ostream& operator>>(const basic_json&, std::ostream&) are deprecated. Please use friend std::istream& operator>>(std::istream&, basic_json&) and friend operator<<(std::ostream&, const basic_json&) instead.
      "},{"location":"home/releases/#v340","title":"v3.4.0","text":"

      Files

      • include.zip (132 KB)
      • include.zip.asc (1 KB)
      • json.hpp (689 KB)
      • json.hpp.asc (1 KB)

      Release date: 2018-10-30 SHA-256: 63da6d1f22b2a7bb9e4ff7d6b255cf691a161ff49532dcc45d398a53e295835f (json.hpp), bfec46fc0cee01c509cf064d2254517e7fa80d1e7647fea37cf81d97c5682bdc (include.zip)

      "},{"location":"home/releases/#summary_7","title":"Summary","text":"

      This release introduces three new features:

      • BSON (Binary JSON) is next to CBOR, MessagePack, and UBJSON the fourth binary (de)serialization format supported by the library.
      • Adjustable error handlers for invalid Unicode allows to specify the behavior when invalid byte sequences are serialized.
      • Simplified enum/JSON mapping with a macro in case the default mapping to integers is not desired.

      Furthermore, some effort has been invested in improving the parse error messages. Besides, a few bugs have been fixed. All changes are backward-compatible.

      "},{"location":"home/releases/#new-features_3","title":"New Features","text":"
      • The library can read and write a subset of BSON (Binary JSON). All data types known from JSON are supported, whereas other types more tied to MongoDB such as timestamps, object ids, or binary data are currently not implemented. See the README for examples. #1244 #1320
      • The behavior when the library encounters an invalid Unicode sequence during serialization can now be controlled by defining one of three Unicode error handlers: (1) throw an exception (default behavior), (2) replace invalid sequences by the Unicode replacement character (U+FFFD), or (3) ignore/filter invalid sequences. See the documentation of the dump function for examples. #1198 #1314
      • To easily specify a user-defined enum/JSON mapping, a macro NLOHMANN_JSON_SERIALIZE_ENUM has been introduced. See the README section for more information. #1208 #1323
      "},{"location":"home/releases/#bug-fixes_7","title":"Bug Fixes","text":"
      • fixed truncation #1286 #1315
      • fixed an issue with std::pair #1299 #1301
      • fixed an issue with std::variant #1292 #1294
      • fixed a bug in the JSON Pointer parser
      "},{"location":"home/releases/#improvements_4","title":"Improvements","text":"
      • The diagnosis messages for parse errors have been improved: error messages now indicated line/column positions where possible (in addition to a byte count) and also the context in which the error occurred (e.g., \"while parsing a JSON string\"). Example: error parse error at 2: syntax error - invalid string: control character must be escaped; last read: '<U+0009>' is now reported as parse error at line 1, column 2: syntax error while parsing value - invalid string: control character U+0009 (HT) must be escaped to \\u0009 or \\t; last read: '<U+0009>'. #1280 #1288 #1303
      "},{"location":"home/releases/#further-changes_6","title":"Further Changes","text":"
      • improved Meson documentation #1305
      • fixed some more linter warnings #1280
      • fixed Clang detection for third-party Google Benchmark library #1277
      "},{"location":"home/releases/#deprecated-functions_7","title":"Deprecated functions","text":"

      This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):

      • Function iterator_wrapper are deprecated. Please use the member function items() instead.
      • Functions friend std::istream& operator<<(basic_json&, std::istream&) and friend std::ostream& operator>>(const basic_json&, std::ostream&) are deprecated. Please use friend std::istream& operator>>(std::istream&, basic_json&) and friend operator<<(std::ostream&, const basic_json&) instead.
      "},{"location":"home/releases/#v330","title":"v3.3.0","text":"

      Files

      • include.zip (123 KB)
      • include.zip.asc (1 KB)
      • json.hpp (635 KB)
      • json.hpp.asc (1 KB)

      Release date: 2018-10-05 SHA-256: f1327bb60c58757a3dd2b0c9c45d49503d571337681d950ec621f8374bcc14d4 (json.hpp), 9588d63557333aaa485e92221ec38014a85a6134e7486fe3441e0541a5a89576 (include.zip)

      "},{"location":"home/releases/#summary_8","title":"Summary","text":"

      This release adds support for GCC 4.8. Furthermore, it adds a function get_to to write a JSON value to a passed reference. Another topic of this release was the CMake support which has been overworked and documented.

      Besides, a lot of bugs have been fixed and slight improvements have been made. All changes are backward-compatible.

      "},{"location":"home/releases/#new-features_4","title":"New Features","text":"
      • The library can now also built with GCC 4.8. Though this compiler does not fully support C++11, it can successfully compile and run the test suite. Note that bug 57824 in GCC 4.8 still forbids to use multiline raw strings in arguments to macros. #1257
      • Added new function get_to to write a JSON value to a passed reference. The destination type is automatically derived which allows more succinct code compared to the get function. #1227 #1231
      "},{"location":"home/releases/#bug-fixes_8","title":"Bug Fixes","text":"
      • Fixed a bug in the CMake file that made target_link_libraries to not properly include nlohmann_json. #1243 #1245 #1260
      • Fixed a warning in MSVC 2017 complaining about a constexpr if. #1204 #1268 #1272
      • Fixed a bug that prevented compilation with ICPC. #755 #1222
      • Improved the SFINAE correctness to fix a bug in the conversion operator. #1237 #1238
      • Fixed a -Wctor-dtor-privacy warning. #1224
      • Fixed a warning on a lambda in unevaluated context. #1225 #1230
      • Fixed a bug introduced in version 3.2.0 where defining JSON_CATCH_USER led to duplicate macro definition of JSON_INTERNAL_CATCH. #1213 #1214
      • Fixed a bug that prevented compilation with Clang 3.4.2 in RHEL 7. #1179 #1249
      "},{"location":"home/releases/#improvements_5","title":"Improvements","text":"
      • Added documentation on CMake integration of the library. #1270
      • Changed the CMake file to use find_package(nlohmann_json) without installing the library. #1202
      • Improved error messages in case operator[] is used with the wrong combination (json.exception.type_error.305) of JSON container type and argument type. Example: \"cannot use operator[] with a string argument\". #1220 #1221
      • Added a license and version information to the Meson build file. #1252
      • Removed static assertions to indicated missing to_json or from_json functions as such assertions do not play well with SFINAE. These assertions also led to problems with GMock. #960 #1212 #1228
      • The test suite now does not wait forever if run in a wrong directory and input files are not found. #1262
      • The test suite does not show deprecation warnings for deprecated functions which frequently led to confusion. #1271
      "},{"location":"home/releases/#further-changes_7","title":"Further Changes","text":"
      • GCC 4.8 and Xcode 10 were added to the continuous integration suite at Travis.
      • Added lgtm checks to pull requests.
      • Added tests for CMake integration. #1260
      "},{"location":"home/releases/#deprecated-functions_8","title":"Deprecated functions","text":"

      This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):

      • Function iterator_wrapper are deprecated. Please use the member function items() instead.
      • Functions friend std::istream& operator<<(basic_json&, std::istream&) and friend std::ostream& operator>>(const basic_json&, std::ostream&) are deprecated. Please use friend std::istream& operator>>(std::istream&, basic_json&) and friend operator<<(std::ostream&, const basic_json&) instead.
      "},{"location":"home/releases/#v320","title":"v3.2.0","text":"

      Files

      • include.zip (124 KB)
      • include.zip.asc (1 KB)
      • json.hpp (636 KB)
      • json.hpp.asc (1 KB)

      Release date: 2018-08-20 SHA-256: ce6b5610a051ec6795fa11c33854abebb086f0fd67c311f5921c3c07f9531b44 (json.hpp), 35ee642558b90e2f9bc758995c4788c4b4d4dec54eef95fb8f38cb4d49c8fc7c (include.zip)

      "},{"location":"home/releases/#summary_9","title":"Summary","text":"

      This release introduces a SAX interface to the library. While this may be a very special feature used by only few people, it allowed to unify all functions that consumed input and created some kind of JSON value. Internally, now all existing functions like parse, accept, from_cbor, from_msgpack, and from_ubjson use the SAX interface with different event processors. This allowed to separate the input processing from the value generation. Furthermore, throwing an exception in case of a parse error is now optional and up to the event processor. Finally, the JSON parser is now non-recursive (meaning it does not use the call stack, but std::vector<bool> to track the hierarchy of structured values) which allows to process nested input more efficiently.

      Furthermore, the library finally is able to parse from wide string types. This is the first step toward opening the library from UTF-8 to UTF-16 and UTF-32.

      This release further fixes several bugs in the library. All changes are backward-compatible.

      "},{"location":"home/releases/#new-features_5","title":"New Features","text":"
      • added a parser with a SAX interface (#971, #1153)
      • support to parse from wide string types std::wstring, std::u16string, and std::u32string; the input will be converted to UTF-8 (#1031)
      • added support for std::string_view when using C++17 (#1028)
      • allow to roundtrip std::map and std::unordered_map from JSON if key type is not convertible to string; in these cases, values are serialized to arrays of pairs (#1079, #1089, #1133, #1138)
      "},{"location":"home/releases/#bug-fixes_9","title":"Bug Fixes","text":"
      • allow to create nullptr_t from JSON allowing to properly roundtrip null values (#1169)
      • allow compare user-defined string types (#1130)
      • better support for algorithms using iterators from items() (#1045, #1134)
      • added parameter to avoid compilation error with MSVC 2015 debug builds (#1114)
      • re-added accidentally skipped unit tests (#1176)
      • fixed MSVC issue with std::swap (#1168)
      "},{"location":"home/releases/#improvements_6","title":"Improvements","text":"
      • key() function for iterators returns a const reference rather than a string copy (#1098)
      • binary formats CBOR, MessagePack, and UBJSON now supports float as type for floating-point numbers (#1021)
      "},{"location":"home/releases/#further-changes_8","title":"Further Changes","text":"
      • changed issue templates
      • improved continuous integration: added builders for Xcode 9.3 and 9.4, added builders for GCC 8 and Clang 6, added builder for MinGW, added builders for MSVC targeting x86
      • required CMake version is now at least 3.8 (#1040)
      • overworked CMake file wrt. packaging (#1048)
      • added package managers: Spack (#1041) and CocoaPods (#1148)
      • fixed Meson include directory (#1142)
      • preprocessor macro JSON_SKIP_UNSUPPORTED_COMPILER_CHECK can skip the rejection of unsupported compilers - use at your own risk! (#1128)
      • preprocessor macro JSON_INTERNAL_CATCH/JSON_INTERNAL_CATCH_USER allows to control the behavior of exception handling inside the library (#1187)
      • added note on char to JSON conversion
      • added note how to send security-related issue via encrypted email
      • removed dependency to std::stringstream (#1117)
      • added SPDX-License-Identifier
      • added updated JSON Parsing Test Suite, described in Parsing JSON is a Minefield \ud83d\udca3
      • updated to Catch 1.12.0
      "},{"location":"home/releases/#deprecated-functions_9","title":"Deprecated functions","text":"

      This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):

      • Function iterator_wrapper are deprecated. Please use the member function items() instead.
      • Functions friend std::istream& operator<<(basic_json&, std::istream&) and friend std::ostream& operator>>(const basic_json&, std::ostream&) are deprecated. Please use friend std::istream& operator>>(std::istream&, basic_json&) and friend operator<<(std::ostream&, const basic_json&) instead.
      "},{"location":"home/releases/#v312","title":"v3.1.2","text":"

      Files

      • include.zip (115 KB)
      • include.zip.asc (1 KB)
      • json.hpp (582 KB)
      • json.hpp.asc (1 KB)

      Release date: 2018-03-14 SHA-256: fbdfec4b4cf63b3b565d09f87e6c3c183bdd45c5be1864d3fcb338f6f02c1733 (json.hpp), 495362ee1b9d03d9526ba9ccf1b4a9c37691abe3a642ddbced13e5778c16660c (include.zip)

      "},{"location":"home/releases/#summary_10","title":"Summary","text":"

      This release fixes several bugs in the library. All changes are backward-compatible.

      "},{"location":"home/releases/#bug-fixes_10","title":"Bug Fixes","text":"
      • Fixed a memory leak occurring in the parser callback (#1001).
      • Different specializations of basic_json (e.g., using different template arguments for strings or objects) can now be used in assignments (#972, #977, #986).
      • Fixed a logical error in an iterator range check (#992).
      "},{"location":"home/releases/#improvements_7","title":"Improvements","text":"
      • The parser and the serialization now support user-defined string types (#1006, #1009).
      "},{"location":"home/releases/#further-changes_9","title":"Further Changes","text":"
      • Clang Analyzer is now used as additional static analyzer; see make clang_analyze.
      • Overworked README by adding links to the documentation (#981).
      "},{"location":"home/releases/#deprecated-functions_10","title":"Deprecated functions","text":"

      This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):

      • Function iterator_wrapper are deprecated. Please use the member function items() instead.
      • Functions friend std::istream& operator<<(basic_json&, std::istream&) and friend std::ostream& operator>>(const basic_json&, std::ostream&) are deprecated. Please use friend std::istream& operator>>(std::istream&, basic_json&) and friend operator<<(std::ostream&, const basic_json&) instead.
      "},{"location":"home/releases/#v311","title":"v3.1.1","text":"

      Files

      • include.zip (114 KB)
      • include.zip.asc (1 KB)
      • json.hpp (577 KB)
      • json.hpp.asc (1 KB)

      Release date: 2018-02-13 SHA-256: e14ce5e33d6a2daf748026bd4947f3d9686ca4cfd53d10c3da46a0a9aceb7f2e (json.hpp), fde771d4b9e4f222965c00758a2bdd627d04fb7b59e09b7f3d1965abdc848505 (include.zip)

      "},{"location":"home/releases/#summary_11","title":"Summary","text":"

      This release fixes several bugs in the library. All changes are backward-compatible.

      "},{"location":"home/releases/#bug-fixes_11","title":"Bug Fixes","text":"
      • Fixed parsing of CBOR strings with indefinite length (#961). Earlier versions of this library misinterpreted the CBOR standard and rejected input with the 0x7F start byte.
      • Fixed user-defined conversion to vector type (#924, #969). A wrong SFINAE check rejected code though a user-defined conversion was provided.
      • Fixed documentation of the parser behavior for objects with duplicate keys (#963). The exact behavior is not specified by RFC 8259 and the library now also provides no guarantee which object key is stored.
      • Added check to detect memory overflow when parsing UBJSON containers (#962). The optimized UBJSON format allowed for specifying an array with billions of null elements with a few bytes and the library did not check whether this size exceeded max_size().
      "},{"location":"home/releases/#further-changes_10","title":"Further Changes","text":"
      • Code coverage is now calculated for the individual header files, allowing to find uncovered lines more quickly than by browsing through the single header version (#953, #957).
      • A Makefile target run_benchmarks was added to quickly build and run the benchmark suite.
      • The documentation was harmonized with respect to the header inclusion (#955). Now all examples and the README use #include <nlohmann/json.hpp> to allow for selecting single_include or include or whatever installation folder as include directory.
      • Added note on how to use the library with the cget package manager (#954).
      "},{"location":"home/releases/#deprecated-functions_11","title":"Deprecated functions","text":"

      This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):

      • Function iterator_wrapper are deprecated. Please use the member function items() instead.
      • Functions friend std::istream& operator<<(basic_json&, std::istream&) and friend std::ostream& operator>>(const basic_json&, std::ostream&) are deprecated. Please use friend std::istream& operator>>(std::istream&, basic_json&) and friend operator<<(std::ostream&, const basic_json&) instead.
      "},{"location":"home/releases/#v310","title":"v3.1.0","text":"

      Files

      • include.zip (114 KB)
      • include.zip.asc (1 KB)
      • json.hpp (577 KB)
      • json.hpp.asc (1 KB)

      Release date: 2018-02-01 SHA-256: d40f614d10a6e4e4e80dca9463da905285f20e93116c36d97d4dc1aa63d10ba4 (json.hpp), 2b7234fca394d1e27b7e017117ed80b7518fafbb4f4c13a7c069624f6f924673 (include.zip)

      "},{"location":"home/releases/#summary_12","title":"Summary","text":"

      This release adds support for the UBJSON format and JSON Merge Patch. It also contains some minor changes and bug fixes. All changes are backward-compatible.

      "},{"location":"home/releases/#new-features_6","title":"New features","text":"
      • The library now supports UBJSON (Universal Binary JSON Specification) as binary format to read and write JSON values space-efficiently. See the documentation overview for a comparison of the different formats CBOR, MessagePack, and UBJSON.
      • JSON Merge Patch (RFC 7386) offers an intuitive means to describe patches between JSON values (#876, #877). See the documentation of merge_patch for more information.
      "},{"location":"home/releases/#improvements_8","title":"Improvements","text":"
      • The library now uses the Grisu2 algorithm for printing floating-point numbers (based on the reference implementation by Florian Loitsch) which produces a short representation which is guaranteed to round-trip (#360, #935, #936).
      • The UTF-8 handling was further simplified by using the decoder of Bj\u00f6rn Hoehrmann in more scenarios.
      "},{"location":"home/releases/#reorganization","title":"Reorganization","text":"
      • Though the library is released as a single header, its development got more and more complicated. With this release, the header is split into several files and the single-header file json.hpp can be generated from these development sources. In the repository, folder include contains the development sources and single_include contains the single json.hpp header (#700, #906, #907, #910, #911, #915, #920, #924, #925, #928, #944).
      • The split further allowed for a forward declaration header include/nlohmann/json_fwd.hpp to speed up compilation times (#314).
      "},{"location":"home/releases/#further-changes_11","title":"Further changes","text":"
      • Google Benchmark is now used for micro benchmarks (see benchmarks folder, #921).
      • The serialization (JSON and binary formats) now properly work with the libraries string template parameter, allowing for optimized string implementations to be used in constraint environments such as embedded software (#941, #950).
      • The exceptional behavior can now be overridden by defining macros JSON_THROW_USER, JSON_TRY_USER, and JSON_CATCH_USER, defining the behavior of throw, try and catch, respectively. This allows to switch off C++'s exception mechanism yet still execute user-defined code in case an error condition occurs (#938).
      • To facilitate the interplay with flex and Bison, the library does not use the variable name yytext any more as it could clash with macro definitions (#933).
      • The library now defines NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, and NLOHMANN_JSON_VERSION_PATCH to allow for conditional compilation based on the included library version (#943, #948).
      • A compilation error with ICC has been fixed (#947).
      • Typos and links in the documentation have been fixed (#900, #930).
      • A compiler error related to incomplete types has been fixed (#919).
      • The tests form the UTF-8 decoder stress test have been added to the test suite.
      "},{"location":"home/releases/#deprecated-functions_12","title":"Deprecated functions","text":"
      • Function iterator_wrapper has been deprecated (#874). Since its introduction, the name was up for discussion, as it was too technical. We now introduced the member function items() with the same semantics. iterator_wrapper will be removed in the next major version (i.e., 4.0.0).

      Furthermore, the following functions are deprecated since version 3.0.0 and will be removed in the next major version (i.e., 4.0.0):

      • friend std::istream& operator<<(basic_json&, std::istream&)
      • friend std::ostream& operator>>(const basic_json&, std::ostream&)

      Please use friend std::istream& operator>>(std::istream&, basic_json&) and friend operator<<(std::ostream&, const basic_json&) instead.

      "},{"location":"home/releases/#v301","title":"v3.0.1","text":"

      Files

      • json.hpp (502 KB)
      • json.hpp.asc (1 KB)

      Release date: 2017-12-29 SHA-256: c9b3591f1bb94e723a0cd7be861733a3a555b234ef132be1e9027a0364118c4c

      "},{"location":"home/releases/#summary_13","title":"Summary","text":"

      This release fixes small issues in the implementation of JSON Pointer and JSON Patch. All changes are backward-compatible.

      "},{"location":"home/releases/#changes","title":"Changes","text":"
      • The \"copy\" operation of JSON Patch (RFC 6902) requests that it is an error if the target path points into a non-existing array or object (see #894 for a detailed description). This release fixes the implementation to detect such invalid target paths and throw an exception.
      • An array index in a JSON Pointer (RFC 6901) must be an integer. This release fixes the implementation to throw an exception in case invalid array indices such as 10e2 are used.
      • Added the JSON Patch tests from Byron Ruth and Mike McCabe.
      • Fixed the documentation of the at(ptr) function with JSON Pointers to list all possible exceptions (see #888).
      • Updated the container overview documentation (see #883).
      • The CMake files now respect the BUILD_TESTING option (see #846, #885)
      • Fixed some compiler warnings (see #858, #882).
      "},{"location":"home/releases/#deprecated-functions_13","title":"Deprecated functions","text":"

      To unify the interfaces and to improve similarity with the STL, the following functions are deprecated since version 3.0.0 and will be removed in the next major version (i.e., 4.0.0):

      • friend std::istream& operator<<(basic_json&, std::istream&)
      • friend std::ostream& operator>>(const basic_json&, std::ostream&)

      Please use friend std::istream& operator>>(std::istream&, basic_json&) and friend operator<<(std::ostream&, const basic_json&) instead.

      "},{"location":"home/releases/#v300","title":"v3.0.0","text":"

      Files

      • json.hpp (501 KB)
      • json.hpp.asc (1 KB)

      Release date: 2017-12-17 SHA-256: 076d4a0cb890a3c3d389c68421a11c3d77c64bd788e85d50f1b77ed252f2a462

      "},{"location":"home/releases/#summary_14","title":"Summary","text":"

      After almost a year, here is finally a new release of JSON for Modern C++, and it is a major one! As we adhere to semantic versioning, this means the release includes some breaking changes, so please read the next section carefully before you update. But don't worry, we also added a few new features and put a lot of effort into fixing a lot of bugs and straighten out a few inconsistencies.

      "},{"location":"home/releases/#breaking-changes","title":"Breaking changes","text":"

      This section describes changes that change the public API of the library and may require changes in code using a previous version of the library. In section \"Moving from 2.x.x to 3.0.0\" at the end of the release notes, we describe in detail how existing code needs to be changed.

      • The library now uses user-defined exceptions instead of re-using those defined in <stdexcept> (#244). This not only allows to add more information to the exceptions (every exception now has an identifier, and parse errors contain the position of the error), but also to easily catch all library exceptions with a single catch(json::exception).
      • When strings with a different encoding as UTF-8 were stored in JSON values, their serialization could not be parsed by the library itself, as only UTF-8 is supported. To enforce this library limitation and improve consistency, non-UTF-8 encoded strings now yield a json::type_error exception during serialization (#838). The check for valid UTF-8 is realized with code from Bj\u00f6rn Hoehrmann.
      • NaN and infinity values can now be stored inside the JSON value without throwing an exception. They are, however, still serialized as null (#388).
      • The library's iterator tag was changed from RandomAccessIterator to BidirectionalIterator (#593). Supporting RandomAccessIterator was incorrect as it assumed an ordering of values in a JSON objects which are unordered by definition.
      • The library does not include the standard headers <iostream>, <ctype>, and <stdexcept> any more. You may need to add these headers to code relying on them.
      • Removed constructor explicit basic_json(std::istream& i, const parser_callback_t cb = nullptr) which was deprecated in version 2.0.0 (#480).
      "},{"location":"home/releases/#deprecated-functions_14","title":"Deprecated functions","text":"

      To unify the interfaces and to improve similarity with the STL, the following functions are now deprecated and will be removed in the next major version (i.e., 4.0.0):

      • friend std::istream& operator<<(basic_json&, std::istream&)
      • friend std::ostream& operator>>(const basic_json&, std::ostream&)

      Please use friend std::istream& operator>>(std::istream&, basic_json&) and friend operator<<(std::ostream&, const basic_json&) instead.

      "},{"location":"home/releases/#new-features_7","title":"New features","text":"

      With all this breaking and deprecation out of the way, let's talk about features!

      • We improved the diagnostic information for syntax errors (#301). Now, an exception json::parse_error is thrown which contains a detailed message on the error, but also a member byte to indicate the byte offset in the input where the error occurred.
      • We added a non-throwing syntax check (#458): The new accept function returns a Boolean indicating whether the input is proper JSON. We also added a Boolean parameter allow_exceptions to the existing parse functions to return a discarded value in case a syntax error occurs instead of throwing an exception.
      • An update function was added to merge two JSON objects (#428). In case you are wondering: the name was inspired by Python.
      • The insert function now also supports an iterator range to add elements to an object.
      • The binary exchange formats CBOR and MessagePack can now be parsed from input streams and written to output streams (#477).
      • Input streams are now only read until the end of a JSON value instead of the end of the input (#367).
      • The serialization function dump now has two optional parameters ensure_ascii to escape all non-ASCII characters with \\uxxxx and an indent_char parameter to choose whether to indent with spaces or tabs (#654).
      • Added built-in type support for C arrays (#502), std::pair and std::tuple (#563, #614), enum and enum class (#545), std::vector<bool> (#494). Fixed support for std::valarray (#702), std::array (#553), and std::map<std::string, std::string> (#600, #607).
      "},{"location":"home/releases/#further-changes_12","title":"Further changes","text":"

      Furthermore, there have been a lot of changes under the hood:

      • Replaced the re2c generated scanner by a self-coded version which allows for a better modularization of the parser and better diagnostics. To test the new scanner, we added millions (8,860,608 to be exact) of unit tests to check all valid and invalid byte sequences of the Unicode standard.
      • Google's OSS-Fuzz is still constantly fuzz-testing the library and found several issues that were fixed in this release (#497, #504, #514, #516, #518, #519, #575).
      • We now also ignore UTF-8 byte order marks when parsing from an iterator range (#602).
      • Values can be now moved from initializer lists (#663).
      • Updated to Catch 1.9.7. Unfortunately, Catch2 currently has some performance issues.
      • The non-exceptional paths of the library are now annotated with __builtin_expect to optimize branch prediction as long as no error occurs.
      • MSVC now produces a stack trace in MSVC if a from_json or to_json function was not found for a user-defined type. We also added a debug visualizer nlohmann_json.natvis for better debugging in MSVC (#844).
      • Overworked the documentation and added even more examples.
      • The build workflow now relies on CMake and CTest. Special flags can be chosen with CMake, including coverage (JSON_Coverage), compilation without exceptions (JSON_NoExceptions), LLVM sanitizers (JSON_Sanitizer), or execution with Valgrind (JSON_Valgrind).
      • Added support for package managers Meson (#576), Conan (#566), Hunter (#671, #829), and vcpkg (#753).
      • Added CI builders: Xcode 8.3, 9.0, 9.1, and 9.2; GCC 7.2; Clang 3.8, 3.9, 4.0, and 5.0; Visual Studio 2017. The library is further built with C++17 settings on the latest Clang, GCC, and MSVC version to quickly detect new issues.
      "},{"location":"home/releases/#moving-from-2xx-to-300","title":"Moving from 2.x.x to 3.0.0","text":""},{"location":"home/releases/#user-defined-exceptions","title":"User-defined Exceptions","text":"

      There are five different exceptions inheriting from json::exception:

      • json::parse_error for syntax errors (including the binary formats),
      • json::invalid_iterator for errors related to iterators,
      • json::type_error for errors where functions were called with the wrong JSON type,
      • json::out_of_range for range errors, and
      • json::other_error for miscellaneous errors.

      To support these exception, the try/catch blocks of your code need to be adjusted:

      new exception previous exception parse_error.101 invalid_argument parse_error.102 invalid_argument parse_error.103 invalid_argument parse_error.104 invalid_argument parse_error.105 invalid_argument parse_error.106 domain_error parse_error.107 domain_error parse_error.108 domain_error parse_error.109 invalid_argument parse_error.110 out_of_range parse_error.111 invalid_argument parse_error.112 invalid_argument invalid_iterator.201 domain_error invalid_iterator.202 domain_error invalid_iterator.203 domain_error invalid_iterator.204 out_of_range invalid_iterator.205 out_of_range invalid_iterator.206 domain_error invalid_iterator.207 domain_error invalid_iterator.208 domain_error invalid_iterator.209 domain_error invalid_iterator.210 domain_error invalid_iterator.211 domain_error invalid_iterator.212 domain_error invalid_iterator.213 domain_error invalid_iterator.214 out_of_range type_error.301 domain_error type_error.302 domain_error type_error.303 domain_error type_error.304 domain_error type_error.305 domain_error type_error.306 domain_error type_error.307 domain_error type_error.308 domain_error type_error.309 domain_error type_error.310 domain_error type_error.311 domain_error type_error.313 domain_error type_error.314 domain_error type_error.315 domain_error out_of_range.401 out_of_range out_of_range.402 out_of_range out_of_range.403 out_of_range out_of_range.404 out_of_range out_of_range.405 domain_error other_error.501 domain_error"},{"location":"home/releases/#handling-of-nan-and-inf","title":"Handling of NaN and INF","text":"
      • If an overflow occurs during parsing a number from a JSON text, an exception json::out_of_range is thrown so that the overflow is detected early and roundtripping is guaranteed.

      • NaN and INF floating-point values can be stored in a JSON value and are not replaced by null. That is, the basic_json class behaves like double in this regard (no exception occurs). However, NaN and INF are serialized to null.

      "},{"location":"home/releases/#removal-of-deprecated-functions","title":"Removal of deprecated functions","text":"

      Function explicit basic_json(std::istream& i, const parser_callback_t cb = nullptr) should be replaced by the parse function: Let ss be a stream and cb be a parse callback function.

      Old code:

      json j(ss, cb);\n

      New code:

      json j = json::parse(ss, cb);\n

      If no callback function is used, also the following code works:

      json j;\nj << ss;\n

      or

      json j;\nss >> j;\n
      "},{"location":"home/releases/#v211","title":"v2.1.1","text":"

      Files

      • json.hpp (437 KB)
      • json.hpp.asc (1 KB)

      Release date: 2017-02-25 SHA-256: faa2321beb1aa7416d035e7417fcfa59692ac3d8c202728f9bcc302e2d558f57

      "},{"location":"home/releases/#summary_15","title":"Summary","text":"

      This release fixes a locale-related bug in the parser. To do so, the whole number handling (lexer, parser, and also the serialization) have been overworked. Furthermore, a lot of small changes added up that were added to this release. All changes are backward-compatible.

      "},{"location":"home/releases/#changes_1","title":"Changes","text":"
      • Locales that have a different character than . as decimal separator (e.g., the Norwegian locale nb_NO.UTF-8) led to truncated number parsing or parse errors. The library now has been fixed to work with any locale. Note that . is still the only valid decimal separator for JSON input.
      • Numbers like 1.0 were correctly parsed as floating-point number, but serialized as integer (1). Now, floating-point numbers correctly round trip.
      • Parsing incorrect JSON numbers with leading 0 (0123) could yield a buffer overflow. This is fixed now by detecting such errors directly by the lexer.
      • Constructing a JSON value from a pointer was incorrectly interpreted as a Boolean; such code will now yield a compiler error.
      • Comparing a JSON number with 0 led to a comparison with null. This is fixed now.
      • All throw calls are now wrapped in macros.
      • Starting during the preparation of this release (since 8 February 2017), commits and released files are cryptographically signed with this GPG key. Previous releases have also been signed.
      • The parser for MessagePack and CBOR now supports an optional start index parameter to define a byte offset for the parser.
      • Some more warnings have been fixed. With Clang, the code compiles without warnings with -Weverything (well, it needs -Wno-documentation-unknown-command and -Wno-deprecated-declarations, but you get the point).
      • The code can be compiled easier with many Android NDKs by avoiding macros like UINT8_MAX which previously required defining a preprocessor macro for compilation.
      • The unit tests now compile two times faster.
      • Cotire is used to speed up the build.
      • Fixed a lot of typos in the documentation.
      • Added a section to the README file that lists all used third-party code/tools.
      • Added a note on constructing a string value vs. parsing.
      • The test suite now contains 11202597 unit tests.
      • Improved the Doxygen documentation by shortening the template parameters of class basic_json.
      • Removed Doozer.
      • Added Codacity.
      • Upgraded Catch to version 1.7.2.
      "},{"location":"home/releases/#v210","title":"v2.1.0","text":"

      Files

      • json.hpp (426 KB)
      • json.hpp.asc (1 KB)
      • Release date: 2017-01-28
      • SHA-256: a571dee92515b685784fd527e38405cf3f5e13e96edbfe3f03d6df2e363a767b
      "},{"location":"home/releases/#summary_16","title":"Summary","text":"

      This release introduces a means to convert from/to user-defined types. The release is backwards compatible.

      "},{"location":"home/releases/#changes_2","title":"Changes","text":"
      • The library now offers an elegant way to convert from and to arbitrary value types. All you need to do is to implement two functions: to_json and from_json. Then, a conversion is as simple as putting a = between variables. See the README for more information and examples.
      • Exceptions can now be switched off. This can be done by defining the preprocessor symbol JSON_NOEXCEPTION or by passing -fno-exceptions to your compiler. In case the code would usually thrown an exception, abort() is now called.
      • Information on the library can be queried with the new (static) function meta() which returns a JSON object with information on the version, compiler, and platform. See the documentation for an example.
      • A bug in the CBOR parser was fixed which led to a buffer overflow.
      • The function type_name() is now public. It allows to query the type of a JSON value as string.
      • Added the Big List of Naughty Strings as test case.
      • Updated to Catch v1.6.0.
      • Some typos in the documentation have been fixed.
      "},{"location":"home/releases/#v2010","title":"v2.0.10","text":"

      Files

      • json.hpp (409 KB)
      • json.hpp.asc (1 KB)
      • Release date: 2017-01-02
      • SHA-256: ec27d4e74e9ce0f78066389a70724afd07f10761009322dc020656704ad5296d
      "},{"location":"home/releases/#summary_17","title":"Summary","text":"

      This release fixes several security-relevant bugs in the MessagePack and CBOR parsers. The fixes are backwards compatible.

      "},{"location":"home/releases/#changes_3","title":"Changes","text":"
      • Fixed a lot of bugs in the CBOR and MesssagePack parsers. These bugs occurred if invalid input was parsed and then could lead in buffer overflows. These bugs were found with Google's OSS-Fuzz, see #405, #407, #408, #409, #411, and #412 for more information.
      • We now also use the Doozer continuous integration platform.
      • The complete test suite is now also run with Clang's address sanitizer and undefined-behavior sanitizer.
      • Overworked fuzz testing; CBOR and MessagePack implementations are now fuzz-tested. Furthermore, all fuzz tests now include a round trip which ensures created output can again be properly parsed and yields the same JSON value.
      • Clarified documentation of find() function to always return end() when called on non-object value types.
      • Moved thirdparty test code to test/thirdparty directory.
      "},{"location":"home/releases/#v209","title":"v2.0.9","text":"

      Files

      • json.hpp (406 KB)
      • json.hpp.asc (1 KB)
      • Release date: 2016-12-16
      • SHA-256: fbf3396f13e187d6c214c297bddc742d918ea9b55e10bfb3d9f458b9bfdc22e5
      "},{"location":"home/releases/#summary_18","title":"Summary","text":"

      This release implements with CBOR and MessagePack two binary serialization/deserialization formats. It further contains some small fixes and improvements. The fixes are backwards compatible.

      "},{"location":"home/releases/#changes_4","title":"Changes","text":"
      • The library can now read and write the binary formats CBOR (Concise Binary Object Representation) and MessagePack. Both formats are aimed to produce a very compact representation of JSON which can be parsed very efficiently. See the README file for more information and examples.
      • simplified the iteration implementation allowing to remove dozens of lines of code
      • fixed an integer overflow error detected by Google's OSS-Fuzz
      • suppressed documentation warnings inside the library to facilitate compilation with -Wdocumentation
      • fixed an overflow detection error in the number parser
      • updated contribution guidelines to a list of frequentely asked features that will most likely be never added to the library
      • added a table of contents to the README file to add some structure
      • mentioned the many examples and the documentation in the README file
      • split unit tests into individual independent binaries to speed up compilation and testing
      • the test suite now contains 11201886 tests
      "},{"location":"home/releases/#v208","title":"v2.0.8","text":"

      Files

      • json.hpp (360 KB)
      • json.hpp.asc (1 KB)
      • Release date: 2016-12-02
      • SHA-256: b70db0ad34f8e0e61dc3f0cbab88099336c9674c193d8a3439d93d6aca2d7120
      "},{"location":"home/releases/#summary_19","title":"Summary","text":"

      This release combines a lot of small fixes and improvements. The fixes are backwards compatible.

      "},{"location":"home/releases/#changes_5","title":"Changes","text":"
      • fixed a bug that froze the parser if a passed file was not found (now, std::invalid_argument is thrown)
      • fixed a bug that lead to an error of a file at EOF was parsed again (now, std::invalid_argument is thrown)
      • the well known functions emplace and emplace_back have been added to JSON values and work as expected
      • improved the performance of the serialization (dump function)
      • improved the performance of the deserialization (parser)
      • some continuous integration images at Travis were added and retired; see here for the current continuous integration setup
      • the Coverity scan works again
      • the benchmarking code has been improved to produce more stable results
      • the README file has been extended and includes more frequently asked examples
      • the test suite now contains 8905518 tests
      • updated Catch to version 1.5.8
      "},{"location":"home/releases/#v207","title":"v2.0.7","text":"

      Files

      • json.hpp (355 KB)
      • json.hpp.asc (1 KB)
      • Release date: 2016-11-02
      • SHA-256: 5545c323670f8165bae90b9dc6078825e86ec310d96cc4e5b47233ea43715bbf
      "},{"location":"home/releases/#summary_20","title":"Summary","text":"

      This release fixes a few bugs in the JSON parser found in the Parsing JSON is a Minefield \ud83d\udca3 article. The fixes are backwards compatible.

      "},{"location":"home/releases/#changes_6","title":"Changes","text":"
      • The article Parsing JSON is a Minefield \ud83d\udca3 discusses a lot of pitfalls of the JSON specification. When investigating the published test cases, a few bugs in the library were found and fixed:
      • Files with less than 5 bytes can now be parsed without error.
      • The library now properly rejects any file encoding other than UTF-8. Furthermore, incorrect surrogate pairs are properly detected and rejected.
      • The library now accepts all but one \"yes\" test (y_string_utf16.json): UTF-16 is not supported.
      • The library rejects all but one \"no\" test (n_number_then_00.json): Null bytes are treated as end of file instead of an error. This allows to parse input from null-terminated strings.
      • The string length passed to a user-defined string literal is now exploited to choose a more efficient constructor.
      • A few grammar mistakes in the README file have been fixed.
      "},{"location":"home/releases/#v206","title":"v2.0.6","text":"

      Files

      • json.hpp (349 KB)
      • json.hpp.asc (1 KB)
      • Release date: 2016-10-15
      • SHA256: 459cc93d5e2f503e50c6d5876eb86bfea7daf405f5a567c5a2c9abc2383756ae
      "},{"location":"home/releases/#summary_21","title":"Summary","text":"

      This release fixes the semantics of operator[] for JSON Pointers (see below). This fix is backwards compatible.

      "},{"location":"home/releases/#changes_7","title":"Changes","text":"
      • operator[] for JSON Pointers now behaves like the other versions of operator[] and transforms null values into objects or arrays if required. This allows to created nested structures like j[\"/foo/bar/2\"] = 17 (yielding {\"foo\": \"bar\": [null, null, 17]}) without problems.
      • overworked a helper SFINAE function
      • fixed some documentation issues
      • fixed the CMake files to allow to run the test suite outside the main project directory
      • restored test coverage to 100%.
      "},{"location":"home/releases/#v205","title":"v2.0.5","text":"

      Files

      • json.hpp (347 KB)
      • json.hpp.asc (1 KB)
      • Release date: 2016-09-14
      • SHA-256: 8b7565263a44e2b7d3b89808bc73d2d639037ff0c1f379e3d56dbd77e00b98d9
      "},{"location":"home/releases/#summary_22","title":"Summary","text":"

      This release fixes a regression bug in the stream parser (function parse() and the <</>> operators). This fix is backwards compatible.

      "},{"location":"home/releases/#changes_8","title":"Changes","text":"
      • Bug fix: The end of a file stream was not detected properly which led to parse errors. This bug should have been fixed with 2.0.4, but there was still a flaw in the code.
      "},{"location":"home/releases/#v204","title":"v2.0.4","text":"

      Files

      • json.hpp (347 KB)
      • json.hpp.asc (1 KB)
      • Release date: 2016-09-11
      • SHA-256: 632ceec4c25c4e2153f71470d3a2b992c8355f6d8b4d627d05dd16095cd3aeda
      "},{"location":"home/releases/#summary_23","title":"Summary","text":"

      This release fixes a bug in the stream parser (function parse() and the <</>> operators). This fix is backwards compatible.

      "},{"location":"home/releases/#changes_9","title":"Changes","text":"
      • Bug fix: The end of a file stream was not detected properly which led to parse errors.
      • Fixed a compiler warning about an unused variable.
      "},{"location":"home/releases/#v203","title":"v2.0.3","text":"

      Files

      • json.hpp (347 KB)
      • json.hpp.asc (1 KB)
      • Release date: 2016-08-31
      • SHA-256: 535b73efe5546fde9e763c14aeadfc7b58183c0b3cd43c29741025aba6cf6bd3
      "},{"location":"home/releases/#summary_24","title":"Summary","text":"

      This release combines a lot of small fixes and improvements. The release is backwards compatible.

      "},{"location":"home/releases/#changes_10","title":"Changes","text":"
      • The parser/deserialization functions have been generalized to process any contiguous sequence of 1-byte elements (e.g., char, unsigned char, uint8_t). This includes all kind of string representations (string literals, char arrays, std::string, const char*), contiguous containers (C-style arrays, std::vector, std::array, std::valarray, std::initializer_list). User-defined containers providing random-access iterator access via std::begin and std::end can be used as well. See the documentation (1, 2, 3, 4) for more information. Note that contiguous storage cannot be checked at compile time; if any of the parse functions are called with a noncompliant container, the behavior is undefined and will most likely yield segmentation violation. The preconditions are enforced by an assertion unless the library is compiled with preprocessor symbol NDEBUG.
      • As a general remark on assertions: The library uses assertions to preclude undefined behavior. A prominent example for this is the operator[] for const JSON objects. The behavior of this const version of the operator is undefined if the given key does not exist in the JSON object, because unlike the non-const version, it cannot add a null value at the given key. Assertions can be switched of by defining the preprocessor symbol NDEBUG. See the documentation of assert for more information.
      • In the course of cleaning up the parser/deserialization functions, the constructor basic_json(std::istream&, const parser_callback_t) has been deprecated and will be deleted with the next major release 3.0.0 to unify the interface of the library. Deserialization will be done by stream operators or by calling one of the parse functions. That is, calls like json j(i); for an input stream i need to be replaced by json j = json::parse(i);. Compilers will produce a deprecation warning if client code uses this function.
      • Minor improvements:
      • Improved the performance of the serialization by avoiding the re-creation of a locale object.
      • Fixed two MSVC warnings. Compiling the test suite with /Wall now only warns about non-inlined functions (C4710) and the deprecation of the constructor from input-stream (C4996).
      • Some project internals:
      • The project has qualified for the Core Infrastructure Initiative Best Practices Badge. While most requirements where already satisfied, some led to a more explicit documentation of quality-ensuring procedures. For instance, static analysis is now executed with every commit on the build server. Furthermore, the contribution guidelines document how to communicate security issues privately.
      • The test suite has been overworked and split into several files to allow for faster compilation and analysis. The execute the test suite, simply execute make check.
      • The continuous integration with Travis was extended with Clang versions 3.6.0 to 3.8.1 and now includes 18 different compiler/OS combinations.
      • An 11-day run of American fuzzy lop checked 962 million inputs on the parser and found no issue.
      "},{"location":"home/releases/#v202","title":"v2.0.2","text":"

      Files

      • json.hpp (338 KB)
      • json.hpp.asc (1 KB)
      • Release date: 2016-07-31
      • SHA-256: 8e97b7965b4594b00998d6704465412360e1a0ed927badb51ded8b82291a8f3d
      "},{"location":"home/releases/#summary_25","title":"Summary","text":"

      This release combines a lot of small fixes and improvements. The release is backwards compatible.

      "},{"location":"home/releases/#changes_11","title":"Changes","text":"
      • The parser has been overworked, and a lot of small issues have been fixed:
      • Improved parser performance by avoiding recursion and using move semantics for the return value.
      • Unescaped control characters \\x10-\\x1f are not accepted any more.
      • Fixed a bug in the parser when reading from an input stream.
      • Improved test case coverage for UTF-8 parsing: now, all valid Unicode code points are tested both escaped and unescaped.
      • The precision of output streams is now preserved by the parser.
      • Started to check the code correctness by proving termination of important loops. Furthermore, individual assertions have been replaced by a more systematic function which checks the class invariants. Note that assertions should be switched off in production by defining the preprocessor macro NDEBUG, see the documentation of assert.
      • A lot of code cleanup: removed unused headers, fixed some compiler warnings, and fixed a build error for Windows-based Clang builds.
      • Added some compile-time checks:
      • Unsupported compilers are rejected during compilation with an #error command.
      • Static assertion prohibits code with incompatible pointer types used in get_ptr().
      • Improved the documentation, and adjusted the documentation script to choose the correct version of sed.
      • Replaced a lot of \"raw loops\" by STL functions like std::all_of, std::for_each, or std::accumulate. This facilitates reasoning about termination of loops and sometimes allowed to simplify functions to a single return statement.
      • Implemented a value() function for JSON pointers (similar to at function).
      • The Homebrew formula (see Integration) is now tested for all Xcode builds (6.1 - 8.x) with Travis.
      • Avoided output to std::cout in the test cases.
      "},{"location":"home/releases/#v201","title":"v2.0.1","text":"

      Files

      • json.hpp (321 KB)
      • json.hpp.asc (1 KB)
      • Release date: 2016-06-28
      • SHA-256: ef550fcd7df572555bf068e9ec4e9d3b9e4cdd441cecb0dcea9ea7fd313f72dd
      "},{"location":"home/releases/#summary_26","title":"Summary","text":"

      This release fixes a performance regression in the JSON serialization (function dump()). This fix is backwards compatible.

      "},{"location":"home/releases/#changes_12","title":"Changes","text":"
      • The locale of the output stream (or the internal string stream if a JSON value is serialized to a string) is now adjusted once for the whole serialization instead of for each floating-point number.
      • The locale of an output stream is now correctly reset to the previous value by the JSON library.
      "},{"location":"home/releases/#v200","title":"v2.0.0","text":"

      Files

      • json.hpp (321 KB)
      • json.hpp.asc (1 KB)
      • Release date: 2016-06-24
      • SHA-256: ac9e1fb25c2ac9ca5fc501fcd2fe3281fe04f07018a1b48820e7b1b11491bb6c
      "},{"location":"home/releases/#summary_27","title":"Summary","text":"

      This release adds several features such as JSON Pointers, JSON Patch, or support for 64 bit unsigned integers. Furthermore, several (subtle) bugs have been fixed.

      As noexcept and constexpr specifier have been added to several functions, the public API has effectively been changed in a (potential) non-backwards compatible manner. As we adhere to Semantic Versioning, this calls for a new major version, so say hello to 2\ufe0f\u20e3.0\ufe0f\u20e3.0\ufe0f\u20e3.

      "},{"location":"home/releases/#changes_13","title":"Changes","text":"
      • \ud83d\udd1f A JSON value now uses uint64_t (default value for template parameter NumberUnsignedType) as data type for unsigned integer values. This type is used automatically when an unsigned number is parsed. Furthermore, constructors, conversion operators and an is_number_unsigned() test have been added.
      • \ud83d\udc49 JSON Pointer (RFC 6901) support: A JSON Pointer is a string (similar to an XPath expression) to address a value inside a structured JSON value. JSON Pointers can be used in at() and operator[] functions. Furthermore, JSON values can be \u201cflattened\u201d to key/value pairs using flatten() where each key is a JSON Pointer. The original value can be restored by \u201cunflattening\u201d the flattened value using unflatten().
      • \ud83c\udfe5 JSON Patch (RFC 6902) support. A JSON Patch is a JSON value that describes the required edit operations (add, change, remove, \u2026) to transform a JSON value into another one. A JSON Patch can be created with function diff(const basic_json&) and applied with patch(const basic_json&). Note the created patches use a rather primitive algorithm so far and leave room for improvement.
      • \ud83c\uddea\ud83c\uddfa The code is now locale-independent: Floating-point numbers are always serialized with a period (.) as decimal separator and ignores different settings from the locale.
      • \ud83c\udf7a Homebrew support: Install the library with brew tap nlohmann/json && brew install nlohmann_json.
      • Added constructor to create a JSON value by parsing a std::istream (e.g., std::stringstream or std::ifstream).
      • Added noexcept specifier to basic_json(boolean_t), basic_json(const number_integer_t), basic_json(const int), basic_json(const number_float_t), iterator functions (begin(), end(), etc.)
      • When parsing numbers, the sign of 0.0 (vs. -0.0) is preserved.
      • Improved MSVC 2015, Android, and MinGW support. See README for more information.
      • Improved test coverage (added 2,225,386 tests).
      • Removed some misuses of std::move.
      • Fixed several compiler warnings.
      • Improved error messages from JSON parser.
      • Updated to re2c to version 0.16 to use a minimal DFAs for the lexer.
      • Updated test suite to use Catch version 1.5.6.
      • Made type getters (is_number, etc.) and const value access constexpr.
      • Functions push_back and operator+= now work with key/value pairs passed as initializer list, e.g. j_object += {\"key\", 1}.
      • Overworked CMakeLists.txt to make it easier to integrate the library into other projects.
      "},{"location":"home/releases/#notes","title":"Notes","text":"
      • Parser error messages are still very vague and contain no information on the error location.
      • The implemented diff function is rather primitive and does not create minimal diffs.
      • The name of function iteration_wrapper may change in the future and the function will be deprecated in the next release.
      • Roundtripping (i.e., parsing a JSON value from a string, serializing it, and comparing the strings) of floating-point numbers is not 100% accurate. Note that RFC 8259 defines no format to internally represent numbers and states not requirement for roundtripping. Nevertheless, benchmarks like Native JSON Benchmark treat roundtripping deviations as conformance errors.
      "},{"location":"home/releases/#v110","title":"v1.1.0","text":"

      Files

      • json.hpp (257 KB)
      • json.hpp.asc (1 KB)
      • Release date: 2016-01-24
      • SHA-256: c0cf0e3017798ca6bb18e757ebc570d21a3bdac877845e2b9e9573d183ed2f05
      "},{"location":"home/releases/#summary_28","title":"Summary","text":"

      This release fixes several small bugs and adds functionality in a backwards-compatible manner. Compared to the last version (1.0.0), the following changes have been made:

      "},{"location":"home/releases/#changes_14","title":"Changes","text":"
      • Fixed: Floating-point numbers are now serialized and deserialized properly such that rountripping works in more cases. [#185, #186, #190, #191, #194]
      • Added: The code now contains assertions to detect undefined behavior during development. As the standard function assert is used, the assertions can be switched off by defining the preprocessor symbol NDEBUG during compilation. [#168]
      • Added: It is now possible to get a reference to the stored values via the newly added function get_ref(). [#128, #184]
      • Fixed: Access to object values via keys (operator[]) now works with all kind of string representations. [#171, #189]
      • Fixed: The code now compiles again with Microsoft Visual Studio 2015. [#144, #167, #188]
      • Fixed: All required headers are now included.
      • Fixed: Typos and other small issues. [#162, #166, #175, #177, #179, #180]
      "},{"location":"home/releases/#notes_1","title":"Notes","text":"

      There are still known open issues (#178, #187) which will be fixed in version 2.0.0. However, these fixes will require a small API change and will not be entirely backwards-compatible.

      "},{"location":"home/releases/#v100","title":"v1.0.0","text":"

      Files

      • json.hpp (243 KB)
      • json.hpp.asc (1 KB)
      • Release date: 2015-12-28
      • SHA-256: 767dc2fab1819d7b9e19b6e456d61e38d21ef7182606ecf01516e3f5230446de
      "},{"location":"home/releases/#summary_29","title":"Summary","text":"

      This is the first official release. Compared to the prerelease version 1.0.0-rc1, only a few minor improvements have been made:

      "},{"location":"home/releases/#changes_15","title":"Changes","text":"
      • Changed: A UTF-8 byte order mark is silently ignored.
      • Changed: sprintf is no longer used.
      • Changed: iterator_wrapper also works for const objects; note: the name may change!
      • Changed: Error messages during deserialization have been improved.
      • Added: The parse function now also works with type std::istream&&.
      • Added: Function value(key, default_value) returns either a copy of an object's element at the specified key or a given default value if no element with the key exists.
      • Added: Public functions are tagged with the version they were introduced. This shall allow for better versioning in the future.
      • Added: All public functions and types are documented (see http://nlohmann.github.io/json/doxygen/) including executable examples.
      • Added: Allocation of all types (in particular arrays, strings, and objects) is now exception-safe.
      • Added: They descriptions of thrown exceptions have been overworked and are part of the tests suite and documentation.
      "},{"location":"home/sponsors/","title":"Sponsors","text":"

      You can sponsor this library at GitHub Sponsors.

      "},{"location":"home/sponsors/#priority-sponsor","title":"Priority Sponsor","text":"
      • Martti Laine
      • Paul Harrington
      "},{"location":"home/sponsors/#named-sponsors","title":"Named Sponsors","text":"
      • Michael Hartmann
      • Stefan Hagen
      • Steve Sperandeo
      • Robert Jefe Lindst\u00e4dt
      • Steve Wagner
      • Lion Yang

      Thanks everyone!

      "},{"location":"integration/","title":"Header only","text":"

      json.hpp is the single required file in single_include/nlohmann or released here. You need to add

      #include <nlohmann/json.hpp>\n\n// for convenience\nusing json = nlohmann::json;\n

      to the files you want to process JSON and set the necessary switches to enable C++11 (e.g., -std=c++11 for GCC and Clang).

      You can further use file single_include/nlohmann/json_fwd.hpp for forward declarations.

      "},{"location":"integration/cmake/","title":"CMake","text":""},{"location":"integration/cmake/#integration","title":"Integration","text":"

      You can use the nlohmann_json::nlohmann_json interface target in CMake. This target populates the appropriate usage requirements for INTERFACE_INCLUDE_DIRECTORIES to point to the appropriate include directories and INTERFACE_COMPILE_FEATURES for the necessary C++11 flags.

      "},{"location":"integration/cmake/#external","title":"External","text":"

      To use this library from a CMake project, you can locate it directly with find_package() and use the namespaced imported target from the generated package configuration:

      Example

      CMakeLists.txt
      cmake_minimum_required(VERSION 3.1)\nproject(ExampleProject LANGUAGES CXX)\n\nfind_package(nlohmann_json 3.11.3 REQUIRED)\n\nadd_executable(example example.cpp)\ntarget_link_libraries(example PRIVATE nlohmann_json::nlohmann_json)\n

      The package configuration file, nlohmann_jsonConfig.cmake, can be used either from an install tree or directly out of the build tree.

      "},{"location":"integration/cmake/#embedded","title":"Embedded","text":"

      To embed the library directly into an existing CMake project, place the entire source tree in a subdirectory and call add_subdirectory() in your CMakeLists.txt file.

      Example

      CMakeLists.txt
      cmake_minimum_required(VERSION 3.1)\nproject(ExampleProject LANGUAGES CXX)\n\n# If you only include this third party in PRIVATE source files, you do not need to install it\n# when your main project gets installed.\nset(JSON_Install OFF CACHE INTERNAL \"\")\n\nadd_subdirectory(nlohmann_json)\n\nadd_executable(example example.cpp)\ntarget_link_libraries(example PRIVATE nlohmann_json::nlohmann_json)\n

      Note

      Do not use include(nlohmann_json/CMakeLists.txt), since that carries with it unintended consequences that will break the build. It is generally discouraged (although not necessarily well documented as such) to use include(...) for pulling in other CMake projects anyways.

      "},{"location":"integration/cmake/#supporting-both","title":"Supporting Both","text":"

      To allow your project to support either an externally supplied or an embedded JSON library, you can use a pattern akin to the following.

      Example

      CMakeLists.txt
      project(ExampleProject LANGUAGES CXX)\n\noption(EXAMPLE_USE_EXTERNAL_JSON \"Use an external JSON library\" OFF)\n\nadd_subdirectory(thirdparty)\n\nadd_executable(example example.cpp)\n\n# Note that the namespaced target will always be available regardless of the import method\ntarget_link_libraries(example PRIVATE nlohmann_json::nlohmann_json)\n
      thirdparty/CMakeLists.txt
      if(EXAMPLE_USE_EXTERNAL_JSON)\n    find_package(nlohmann_json 3.11.3 REQUIRED)\nelse()\n    set(JSON_BuildTests OFF CACHE INTERNAL \"\")\n    add_subdirectory(nlohmann_json)\nendif()\n

      thirdparty/nlohmann_json is then a complete copy of this source tree.

      "},{"location":"integration/cmake/#fetchcontent","title":"FetchContent","text":"

      Since CMake v3.11, FetchContent can be used to automatically download a release as a dependency at configure type.

      Example

      CMakeLists.txt
      cmake_minimum_required(VERSION 3.11)\nproject(ExampleProject LANGUAGES CXX)\n\ninclude(FetchContent)\n\nFetchContent_Declare(json URL https://github.com/nlohmann/json/releases/download/v3.11.3/json.tar.xz)\nFetchContent_MakeAvailable(json)\n\nadd_executable(example example.cpp)\ntarget_link_libraries(example PRIVATE nlohmann_json::nlohmann_json)\n

      Note

      It is recommended to use the URL approach described above which is supported as of version 3.10.0. It is also possible to pass the Git repository like

      FetchContent_Declare(json\n    GIT_REPOSITORY https://github.com/nlohmann/json\n    GIT_TAG v3.11.3\n)\n

      However, the repository https://github.com/nlohmann/json download size is quite large.

      "},{"location":"integration/cmake/#cmake-options","title":"CMake Options","text":""},{"location":"integration/cmake/#json_buildtests","title":"JSON_BuildTests","text":"

      Build the unit tests when BUILD_TESTING is enabled. This option is ON by default if the library's CMake project is the top project. That is, when integrating the library as described above, the test suite is not built unless explicitly switched on with this option.

      "},{"location":"integration/cmake/#json_ci","title":"JSON_CI","text":"

      Enable CI build targets. The exact targets are used during the several CI steps and are subject to change without notice. This option is OFF by default.

      "},{"location":"integration/cmake/#json_diagnostics","title":"JSON_Diagnostics","text":"

      Enable extended diagnostic messages by defining macro JSON_DIAGNOSTICS. This option is OFF by default.

      "},{"location":"integration/cmake/#json_disableenumserialization","title":"JSON_DisableEnumSerialization","text":"

      Disable default enum serialization by defining the macro JSON_DISABLE_ENUM_SERIALIZATION. This option is OFF by default.

      "},{"location":"integration/cmake/#json_fasttests","title":"JSON_FastTests","text":"

      Skip expensive/slow test suites. This option is OFF by default. Depends on JSON_BuildTests.

      "},{"location":"integration/cmake/#json_globaludls","title":"JSON_GlobalUDLs","text":"

      Place user-defined string literals in the global namespace by defining the macro JSON_USE_GLOBAL_UDLS. This option is OFF by default.

      "},{"location":"integration/cmake/#json_implicitconversions","title":"JSON_ImplicitConversions","text":"

      Enable implicit conversions by defining macro JSON_USE_IMPLICIT_CONVERSIONS. This option is ON by default.

      "},{"location":"integration/cmake/#json_install","title":"JSON_Install","text":"

      Install CMake targets during install step. This option is ON by default if the library's CMake project is the top project.

      "},{"location":"integration/cmake/#json_multipleheaders","title":"JSON_MultipleHeaders","text":"

      Use non-amalgamated version of the library. This option is OFF by default.

      "},{"location":"integration/cmake/#json_systeminclude","title":"JSON_SystemInclude","text":"

      Treat the library headers like system headers (i.e., adding SYSTEM to the target_include_directories call) to checks for this library by tools like Clang-Tidy. This option is OFF by default.

      "},{"location":"integration/cmake/#json_valgrind","title":"JSON_Valgrind","text":"

      Execute test suite with Valgrind. This option is OFF by default. Depends on JSON_BuildTests.

      "},{"location":"integration/migration_guide/","title":"Migration Guide","text":"

      This page collects some guidelines on how to future-proof your code for future versions of this library.

      "},{"location":"integration/migration_guide/#replace-deprecated-functions","title":"Replace deprecated functions","text":"

      The following functions have been deprecated and will be removed in the next major version (i.e., 4.0.0). All deprecations are annotated with HEDLEY_DEPRECATED_FOR to report which function to use instead.

      "},{"location":"integration/migration_guide/#parsing","title":"Parsing","text":"
      • Function friend std::istream& operator<<(basic_json&, std::istream&) is deprecated since 3.0.0. Please use friend std::istream& operator>>(std::istream&, basic_json&) instead.

        DeprecatedFuture-proof
        nlohmann::json j;\nstd::stringstream ss(\"[1,2,3]\");\nj << ss;\n
        nlohmann::json j;\nstd::stringstream ss(\"[1,2,3]\");\nss >> j;\n
      • Passing iterator pairs or pointer/length pairs to parsing functions (parse, accept, sax_parse, from_cbor, from_msgpack, from_ubjson, and from_bson via initializer lists is deprecated since 3.8.0. Instead, pass two iterators; for instance, call from_cbor(ptr, ptr+len) instead of from_cbor({ptr, len}).

        DeprecatedFuture-proof
        const char* s = \"[1,2,3]\";\nbool ok = nlohmann::json::accept({s, s + std::strlen(s)});\n
        const char* s = \"[1,2,3]\";\nbool ok = nlohmann::json::accept(s, s + std::strlen(s));\n
      "},{"location":"integration/migration_guide/#json-pointers","title":"JSON Pointers","text":"
      • Comparing JSON Pointers with strings via operator== and operator!= is deprecated since 3.11.2. To compare a json_pointer p with a string s, convert s to a json_pointer first and use json_pointer::operator== or json_pointer::operator!=.

        DeprecatedFuture-proof
        nlohmann::json::json_pointer lhs(\"/foo/bar/1\");\nassert(lhs == \"/foo/bar/1\");\n
        nlohmann::json::json_pointer lhs(\"/foo/bar/1\");\nassert(lhs == nlohmann::json::json_pointer(\"/foo/bar/1\"));\n
      • The implicit conversion from JSON Pointers to string (json_pointer::operator string_t) is deprecated since 3.11.0. Use json_pointer::to_string instead.

        DeprecatedFuture-proof
        nlohmann::json::json_pointer ptr(\"/foo/bar/1\");\nstd::string s = ptr;\n
        nlohmann::json::json_pointer ptr(\"/foo/bar/1\");\nstd::string s = ptr.to_string();\n
      • Passing a basic_json specialization as template parameter RefStringType to json_pointer is deprecated since 3.11.0. The string type can now be directly provided.

        DeprecatedFuture-proof
        using my_json = nlohmann::basic_json<std::map, std::vector, my_string_type>;\nnlohmann::json_pointer<my_json> ptr(\"/foo/bar/1\");\n
        nlohmann::json_pointer<my_string_type> ptr(\"/foo/bar/1\");\n

        Thereby, nlohmann::my_json::json_pointer is an alias for nlohmann::json_pointer<my_string_type> and is always an alias to the json_pointer with the appropriate string type for all specializations of basic_json.

      "},{"location":"integration/migration_guide/#miscellaneous-functions","title":"Miscellaneous functions","text":"
      • The function iterator_wrapper is deprecated since 3.1.0. Please use the member function items instead.

        DeprecatedFuture-proof
        for (auto &x : nlohmann::json::iterator_wrapper(j))\n{\n    std::cout << x.key() << \":\" << x.value() << std::endl;\n}\n
        for (auto &x : j.items())\n{\n    std::cout << x.key() << \":\" << x.value() << std::endl;\n}\n
      • Function friend std::ostream& operator>>(const basic_json&, std::ostream&) is deprecated since 3.0.0. Please use friend operator<<(std::ostream&, const basic_json&) instead.

        DeprecatedFuture-proof
        j >> std::cout;\n
        std::cout << j;\n
      • The legacy comparison behavior for discarded values is deprecated since 3.11.0. It is already disabled by default and can still be enabled by defining JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON to 1.

        DeprecatedFuture-proof
        #define JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON 1\n#include <nlohmann/json.hpp>\n
        #include <nlohmann/json.hpp>\n
      "},{"location":"integration/migration_guide/#replace-implicit-conversions","title":"Replace implicit conversions","text":"

      Implicit conversions via operator ValueType will be switched off by default in the next major release of the library.

      You can prepare existing code by already defining JSON_USE_IMPLICIT_CONVERSIONS to 0 and replace any implicit conversions with calls to get, get_to, get_ref, or get_ptr.

      DeprecatedFuture-proofFuture-proof (alternative)
      nlohmann::json j = \"Hello, world!\";\nstd::string s = j;\n
      nlohmann::json j = \"Hello, world!\";\nauto s = j.template get<std::string>();\n
      nlohmann::json j = \"Hello, world!\";\nstd::string s;\nj.get_to(s);\n

      You can prepare existing code by already defining JSON_USE_IMPLICIT_CONVERSIONS to 0 and replace any implicit conversions with calls to get.

      "},{"location":"integration/migration_guide/#import-namespace-literals-for-udls","title":"Import namespace literals for UDLs","text":"

      The user-defined string literals operator\"\"_json and operator\"\"_json_pointer will be removed from the global namespace in the next major release of the library.

      DeprecatedFuture-proof
      nlohmann::json j = \"[1,2,3]\"_json;\n
      using namespace nlohmann::literals;\nnlohmann::json j = \"[1,2,3]\"_json;\n

      To prepare existing code, define JSON_USE_GLOBAL_UDLS to 0 and bring the string literals into scope where needed.

      "},{"location":"integration/migration_guide/#do-not-hard-code-the-complete-library-namespace","title":"Do not hard-code the complete library namespace","text":"

      The nlohmann namespace contains a sub-namespace to avoid problems when different versions or configurations of the library are used in the same project. Always use nlohmann as namespace or, when the exact version and configuration is relevant, use macro NLOHMANN_JSON_NAMESPACE to denote the namespace.

      DangerousFuture-proofFuture-proof (alternative)
      void to_json(nlohmann::json_abi_v3_11_2::json& j, const person& p)\n{\n    j[\"age\"] = p.age;\n}\n
      void to_json(nlohmann::json& j, const person& p)\n{\n    j[\"age\"] = p.age;\n}\n
      void to_json(NLOHMANN_JSON_NAMESPACE::json& j, const person& p)\n{\n    j[\"age\"] = p.age;\n}\n
      "},{"location":"integration/migration_guide/#do-not-use-the-details-namespace","title":"Do not use the details namespace","text":"

      The details namespace is not part of the public API of the library and can change in any version without announcement. Do not rely on any function or type in the details namespace.

      "},{"location":"integration/package_managers/","title":"Package Managers","text":"

      Throughout this page, we will describe how to compile the example file example.cpp below.

      #include <nlohmann/json.hpp>\n#include <iostream>\n#include <iomanip>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout << std::setw(4) << json::meta() << std::endl;\n}\n

      When executed, this program should create output similar to

      {\n    \"compiler\": {\n        \"c++\": \"201103\",\n        \"family\": \"gcc\",\n        \"version\": \"12.3.0\"\n    },\n    \"copyright\": \"(C) 2013-2022 Niels Lohmann\",\n    \"name\": \"JSON for Modern C++\",\n    \"platform\": \"apple\",\n    \"url\": \"https://github.com/nlohmann/json\",\n    \"version\": {\n        \"major\": 3,\n        \"minor\": 11,\n        \"patch\": 3,\n        \"string\": \"3.11.3\"\n    }\n}\n
      "},{"location":"integration/package_managers/#homebrew","title":"Homebrew","text":"

      Summary

      formula: nlohmann-json

      • Availalbe versions: current version and development version (with --HEAD parameter)
      • The formula is updated with every release.
      • Maintainer: Niels Lohmann
      • File issues at the Homebrew issue tracker
      • Homebrew website

      If you are using Homebrew, you can install the library with

      brew install nlohmann-json\n

      The header can be used directly in your code or via CMake.

      Example: Raw compilation
      1. Create the following file:

        example.cpp
        #include <nlohmann/json.hpp>\n#include <iostream>\n#include <iomanip>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout << std::setw(4) << json::meta() << std::endl;\n}\n
      2. Install the package:

        brew install nlohmann-json\n
      3. Compile the code and pass the Homebrew prefix to the include path such that the library can be found:

        c++ example.cpp -I$(brew --prefix nlohmann-json)/include -std=c++11 -o example\n
      Example: CMake
      1. Create the following files:

        example.cpp
        #include <nlohmann/json.hpp>\n#include <iostream>\n#include <iomanip>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout << std::setw(4) << json::meta() << std::endl;\n}\n
        CMakeLists.txt
        cmake_minimum_required(VERSION 3.15)\nproject(json_example)\n\nfind_package(nlohmann_json CONFIG REQUIRED)\n\nadd_executable(json_example example.cpp)\ntarget_link_libraries(json_example PRIVATE nlohmann_json::nlohmann_json)\n
      2. Install the package:

        brew install nlohmann-json\n
      3. Compile the code and pass the Homebrew prefix to CMake to find installed packages via find_package:

        CMAKE_PREFIX_PATH=$(brew --prefix) cmake -S . -B build\ncmake --build build\n
      "},{"location":"integration/package_managers/#meson","title":"Meson","text":"

      Summary

      wrap: nlohmann_json

      • Availalbe versions: current version and select older versions (see WrapDB)
      • The package is update automatically from file meson.build.
      • File issues at the library issue tracker
      • Meson website

      If you are using the Meson Build System, add this source tree as a meson subproject. You may also use the include.zip published in this project's Releases to reduce the size of the vendored source tree. Alternatively, you can get a wrap file by downloading it from Meson WrapDB, or simply use

      meson wrap install nlohmann_json\n

      Please see the Meson project for any issues regarding the packaging.

      The provided meson.build can also be used as an alternative to CMake for installing nlohmann_json system-wide in which case a pkg-config file is installed. To use it, simply have your build system require the nlohmann_json pkg-config dependency. In Meson, it is preferred to use the dependency() object with a subproject fallback, rather than using the subproject directly.

      Example: Wrap
      1. Create the following files:

        meson.build
        project('json_example', 'cpp',\n  version: '1.0',\n  default_options: ['cpp_std=c++11']\n)\n\ndependency_json = dependency('nlohmann_json', required: true)\n\nexecutable('json_example',\n  sources: ['example.cpp'],\n  dependencies: [dependency_json],\n  install: true\n)\n
        example.cpp
        #include <nlohmann/json.hpp>\n#include <iostream>\n#include <iomanip>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout << std::setw(4) << json::meta() << std::endl;\n}\n
      2. Use the Meson WrapDB to fetch the nlohmann/json wrap:

        mkdir subprojects\nmeson wrap install nlohmann_json\n
      3. Build:

        meson setup build\nmeson compile -C build\n
      "},{"location":"integration/package_managers/#bazel","title":"Bazel","text":"

      Summary

      use http_archive, git_repository, or local_repository

      • Any version, as version is specified in WORKSPACE file
      • File issues at the library issue tracker
      • Bazel website

      This repository provides a Bazel WORKSPACE.bazel and a corresponding BUILD.bazel file. Therefore, this repository can be referenced by workspace rules such as http_archive, git_repository, or local_repository from other Bazel workspaces. To use the library you only need to depend on the target @nlohmann_json//:json (e.g., via deps attribute).

      Example
      1. Create the following files:

        BUILD
        cc_binary(\n    name = \"main\",\n    srcs = [\"example.cpp\"],\n    deps = [\"@nlohmann_json//:json\"],\n)\n
        WORKSPACE
        load(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\n\nhttp_archive(\n    name = \"nlohmann_json\",\n    urls = [\"https://github.com/nlohmann/json/archive/refs/tags/v3.11.3.tar.gz\"],\n    strip_prefix = \"json-3.11.3\",\n)\n
        example.cpp
        #include <nlohmann/json.hpp>\n#include <iostream>\n#include <iomanip>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout << std::setw(4) << json::meta() << std::endl;\n}\n
      2. Build and run:

        bazel build //:main\nbazel run //:main\n
      "},{"location":"integration/package_managers/#conan","title":"Conan","text":"

      Summary

      recipe: nlohmann_json

      • Availalbe versions: current version and older versions (see Conan Center)
      • The package is update automatically via this recipe.
      • File issues at the Conan Center issue tracker
      • Conan website

      If you are using Conan to manage your dependencies, merely add nlohmann_json/x.y.z to your conanfile's requires, where x.y.z is the release version you want to use.

      Example
      1. Create the following files:

        Conanfile.txt
        [requires]\nnlohmann_json/3.11.3\n\n[generators]\nCMakeToolchain\nCMakeDeps\n
        CMakeLists.txt
        cmake_minimum_required(VERSION 3.15)\nproject(json_example)\n\nfind_package(nlohmann_json REQUIRED)\n\nadd_executable(json_example example.cpp)\ntarget_link_libraries(json_example PRIVATE nlohmann_json::nlohmann_json)\n
        example.cpp
        #include <nlohmann/json.hpp>\n#include <iostream>\n#include <iomanip>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout << std::setw(4) << json::meta() << std::endl;\n}\n
      2. Call Conan:

        conan install . --output-folder=build --build=missing\n
      3. Build:

        cmake -S . -B build -DCMAKE_TOOLCHAIN_FILE=\"conan_toolchain.cmake\" -DCMAKE_BUILD_TYPE=Release\ncmake --build build\n
      "},{"location":"integration/package_managers/#spack","title":"Spack","text":"

      Summary

      package: nlohmann-json

      • Availalbe versions: current version and older versions (see Spack package)
      • The formula is updated with every release.
      • Maintainer: Axel Huebl
      • File issues at the Spack issue tracker
      • Spack website

      If you are using Spack to manage your dependencies, you can use the nlohmann-json package via

      spack install nlohmann-json\n

      Please see the Spack project for any issues regarding the packaging.

      Example
      1. Create the following files:

        CMakeLists.txt
        cmake_minimum_required(VERSION 3.15)\nproject(json_example)\n\nfind_package(nlohmann_json REQUIRED)\n\nadd_executable(json_example example.cpp)\ntarget_link_libraries(json_example PRIVATE nlohmann_json::nlohmann_json)\n
        example.cpp
        #include <nlohmann/json.hpp>\n#include <iostream>\n#include <iomanip>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout << std::setw(4) << json::meta() << std::endl;\n}\n
      2. Install the library:

        spack install nlohmann-json\n
      3. Load the environment for your Spack-installed packages:

        spack load nlohmann-json\n
      4. Build the project with CMake:

        cmake -S . -B build -DCMAKE_PREFIX_PATH=$(spack location -i nlohmann-json)\ncmake --build build\n
      "},{"location":"integration/package_managers/#hunter","title":"Hunter","text":"

      Summary

      package: nlohmann_json

      • Availalbe versions: current version and older versions (see Hunter package)
      • The formula is updated with every release.
      • File issues at the Hunter issue tracker
      • Hunter website

      If you are using Hunter on your project for external dependencies, then you can use the nlohmann_json package via

      hunter_add_package(nlohmann_json)\n

      Please see the Hunter project for any issues regarding the packaging.

      Example
      1. Create the following files:

        CMakeLists.txt
        cmake_minimum_required(VERSION 3.15)\n\ninclude(\"cmake/HunterGate.cmake\")\nHunterGate(\n    URL \"https://github.com/cpp-pm/hunter/archive/v0.23.297.tar.gz\"\n    SHA1 \"3319fe6a3b08090df7df98dee75134d68e2ef5a3\"\n)\n\nproject(json_example)\n\nhunter_add_package(nlohmann_json)\nfind_package(nlohmann_json CONFIG REQUIRED)\n\nadd_executable(json_example example.cpp)\ntarget_link_libraries(json_example PRIVATE nlohmann_json::nlohmann_json)\n
        example.cpp
        #include <nlohmann/json.hpp>\n#include <iostream>\n#include <iomanip>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout << std::setw(4) << json::meta() << std::endl;\n}\n
      2. Download required files

        mkdir cmake\nwget https://raw.githubusercontent.com/cpp-pm/gate/master/cmake/HunterGate.cmake -O cmake/HunterGate.cmake\n
      3. Build the project with CMake:

        cmake -S . -B build\ncmake --build build\n
      "},{"location":"integration/package_managers/#buckaroo","title":"Buckaroo","text":"

      If you are using Buckaroo, you can install this library's module with buckaroo add github.com/buckaroo-pm/nlohmann-json. There is a demo repo here.

      Warning

      The module is outdated as the respective repository has not been updated in years.

      "},{"location":"integration/package_managers/#vcpkg","title":"vcpkg","text":"

      Summary

      package: nlohmann-json

      • Availalbe versions: current version
      • The formula is updated with every release.
      • File issues at the vcpkg issue tracker
      • vcpkg website

      If you are using vcpkg on your project for external dependencies, then you can install the nlohmann-json package with

      vcpkg install nlohmann-json\n

      and follow the then displayed descriptions. Please see the vcpkg project for any issues regarding the packaging.

      Example
      1. Create the following files:

        CMakeLists.txt
        cmake_minimum_required(VERSION 3.15)\nproject(json_example)\n\nfind_package(nlohmann_json CONFIG REQUIRED)\n\nadd_executable(json_example example.cpp)\ntarget_link_libraries(json_example PRIVATE nlohmann_json::nlohmann_json)\n
        example.cpp
        #include <nlohmann/json.hpp>\n#include <iostream>\n#include <iomanip>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout << std::setw(4) << json::meta() << std::endl;\n}\n
      2. Install package:

        vcpkg install nlohmann-json\n
      3. Build:

        cmake -S . -B build -DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake\ncmake --build build\n
      "},{"location":"integration/package_managers/#cget","title":"cget","text":"

      Summary

      package: nlohmann/json

      • Availalbe versions: current version and older versions
      • The formula is updated with every release.
      • File issues at the cget issue tracker
      • cget website

      If you are using cget, you can install the latest master version with

      cget install nlohmann/json\n

      A specific version can be installed with cget install nlohmann/json@v3.11.3. Also, the multiple header version can be installed by adding the -DJSON_MultipleHeaders=ON flag (i.e., cget install nlohmann/json -DJSON_MultipleHeaders=ON).

      Example
      1. Create the following files:

        CMakeLists.txt
        cmake_minimum_required(VERSION 3.15)\nproject(json_example)\n\nfind_package(nlohmann_json CONFIG REQUIRED)\n\nadd_executable(json_example example.cpp)\ntarget_link_libraries(json_example PRIVATE nlohmann_json::nlohmann_json)\n
        example.cpp
        #include <nlohmann/json.hpp>\n#include <iostream>\n#include <iomanip>\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout << std::setw(4) << json::meta() << std::endl;\n}\n
      2. Initialize cget

        cget init\n
      3. Install the library

        cget install nlohmann/json\n
      4. Build

        cmake -S . -B build -DCMAKE_TOOLCHAIN_FILE=cget/cget/cget.cmake\ncmake --build build\n
      "},{"location":"integration/package_managers/#cocoapods","title":"CocoaPods","text":"

      If you are using CocoaPods, you can use the library by adding pod \"nlohmann_json\", '~>3.1.2' to your podfile (see an example). Please file issues here.

      "},{"location":"integration/package_managers/#nuget","title":"NuGet","text":"

      If you are using NuGet, you can use the package nlohmann.json. Please check this extensive description on how to use the package. Please file issues here.

      "},{"location":"integration/package_managers/#conda","title":"Conda","text":"

      If you are using conda, you can use the package nlohmann_json from conda-forge executing conda install -c conda-forge nlohmann_json. Please file issues here.

      "},{"location":"integration/package_managers/#msys2","title":"MSYS2","text":"

      If you are using MSYS2, you can use the mingw-w64-nlohmann-json package, just type pacman -S mingw-w64-i686-nlohmann-json or pacman -S mingw-w64-x86_64-nlohmann-json for installation. Please file issues here if you experience problems with the packages.

      The package is updated automatically.

      "},{"location":"integration/package_managers/#macports","title":"MacPorts","text":"

      If you are using MacPorts, execute sudo port install nlohmann-json to install the nlohmann-json package.

      The package is updated automatically.

      "},{"location":"integration/package_managers/#build2","title":"build2","text":"

      If you are using build2, you can use the nlohmann-json package from the public repository http://cppget.org or directly from the package's sources repository. In your project's manifest file, just add depends: nlohmann-json (probably with some version constraints). If you are not familiar with using dependencies in build2, please read this introduction. Please file issues here if you experience problems with the packages.

      The package is updated automatically.

      "},{"location":"integration/package_managers/#wsjcpp","title":"wsjcpp","text":"

      If you are using wsjcpp, you can use the command wsjcpp install \"https://github.com/nlohmann/json:develop\" to get the latest version. Note you can change the branch \":develop\" to an existing tag or another branch.

      wsjcpp reads directly from the GitHub repository and is always up-to-date.

      "},{"location":"integration/package_managers/#cpmcmake","title":"CPM.cmake","text":"

      If you are using CPM.cmake, you can check this example. After adding CPM script to your project, implement the following snippet to your CMake:

      CPMAddPackage(\"gh:nlohmann/json@3.11.3\")\n
      Example
      1. Download CPM.cmake
      mkdir -p cmake\nwget -O cmake/CPM.cmake https://github.com/cpm-cmake/CPM.cmake/releases/latest/download/get_cpm.cmake\n
      1. Build
      cmake -S . -B build\ncmake --build build\n
      "},{"location":"integration/pkg-config/","title":"Pkg-config","text":"

      If you are using bare Makefiles, you can use pkg-config to generate the include flags that point to where the library is installed:

      pkg-config nlohmann_json --cflags\n

      Users of the Meson build system will also be able to use a system-wide library, which will be found by pkg-config:

      json = dependency('nlohmann_json', required: true)\n
      "}]} \ No newline at end of file

      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 q1BMU8tDgrJv0$fI=yA7>yAtcRk}sHdc) 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

    2. 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�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

  • 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