blob: 4036139a5b6061b7fe219ca593a3acbe0bee8611 [file] [log] [blame]
<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href=https://json.nlohmann.me/features/binary_formats/bson/ rel=canonical><link href=../bjdata/ rel=prev><link href=../cbor/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.5.49"><title>BSON - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.6f8fc17f.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.06af60db.min.css><link rel=preconnect href=https://fonts.gstatic.com crossorigin><link rel=stylesheet href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CJetBrains+Mono:400,400i,700,700i&display=fallback"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#bson class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> BSON </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href=https://github.com/nlohmann/json title="Go to repository" class=md-source data-md-component=source> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 496 512"><!-- Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8M97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../../arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class=md-tabs__item> <a href=../../../api/basic_json/ class=md-tabs__link> API Documentation </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href=https://github.com/nlohmann/json title="Go to repository" class=md-source data-md-component=source> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 496 512"><!-- Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8M97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2 checked> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=true> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=true> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> BSON </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> BSON </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#serialization class=md-nav__link> <span class=md-ellipsis> Serialization </span> </a> </li> <li class=md-nav__item> <a href=#deserialization class=md-nav__link> <span class=md-ellipsis> Deserialization </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_5> <div class="md-nav__link md-nav__container"> <a href=../../element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_5 id=__nav_2_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_5_label aria-expanded=false> <label class=md-nav__title for=__nav_2_5> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_12> <div class="md-nav__link md-nav__container"> <a href=../../parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_12 id=__nav_2_12_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_12_label aria-expanded=false> <label class=md-nav__title for=__nav_2_12> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_16> <div class="md-nav__link md-nav__container"> <a href=../../types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_16 id=__nav_2_16_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_16_label aria-expanded=false> <label class=md-nav__title for=__nav_2_16> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex=0> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=false> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../../../api/basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../api/basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../../../api/basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../../api/byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../api/byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../../api/byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../../api/byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../../api/byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../../api/byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../../api/adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../api/adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../../api/adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../api/json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../../api/json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../api/json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../../api/json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../../api/json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../../api/json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../../api/json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../../api/json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../../api/json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../../api/json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../../api/json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../api/json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../../api/json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../../api/json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../../api/json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../../api/json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../api/json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../../api/json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../../api/json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../../api/json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../../api/json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../../api/json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../../api/json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../../api/json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../../api/json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../../api/json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../../api/json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../../api/json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../../api/json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../api/operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../../api/operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../../api/operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../../api/operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../../api/operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../api/ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../../api/ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_14> <div class="md-nav__link md-nav__container"> <a href=../../../api/macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_14 id=__nav_4_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_14_label aria-expanded=false> <label class=md-nav__title for=__nav_4_14> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../api/macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../../api/macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER </span> </a> </li> <li class=md-nav__item> <a href=../../../api/macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../../api/macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../../api/macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11 </span> </a> </li> <li class=md-nav__item> <a href=../../../api/macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11 </span> </a> </li> <li class=md-nav__item> <a href=../../../api/macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11 </span> </a> </li> <li class=md-nav__item> <a href=../../../api/macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11 </span> </a> </li> <li class=md-nav__item> <a href=../../../api/macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../../api/macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../../api/macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../../api/macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../../api/macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../../api/macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../../api/macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../../api/macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../../api/macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../../api/macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER </span> </a> </li> <li class=md-nav__item> <a href=../../../api/macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER </span> </a> </li> <li class=md-nav__item> <a href=../../../api/macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../../api/macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../../api/macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../../api/macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE </span> </a> </li> <li class=md-nav__item> <a href=../../../api/macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE </span> </a> </li> <li class=md-nav__item> <a href=../../../api/macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE </span> </a> </li> <li class=md-nav__item> <a href=../../../api/macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE </span> </a> </li> <li class=md-nav__item> <a href=../../../api/macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE </span> </a> </li> <li class=md-nav__item> <a href=../../../api/macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE </span> </a> </li> <li class=md-nav__item> <a href=../../../api/macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE </span> </a> </li> <li class=md-nav__item> <a href=../../../api/macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE </span> </a> </li> <li class=md-nav__item> <a href=../../../api/macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE </span> </a> </li> <li class=md-nav__item> <a href=../../../api/macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE </span> </a> </li> <li class=md-nav__item> <a href=../../../api/macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE </span> </a> </li> <li class=md-nav__item> <a href=../../../api/macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE </span> </a> </li> <li class=md-nav__item> <a href=../../../api/macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../../api/macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN </span> </a> </li> <li class=md-nav__item> <a href=../../../api/macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN </span> </a> </li> <li class=md-nav__item> <a href=../../../api/macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../../api/macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../../api/macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR </span> </a> </li> <li class=md-nav__item> <a href=../../../api/macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR </span> </a> </li> <li class=md-nav__item> <a href=../../../api/macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#serialization class=md-nav__link> <span class=md-ellipsis> Serialization </span> </a> </li> <li class=md-nav__item> <a href=#deserialization class=md-nav__link> <span class=md-ellipsis> Deserialization </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href=https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/features/binary_formats/bson.md title="Edit this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href=https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/features/binary_formats/bson.md title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=bson>BSON<a class=headerlink href=#bson title="Permanent link">&para;</a></h1> <p>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.</p> <div class="admonition abstract"> <p class=admonition-title>References</p> <ul> <li><a href=http://bsonspec.org>BSON Website</a> - the main source on BSON</li> <li><a href=http://bsonspec.org/spec.html>BSON Specification</a> - the specification</li> </ul> </div> <h2 id=serialization>Serialization<a class=headerlink href=#serialization title="Permanent link">&para;</a></h2> <p>The library uses the following mapping from JSON values types to BSON types:</p> <table> <thead> <tr> <th>JSON value type</th> <th>value/range</th> <th>BSON type</th> <th>marker</th> </tr> </thead> <tbody> <tr> <td>null</td> <td><code>null</code></td> <td>null</td> <td>0x0A</td> </tr> <tr> <td>boolean</td> <td><code>true</code>, <code>false</code></td> <td>boolean</td> <td>0x08</td> </tr> <tr> <td>number_integer</td> <td>-9223372036854775808..-2147483649</td> <td>int64</td> <td>0x12</td> </tr> <tr> <td>number_integer</td> <td>-2147483648..2147483647</td> <td>int32</td> <td>0x10</td> </tr> <tr> <td>number_integer</td> <td>2147483648..9223372036854775807</td> <td>int64</td> <td>0x12</td> </tr> <tr> <td>number_unsigned</td> <td>0..2147483647</td> <td>int32</td> <td>0x10</td> </tr> <tr> <td>number_unsigned</td> <td>2147483648..9223372036854775807</td> <td>int64</td> <td>0x12</td> </tr> <tr> <td>number_unsigned</td> <td>9223372036854775808..18446744073709551615</td> <td>--</td> <td>--</td> </tr> <tr> <td>number_float</td> <td><em>any value</em></td> <td>double</td> <td>0x01</td> </tr> <tr> <td>string</td> <td><em>any value</em></td> <td>string</td> <td>0x02</td> </tr> <tr> <td>array</td> <td><em>any value</em></td> <td>document</td> <td>0x04</td> </tr> <tr> <td>object</td> <td><em>any value</em></td> <td>document</td> <td>0x03</td> </tr> <tr> <td>binary</td> <td><em>any value</em></td> <td>binary</td> <td>0x05</td> </tr> </tbody> </table> <div class="admonition warning"> <p class=admonition-title>Incomplete mapping</p> <p>The mapping is <strong>incomplete</strong>, 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.</p> </div> <details class=example> <summary>Example</summary> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
<span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iomanip&gt;</span>
<span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
<span class=k>using</span><span class=w> </span><span class=n>json</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>nlohmann</span><span class=o>::</span><span class=n>json</span><span class=p>;</span>
<span class=k>using</span><span class=w> </span><span class=k>namespace</span><span class=w> </span><span class=nn>nlohmann</span><span class=o>::</span><span class=nn>literals</span><span class=p>;</span>
<span class=kt>int</span><span class=w> </span><span class=nf>main</span><span class=p>()</span>
<span class=p>{</span>
<span class=w> </span><span class=c1>// create a JSON value</span>
<span class=w> </span><span class=n>json</span><span class=w> </span><span class=n>j</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=sa>R</span><span class=s>&quot;</span><span class=dl>(</span><span class=s>{&quot;compact&quot;: true, &quot;schema&quot;: 0}</span><span class=dl>)</span><span class=s>&quot;</span><span class=n>_json</span><span class=p>;</span>
<span class=w> </span><span class=c1>// serialize it to BSON</span>
<span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>vector</span><span class=o>&lt;</span><span class=n>std</span><span class=o>::</span><span class=kt>uint8_t</span><span class=o>&gt;</span><span class=w> </span><span class=n>v</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>json</span><span class=o>::</span><span class=n>to_bson</span><span class=p>(</span><span class=n>j</span><span class=p>);</span>
<span class=w> </span><span class=c1>// print the vector content</span>
<span class=w> </span><span class=k>for</span><span class=w> </span><span class=p>(</span><span class=k>auto</span><span class=o>&amp;</span><span class=w> </span><span class=n>byte</span><span class=w> </span><span class=o>:</span><span class=w> </span><span class=n>v</span><span class=p>)</span>
<span class=w> </span><span class=p>{</span>
<span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>cout</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=s>&quot;0x&quot;</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>hex</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>setw</span><span class=p>(</span><span class=mi>2</span><span class=p>)</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>setfill</span><span class=p>(</span><span class=sc>&#39;0&#39;</span><span class=p>)</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=p>(</span><span class=kt>int</span><span class=p>)</span><span class=n>byte</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=s>&quot; &quot;</span><span class=p>;</span>
<span class=w> </span><span class=p>}</span>
<span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>cout</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>endl</span><span class=p>;</span>
<span class=p>}</span>
</code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=mh>0x1b</span><span class=w> </span><span class=mh>0x00</span><span class=w> </span><span class=mh>0x00</span><span class=w> </span><span class=mh>0x00</span><span class=w> </span><span class=mh>0x08</span><span class=w> </span><span class=mh>0x63</span><span class=w> </span><span class=mh>0x6f</span><span class=w> </span><span class=mh>0x6d</span><span class=w> </span><span class=mh>0x70</span><span class=w> </span><span class=mh>0x61</span><span class=w> </span><span class=mh>0x63</span><span class=w> </span><span class=mh>0x74</span><span class=w> </span><span class=mh>0x00</span><span class=w> </span><span class=mh>0x01</span><span class=w> </span><span class=mh>0x10</span><span class=w> </span><span class=mh>0x73</span><span class=w> </span><span class=mh>0x63</span><span class=w> </span><span class=mh>0x68</span><span class=w> </span><span class=mh>0x65</span><span class=w> </span><span class=mh>0x6d</span><span class=w> </span><span class=mh>0x61</span><span class=w> </span><span class=mh>0x00</span><span class=w> </span><span class=mh>0x00</span><span class=w> </span><span class=mh>0x00</span><span class=w> </span><span class=mh>0x00</span><span class=w> </span><span class=mh>0x00</span><span class=w> </span><span class=mh>0x00</span><span class=w> </span>
</code></pre></div> </details> <h2 id=deserialization>Deserialization<a class=headerlink href=#deserialization title="Permanent link">&para;</a></h2> <p>The library maps BSON record types to JSON value types as follows:</p> <table> <thead> <tr> <th>BSON type</th> <th>BSON marker byte</th> <th>JSON value type</th> </tr> </thead> <tbody> <tr> <td>double</td> <td>0x01</td> <td>number_float</td> </tr> <tr> <td>string</td> <td>0x02</td> <td>string</td> </tr> <tr> <td>document</td> <td>0x03</td> <td>object</td> </tr> <tr> <td>array</td> <td>0x04</td> <td>array</td> </tr> <tr> <td>binary</td> <td>0x05</td> <td>binary</td> </tr> <tr> <td>undefined</td> <td>0x06</td> <td><em>unsupported</em></td> </tr> <tr> <td>ObjectId</td> <td>0x07</td> <td><em>unsupported</em></td> </tr> <tr> <td>boolean</td> <td>0x08</td> <td>boolean</td> </tr> <tr> <td>UTC Date-Time</td> <td>0x09</td> <td><em>unsupported</em></td> </tr> <tr> <td>null</td> <td>0x0A</td> <td>null</td> </tr> <tr> <td>Regular Expr.</td> <td>0x0B</td> <td><em>unsupported</em></td> </tr> <tr> <td>DB Pointer</td> <td>0x0C</td> <td><em>unsupported</em></td> </tr> <tr> <td>JavaScript Code</td> <td>0x0D</td> <td><em>unsupported</em></td> </tr> <tr> <td>Symbol</td> <td>0x0E</td> <td><em>unsupported</em></td> </tr> <tr> <td>JavaScript Code</td> <td>0x0F</td> <td><em>unsupported</em></td> </tr> <tr> <td>int32</td> <td>0x10</td> <td>number_integer</td> </tr> <tr> <td>Timestamp</td> <td>0x11</td> <td><em>unsupported</em></td> </tr> <tr> <td>128-bit decimal float</td> <td>0x13</td> <td><em>unsupported</em></td> </tr> <tr> <td>Max Key</td> <td>0x7F</td> <td><em>unsupported</em></td> </tr> <tr> <td>Min Key</td> <td>0xFF</td> <td><em>unsupported</em></td> </tr> </tbody> </table> <div class="admonition warning"> <p class=admonition-title>Incomplete mapping</p> <p>The mapping is <strong>incomplete</strong>. The unsupported mappings are indicated in the table above.</p> </div> <details class=example> <summary>Example</summary> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
<span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iomanip&gt;</span>
<span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
<span class=k>using</span><span class=w> </span><span class=n>json</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>nlohmann</span><span class=o>::</span><span class=n>json</span><span class=p>;</span>
<span class=kt>int</span><span class=w> </span><span class=nf>main</span><span class=p>()</span>
<span class=p>{</span>
<span class=w> </span><span class=c1>// create byte vector</span>
<span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>vector</span><span class=o>&lt;</span><span class=n>std</span><span class=o>::</span><span class=kt>uint8_t</span><span class=o>&gt;</span><span class=w> </span><span class=n>v</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>{</span><span class=mh>0x1b</span><span class=p>,</span><span class=w> </span><span class=mh>0x00</span><span class=p>,</span><span class=w> </span><span class=mh>0x00</span><span class=p>,</span><span class=w> </span><span class=mh>0x00</span><span class=p>,</span><span class=w> </span><span class=mh>0x08</span><span class=p>,</span><span class=w> </span><span class=mh>0x63</span><span class=p>,</span><span class=w> </span><span class=mh>0x6f</span><span class=p>,</span><span class=w> </span><span class=mh>0x6d</span><span class=p>,</span>
<span class=w> </span><span class=mh>0x70</span><span class=p>,</span><span class=w> </span><span class=mh>0x61</span><span class=p>,</span><span class=w> </span><span class=mh>0x63</span><span class=p>,</span><span class=w> </span><span class=mh>0x74</span><span class=p>,</span><span class=w> </span><span class=mh>0x00</span><span class=p>,</span><span class=w> </span><span class=mh>0x01</span><span class=p>,</span><span class=w> </span><span class=mh>0x10</span><span class=p>,</span><span class=w> </span><span class=mh>0x73</span><span class=p>,</span>
<span class=w> </span><span class=mh>0x63</span><span class=p>,</span><span class=w> </span><span class=mh>0x68</span><span class=p>,</span><span class=w> </span><span class=mh>0x65</span><span class=p>,</span><span class=w> </span><span class=mh>0x6d</span><span class=p>,</span><span class=w> </span><span class=mh>0x61</span><span class=p>,</span><span class=w> </span><span class=mh>0x00</span><span class=p>,</span><span class=w> </span><span class=mh>0x00</span><span class=p>,</span><span class=w> </span><span class=mh>0x00</span><span class=p>,</span>
<span class=w> </span><span class=mh>0x00</span><span class=p>,</span><span class=w> </span><span class=mh>0x00</span><span class=p>,</span><span class=w> </span><span class=mh>0x00</span>
<span class=w> </span><span class=p>};</span>
<span class=w> </span><span class=c1>// deserialize it with BSON</span>
<span class=w> </span><span class=n>json</span><span class=w> </span><span class=n>j</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>json</span><span class=o>::</span><span class=n>from_bson</span><span class=p>(</span><span class=n>v</span><span class=p>);</span>
<span class=w> </span><span class=c1>// print the deserialized JSON value</span>
<span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>cout</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>setw</span><span class=p>(</span><span class=mi>2</span><span class=p>)</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>j</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>endl</span><span class=p>;</span>
<span class=p>}</span>
</code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=p>{</span>
<span class=w> </span><span class=nt>&quot;compact&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span>
<span class=w> </span><span class=nt>&quot;schema&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>0</span>
<span class=p>}</span>
</code></pre></div> </details> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">January 3, 2025</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013 - 2024 Niels Lohmann </div> </div> <div class=md-social> <a href=https://github.com/nlohmann target=_blank rel=noopener title=github.com class=md-social__link> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 496 512"><!-- Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8M97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href=https://www.linkedin.com/in/nielslohmann/ target=_blank rel=noopener title=www.linkedin.com class=md-social__link> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5m282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href=https://www.xing.com/profile/Niels_Lohmann target=_blank rel=noopener title=www.xing.com class=md-social__link> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href=https://www.paypal.me/nlohmann target=_blank rel=noopener title=www.paypal.me class=md-social__link> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M111.4 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.3c-7.6 0-13.1-6.6-12.1-13.9L58.8 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.1 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.6ce7567c.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> <script src=../../../assets/javascripts/bundle.88dd0f4e.min.js></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-MML-AM_CHTML"></script> </body> </html>