[#BloombergLP-bdljsn]
= xref:BloombergLP.adoc[BloombergLP]::bdljsn
:relfileprefix: ../
:mrdocs:

Components providing JSON parsing and generation facilities&period;

== Types

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bdljsn/Error.adoc[`Error`] 
| This unconstrained (value&hyphen;semantic) attribute class specifies a description of an error in processing a (JSON) document&period; See the  for information on the class attributes&period; Note that the class invariants are identically the constraints on the individual attributes&period;
| xref:BloombergLP/bdljsn/Json.adoc[`Json`] 
| This type is designed to be a thin wrapper around a variant of the possible JSON types, using a BDE&hyphen;style variant interface&period;
| xref:BloombergLP/bdljsn/JsonArray.adoc[`JsonArray`] 
| This type is designed to replicate much of the standard sequence container interface, eliding interfaces that are less relevant for a non&hyphen;generic container&period; Note that a `bsl&colon;&colon;vector` is chosen for the implementation because our implementation permits the element type to be incomplete (when just spelling the type name)&period;
| xref:BloombergLP/bdljsn/JsonNull-0b.adoc[`JsonNull`] 
| This type represents the JSON null value&period; There is only 1 value of this type, so all objects compare equal, hash to the same value, etc&period;
| xref:BloombergLP/bdljsn/JsonNumber.adoc[`JsonNumber`] 
| This class defines a value&hyphen;semantic class that represents a JSON number&period; Objects of this class have a value determined at construction and does not change except by assignment from or swap with another `JsonNumber` object&period; The value can be specified by supplying a string that conforms to the &lcub;JSON Textual Specification&rcub; or from one of the &lcub;Supported Types&rcub;&period; The value of a JSON object can be converted to any of those types&semi; however, some of those conversions can be inexact&period;
| xref:BloombergLP/bdljsn/JsonObject.adoc[`JsonObject`] 
| This type is designed to replicate much of the standard associative container interface, eliding interfaces that are less relevant for a non&hyphen;generic container, like hasher and comparator access, emplacement, nodes, capacity management, etc&period;
| xref:BloombergLP/bdljsn/JsonObject_MemberInitializer.adoc[`JsonObject&lowbar;MemberInitializer`] 
| This component&hyphen;private class is designed capture a set of values that can be used to initialize an element in a `JsonObject`&period; The purpose here is to enable list&hyphen;initialization (including nested lists) of JSON objects&period;
| xref:BloombergLP/bdljsn/JsonTestSuiteUtil.adoc[`JsonTestSuiteUtil`] 
| This utility `struct` provides a namespace for the test points of the _JSON_ _Test_ _Suite_&period;
| xref:BloombergLP/bdljsn/JsonType.adoc[`JsonType`] 
| This `struct` provides a namespace for enumerating the set value types of the JSON language&period; See `Enum` in the TYPES sub&hyphen;section for details&period;
| xref:BloombergLP/bdljsn/JsonUtil.adoc[`JsonUtil`] 
| This `struct` provides a namespace for utility functions that provide `read` and `write` operations to&sol;from `Json` objects&period;
| xref:BloombergLP/bdljsn/Json_ConstructVisitor.adoc[`Json&lowbar;ConstructVisitor`] 
| This component&hyphen;private class is used to construct a `Json` object from a `Json&lowbar;Initializer` object&period; `Json&lowbar;Initializer` is a variant class defined below&period;
| xref:BloombergLP/bdljsn/Json_Initializer.adoc[`Json&lowbar;Initializer`] 
| This component&hyphen;private class is designed capture a set of values that can be used to initialize a `Json` object, or an element in a `JsonArray`, or the &quot;value&quot; portion of a `JsonObject` member&period; This class is not modifiable, and (except for small types like `int`) does not own the objects that it holds&period; The purpose here is to enable list&hyphen;initialization (including nested lists) of `Json`, `JsonArray`, and `JsonObject` objects&period; The lifetime of a `Json&lowbar;Initializer` object should not exceed that of list&hyphen;initialization expression because pointers held here would no longer be valid&period;
| xref:BloombergLP/bdljsn/Json_StringInvariantGuard.adoc[`Json&lowbar;StringInvariantGuard`] 
| This is a component&hyphen;private guard class&period;
| xref:BloombergLP/bdljsn/Json_VisitUtil.adoc[`Json&lowbar;VisitUtil`] 
| The `Json&lowbar;VisitUtil` type&period;
| xref:BloombergLP/bdljsn/Location.adoc[`Location`] 
| This unconstrained (value&hyphen;semantic) attribute class specifies a location in a (JSON) document&period; See the  for information on the class attributes&period; Note that the class invariants are identically the constraints on the individual attributes&period;
| xref:BloombergLP/bdljsn/NumberUtil.adoc[`NumberUtil`] 
| This `struct` provides a namespace for a suite of functions that convert between a JSON formated numeric value and various numerical types&period; The valid syntax for a JSON formatted numeric value is spelled out in `https&colon;&sol;&sol;www&period;rfc&hyphen;editor&period;org&sol;rfc&sol;rfc8259&num;section&hyphen;6`&period;
| xref:BloombergLP/bdljsn/NumberUtil_IsSigned.adoc[`NumberUtil&lowbar;IsSigned`] 
| This class will be a `bsl&colon;&colon;true&lowbar;type` if the specified (template parameter type) `t&lowbar;TYPE` is a signed type, and `bsl&colon;&colon;false&lowbar;type` otherwise&period; `t&lowbar;TYPE` shall be an integral type&period; Note that currently bsl&colon;&colon;is&lowbar;signed is not available for C&plus;&plus;03 platforms&period;
| xref:BloombergLP/bdljsn/ReadOptions.adoc[`ReadOptions`] 
| This simply constrained (value&hyphen;semantic) attribute class specifies options for reading a JSON document&period; See the  for information on the class attributes&period; Note that the class invariants are identically the constraints on the individual attributes&period;
| xref:BloombergLP/bdljsn/StringUtil.adoc[`StringUtil`] 
| This class provides utility functions for converting arbitrary UTF&hyphen;8 sequences into JSON strings and visa versa&period; See &lsqb;&rsqb;Strings) for details of these transformations&period;
| xref:BloombergLP/bdljsn/Tokenizer.adoc[`Tokenizer`] 
| This `class` provides a mechanism for traversing JSON data stored in a `bsl&colon;&colon;streambuf` one node at a time and allows clients to access the data associated with that node, including its type and data value&period;
| xref:BloombergLP/bdljsn/WriteOptions.adoc[`WriteOptions`] 
| This simply constrained (value&hyphen;semantic) attribute class specifies options for writing a JSON document&period; See the  for information on the class attributes&period; Note that the class invariants are identically the constraints on the individual attributes&period;
| xref:BloombergLP/bdljsn/WriteStyle.adoc[`WriteStyle`] 
| This `struct` provides a namespace for enumerating the formatting styles that can be used for writing a JSON document&period; See `Enum` in the TYPES sub&hyphen;section for details&period;
|===


== Functions

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bdljsn/hashAppend-05.adoc[`hashAppend`] 
| `hashAppend` overloads
| xref:BloombergLP/bdljsn/operator_json.adoc[`operator&quot;&quot;&lowbar;json`] 
| Return a `bdljsn&colon;&colon;Json` object having the value of the JSON described in the specified `text` of the specified `numBytes`&period; If `text` is not a valid JSON document then invoke the currently installed `bsls&colon;&colon;Assert` failure handler&period;
| xref:BloombergLP/bdljsn/swap-0b.adoc[`swap`] 
| `swap` overloads
| xref:BloombergLP/bdljsn/operator_lshift-07d.adoc[`operator&lt;&lt;`] 
| Stream insertion operators
| xref:BloombergLP/bdljsn/operator_eq-09.adoc[`operator&equals;&equals;`] 
| Equality operators
| xref:BloombergLP/bdljsn/operator_not_eq-085.adoc[`operator!&equals;`] 
| Inequality operators
|===


== Variables

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bdljsn/jsonNull-08.adoc[`jsonNull`] 
| The singular value of the `JsonNull` type&period;
|===



[.small]#Created with https://www.mrdocs.com[MrDocs]#
