deploy: 94fe31eb9b
This commit is contained in:
1 parent
41c601a7d1
commit
d2e264bd84
1400 files changed
+11859
-5440
No files matched your search
@@ -1,4 +1,4 @@
|
||||
<!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/enum_conversion/" rel="canonical"><link href=../serialization/ rel=prev><link href=../macros/ rel=next><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.7"><title>Specializing enum conversion - JSON for Modern C++</title><link rel=stylesheet href=../../assets/stylesheets/main.ec1eaa64.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../assets/external/fonts.googleapis.com/css.61a430c9.css"><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=#specializing-enum-conversion 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> Specializing enum conversion </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 Line truncated
|
||||
<!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/enum_conversion/" rel="canonical"><link href=../serialization/ rel=prev><link href=../macros/ rel=next><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.7"><title>Specializing enum conversion - JSON for Modern C++</title><link rel=stylesheet href=../../assets/stylesheets/main.ec1eaa64.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../assets/external/fonts.googleapis.com/css.61a430c9.css"><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=#specializing-enum-conversion 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> Specializing enum conversion </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 Line truncated
|
||||
<span class=k>enum</span><span class=w> </span><span class=nc>TaskState</span><span class=w> </span><span class=p>{</span>
|
||||
<span class=w> </span><span class=n>TS_STOPPED</span><span class=p>,</span>
|
||||
<span class=w> </span><span class=n>TS_RUNNING</span><span class=p>,</span>
|
||||
@@ -27,7 +27,7 @@
|
||||
</code></pre></div> <details class=example> <summary>Example: serializing/deserializing enums, including a second enum type</summary> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf><iostream></span>
|
||||
<span class=cp>#include</span><span class=w> </span><span class=cpf><nlohmann/json.hpp></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=n>nlohmann</span><span class=o>::</span><span class=n>json</span><span class=p>;</span>
|
||||
|
||||
<span class=k>namespace</span><span class=w> </span><span class=nn>ns</span>
|
||||
<span class=p>{</span>
|
||||
@@ -65,7 +65,7 @@
|
||||
<span class=w> </span><span class=n>json</span><span class=w> </span><span class=n>j_stopped</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>ns</span><span class=o>::</span><span class=n>TS_STOPPED</span><span class=p>;</span>
|
||||
<span class=w> </span><span class=n>json</span><span class=w> </span><span class=n>j_red</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>ns</span><span class=o>::</span><span class=n>Color</span><span class=o>::</span><span class=n>red</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><<</span><span class=w> </span><span class=s>"ns::TS_STOPPED -> "</span><span class=w> </span><span class=o><<</span><span class=w> </span><span class=n>j_stopped</span>
|
||||
<span class=w> </span><span class=o><<</span><span class=w> </span><span class=s>", ns::Color::red -> "</span><span class=w> </span><span class=o><<</span><span class=w> </span><span class=n>j_red</span><span class=w> </span><span class=o><<</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=w> </span><span class=o><<</span><span class=w> </span><span class=s>", ns::Color::red -> "</span><span class=w> </span><span class=o><<</span><span class=w> </span><span class=n>j_red</span><span class=w> </span><span class=o><<</span><span class=w> </span><span class=sc>'\n'</span><span class=p>;</span>
|
||||
|
||||
<span class=w> </span><span class=c1>// deserialization</span>
|
||||
<span class=w> </span><span class=n>json</span><span class=w> </span><span class=n>j_running</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"running"</span><span class=p>;</span>
|
||||
@@ -73,7 +73,7 @@
|
||||
<span class=w> </span><span class=k>auto</span><span class=w> </span><span class=n>running</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>j_running</span><span class=p>.</span><span class=n>get</span><span class=o><</span><span class=n>ns</span><span class=o>::</span><span class=n>TaskState</span><span class=o>></span><span class=p>();</span>
|
||||
<span class=w> </span><span class=k>auto</span><span class=w> </span><span class=n>blue</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>j_blue</span><span class=p>.</span><span class=n>get</span><span class=o><</span><span class=n>ns</span><span class=o>::</span><span class=n>Color</span><span class=o>></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><<</span><span class=w> </span><span class=n>j_running</span><span class=w> </span><span class=o><<</span><span class=w> </span><span class=s>" -> "</span><span class=w> </span><span class=o><<</span><span class=w> </span><span class=n>running</span>
|
||||
<span class=w> </span><span class=o><<</span><span class=w> </span><span class=s>", "</span><span class=w> </span><span class=o><<</span><span class=w> </span><span class=n>j_blue</span><span class=w> </span><span class=o><<</span><span class=w> </span><span class=s>" -> "</span><span class=w> </span><span class=o><<</span><span class=w> </span><span class=k>static_cast</span><span class=o><</span><span class=kt>int</span><span class=o>></span><span class=p>(</span><span class=n>blue</span><span class=p>)</span><span class=w> </span><span class=o><<</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=w> </span><span class=o><<</span><span class=w> </span><span class=s>", "</span><span class=w> </span><span class=o><<</span><span class=w> </span><span class=n>j_blue</span><span class=w> </span><span class=o><<</span><span class=w> </span><span class=s>" -> "</span><span class=w> </span><span class=o><<</span><span class=w> </span><span class=k>static_cast</span><span class=o><</span><span class=kt>int</span><span class=o>></span><span class=p>(</span><span class=n>blue</span><span class=p>)</span><span class=w> </span><span class=o><<</span><span class=w> </span><span class=sc>'\n'</span><span class=p>;</span>
|
||||
|
||||
<span class=w> </span><span class=c1>// deserializing undefined JSON value to enum</span>
|
||||
<span class=w> </span><span class=c1>// (where the first map entry above is the default)</span>
|
||||
@@ -81,7 +81,7 @@
|
||||
<span class=w> </span><span class=k>auto</span><span class=w> </span><span class=n>invalid</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>j_pi</span><span class=p>.</span><span class=n>get</span><span class=o><</span><span class=n>ns</span><span class=o>::</span><span class=n>TaskState</span><span class=o>></span><span class=p>();</span>
|
||||
<span class=w> </span><span class=k>auto</span><span class=w> </span><span class=n>unknown</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>j_pi</span><span class=p>.</span><span class=n>get</span><span class=o><</span><span class=n>ns</span><span class=o>::</span><span class=n>Color</span><span class=o>></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><<</span><span class=w> </span><span class=n>j_pi</span><span class=w> </span><span class=o><<</span><span class=w> </span><span class=s>" -> "</span><span class=w> </span><span class=o><<</span><span class=w> </span><span class=n>invalid</span><span class=w> </span><span class=o><<</span><span class=w> </span><span class=s>", "</span>
|
||||
<span class=w> </span><span class=o><<</span><span class=w> </span><span class=n>j_pi</span><span class=w> </span><span class=o><<</span><span class=w> </span><span class=s>" -> "</span><span class=w> </span><span class=o><<</span><span class=w> </span><span class=k>static_cast</span><span class=o><</span><span class=kt>int</span><span class=o>></span><span class=p>(</span><span class=n>unknown</span><span class=p>)</span><span class=w> </span><span class=o><<</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=w> </span><span class=o><<</span><span class=w> </span><span class=n>j_pi</span><span class=w> </span><span class=o><<</span><span class=w> </span><span class=s>" -> "</span><span class=w> </span><span class=o><<</span><span class=w> </span><span class=k>static_cast</span><span class=o><</span><span class=kt>int</span><span class=o>></span><span class=p>(</span><span class=n>unknown</span><span class=p>)</span><span class=w> </span><span class=o><<</span><span class=w> </span><span class=sc>'\n'</span><span class=p>;</span>
|
||||
<span class=p>}</span>
|
||||
</code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=kc>ns</span><span class=p>::</span><span class=err>TS_STOPPED</span><span class=w> </span><span class=mi>-</span><span class=err>></span><span class=w> </span><span class=s2>"stopped"</span><span class=p>,</span><span class=w> </span><span class=kc>ns</span><span class=p>::</span><span class=err>Color</span><span class=p>::</span><span class=err>red</span><span class=w> </span><span class=mi>-</span><span class=err>></span><span class=w> </span><span class=s2>"red"</span>
|
||||
<span class=s2>"running"</span><span class=w> </span><span class=mi>-</span><span class=err>></span><span class=w> </span><span class=mi>1</span><span class=p>,</span><span class=w> </span><span class=s2>"blue"</span><span class=w> </span><span class=mi>-</span><span class=err>></span><span class=w> </span><span class=mi>2</span>
|
||||
@@ -94,7 +94,7 @@
|
||||
</code></pre></div> <p>Either form can be read back, with or without the macro.</p> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">¶</a></h2> <p>Just as in <a href=../arbitrary_types/ >Arbitrary Type Conversions</a> above,</p> <ul> <li><a href=../../api/macros/nlohmann_json_serialize_enum/ ><code>NLOHMANN_JSON_SERIALIZE_ENUM()</code></a> 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.</li> <li>It MUST be available (e.g., proper headers must be included) everywhere you use the conversions.</li> </ul> <p>Other Important points:</p> <ul> <li>When using <a href=../../api/basic_json/get/ ><code>get<ENUM_TYPE>()</code></a>, undefined <abbr title="JavaScript Object Notation">JSON</abbr> values will default to the first pair specified in your map. Select this default pair carefully. If you desire an exception in this circumstance use <a href=../../api/macros/nlohmann_json_serialize_enum_strict/ ><code>NLOHMANN_JSON_SERIALIZE_ENUM_STRICT()</code></a> which behaves identically except for throwing an <a href=../../home/exceptions/#jsonexceptionout_of_range410><code>out_of_range.410</code></a> exception on unrecognized values, both when serializing an enum value not listed in the map and when deserializing a <abbr title="JavaScript Object Notation">JSON</abbr> value that matches none of the map's entries.</li> <li>If an enum or <abbr title="JavaScript Object Notation">JSON</abbr> 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 <abbr title="JavaScript Object Notation">JSON</abbr>.</li> <li>To disable the default serialization of enumerators as integers and force a compiler error instead, see <a href=../../api/macros/json_disable_enum_serialization/ ><code>JSON_DISABLE_ENUM_SERIALIZATION</code></a>.</li> </ul> <details class=example> <summary>Example: <code>NLOHMANN_JSON_SERIALIZE_ENUM_STRICT</code> throwing on unrecognized values</summary> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf><iostream></span>
|
||||
<span class=cp>#include</span><span class=w> </span><span class=cpf><nlohmann/json.hpp></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=n>nlohmann</span><span class=o>::</span><span class=n>json</span><span class=p>;</span>
|
||||
|
||||
<span class=k>namespace</span><span class=w> </span><span class=nn>ns</span>
|
||||
<span class=p>{</span>
|
||||
@@ -127,7 +127,7 @@
|
||||
<span class=w> </span><span class=p>}</span>
|
||||
<span class=w> </span><span class=k>catch</span><span class=w> </span><span class=p>(</span><span class=k>const</span><span class=w> </span><span class=n>json</span><span class=o>::</span><span class=n>exception</span><span class=w> </span><span class=n>e</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><<</span><span class=w> </span><span class=s>"deserialization failed: "</span><span class=w> </span><span class=o><<</span><span class=w> </span><span class=n>e</span><span class=p>.</span><span class=n>what</span><span class=p>()</span><span class=w> </span><span class=o><<</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=w> </span><span class=n>std</span><span class=o>::</span><span class=n>cout</span><span class=w> </span><span class=o><<</span><span class=w> </span><span class=s>"deserialization failed: "</span><span class=w> </span><span class=o><<</span><span class=w> </span><span class=n>e</span><span class=p>.</span><span class=n>what</span><span class=p>()</span><span class=w> </span><span class=o><<</span><span class=w> </span><span class=sc>'\n'</span><span class=p>;</span>
|
||||
<span class=w> </span><span class=p>}</span>
|
||||
|
||||
<span class=w> </span><span class=c1>// invalid deserialization</span>
|
||||
@@ -139,7 +139,7 @@
|
||||
<span class=w> </span><span class=p>}</span>
|
||||
<span class=w> </span><span class=k>catch</span><span class=w> </span><span class=p>(</span><span class=k>const</span><span class=w> </span><span class=n>json</span><span class=o>::</span><span class=n>exception</span><span class=w> </span><span class=n>e</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><<</span><span class=w> </span><span class=s>"deserialization failed: "</span><span class=w> </span><span class=o><<</span><span class=w> </span><span class=n>e</span><span class=p>.</span><span class=n>what</span><span class=p>()</span><span class=w> </span><span class=o><<</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=w> </span><span class=n>std</span><span class=o>::</span><span class=n>cout</span><span class=w> </span><span class=o><<</span><span class=w> </span><span class=s>"deserialization failed: "</span><span class=w> </span><span class=o><<</span><span class=w> </span><span class=n>e</span><span class=p>.</span><span class=n>what</span><span class=p>()</span><span class=w> </span><span class=o><<</span><span class=w> </span><span class=sc>'\n'</span><span class=p>;</span>
|
||||
<span class=w> </span><span class=p>}</span>
|
||||
|
||||
<span class=w> </span><span class=k>return</span><span class=w> </span><span class=mi>0</span><span class=p>;</span>
|
||||
|
||||
@@ -48,7 +48,7 @@ Example: serializing/deserializing enums, including a second enum type
|
||||
#include <iostream>
|
||||
#include <nlohmann/json.hpp>
|
||||
|
||||
using json = nlohmann::json;
|
||||
using nlohmann::json;
|
||||
|
||||
namespace ns
|
||||
{
|
||||
@@ -86,7 +86,7 @@ int main()
|
||||
json j_stopped = ns::TS_STOPPED;
|
||||
json j_red = ns::Color::red;
|
||||
std::cout << "ns::TS_STOPPED -> " << j_stopped
|
||||
<< ", ns::Color::red -> " << j_red << std::endl;
|
||||
<< ", ns::Color::red -> " << j_red << '\n';
|
||||
|
||||
// deserialization
|
||||
json j_running = "running";
|
||||
@@ -94,7 +94,7 @@ int main()
|
||||
auto running = j_running.get<ns::TaskState>();
|
||||
auto blue = j_blue.get<ns::Color>();
|
||||
std::cout << j_running << " -> " << running
|
||||
<< ", " << j_blue << " -> " << static_cast<int>(blue) << std::endl;
|
||||
<< ", " << j_blue << " -> " << static_cast<int>(blue) << '\n';
|
||||
|
||||
// deserializing undefined JSON value to enum
|
||||
// (where the first map entry above is the default)
|
||||
@@ -102,7 +102,7 @@ int main()
|
||||
auto invalid = j_pi.get<ns::TaskState>();
|
||||
auto unknown = j_pi.get<ns::Color>();
|
||||
std::cout << j_pi << " -> " << invalid << ", "
|
||||
<< j_pi << " -> " << static_cast<int>(unknown) << std::endl;
|
||||
<< j_pi << " -> " << static_cast<int>(unknown) << '\n';
|
||||
}
|
||||
```
|
||||
|
||||
@@ -147,7 +147,7 @@ Example: `NLOHMANN_JSON_SERIALIZE_ENUM_STRICT` throwing on unrecognized values
|
||||
#include <iostream>
|
||||
#include <nlohmann/json.hpp>
|
||||
|
||||
using json = nlohmann::json;
|
||||
using nlohmann::json;
|
||||
|
||||
namespace ns
|
||||
{
|
||||
@@ -180,7 +180,7 @@ int main()
|
||||
}
|
||||
catch (const json::exception e)
|
||||
{
|
||||
std::cout << "deserialization failed: " << e.what() << std::endl;
|
||||
std::cout << "deserialization failed: " << e.what() << '\n';
|
||||
}
|
||||
|
||||
// invalid deserialization
|
||||
@@ -192,7 +192,7 @@ int main()
|
||||
}
|
||||
catch (const json::exception e)
|
||||
{
|
||||
std::cout << "deserialization failed: " << e.what() << std::endl;
|
||||
std::cout << "deserialization failed: " << e.what() << '\n';
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
Reference in new issue
Block a user