orcus::
json_document_tree
¶This class stores a parsed JSON document tree structure.
Public Functions
json_document_tree
()¶json_document_tree
(string_pool &pool)¶~json_document_tree
()¶load
(const std::string &strm, const json_config &config)¶Load raw string stream containing a JSON structure to populate the document tree.
strm
- stream containing a JSON structure.
config
- configuration object.
load
(const char *p, size_t n, const json_config &config)¶Load raw string stream containing a JSON structure to populate the document tree.
p
- pointer to the stream containing a JSON structure.
n
- size of the stream.
config
- configuration object.
get_document_root
() const¶Get the root node of the document.
dump
() const¶Dump the JSON document tree to string.
dump_xml
() const¶Dump the JSON document tree to an XML structure.
orcus::
json_config
¶Public Types
Public Members
input_path
¶Path of the JSON file being parsed, in case the JSON string originates from a file. This parameter is required if external JSON files need to be resolved. Otherwise it’s optional.
output_path
¶Path of the file to which output is written to. Used only from the orcus-json command line tool.
output_format
¶Output format type. Used only from the orcus-json command line tool.
preserve_object_order
¶Control whether or not to preserve the order of object’s child name/value pairs. By definition, JSON’s object is an unordered set of name/value pairs, but in some cases preserving the original order may be desirable.
resolve_references
¶Control whether or not to resolve JSON references to external files.
persistent_string_values
¶When true, the document tree should allocate memory and hold copies of string values in the tree. When false, no extra memory is allocated for string values in the tree and the string values simply point to the original json string stream.
In other words, when this option is set to false, the caller must ensure that the json string stream instance stays alive for the entire life cycle of the document tree.
orcus::json::detail::
node
¶Each node instance represents a JSON value object stored in the document tree.
Public Functions
node
()¶~node
()¶child_count
() const¶Get the number of child nodes if any.
keys
() const¶Get a list of keys stored in a JSON object node.
orcus::json_document_error
- if the node is not of the object type.
key
(size_t index) const¶Get the key by index in a JSON object node. This method works only when the preserve object order option is set.
index
- 0-based key index.
orcus::json_document_error
- if the node is not of the object type.
std::out_of_range
- if the index is equal to or greater than the number of keys stored in the node.
child
(size_t index) const¶Get a child node by index.
index
- 0-based index of a child node.
orcus::json_document_error
- if the node is not one of the object or array types.
std::out_of_range
- if the index is equal to or greater than the number of child nodes that the node has.
child
(const pstring &key) const¶Get a child node by textural key value.
key
- textural key value to get a child node by.
orcus::json_document_error
- if the node is not of the object type, or the node doesn’t have the specified key.
parent
() const¶Get the parent node.
orcus::json_document_error
- if the node doesn’t have a parent node which implies that the node is a root node.
string_value
() const¶Get the string value of a JSON string node.
orcus::json_document_error
- if the node is not of the string type.
numeric_value
() const¶Get the numeric value of a JSON number node.
orcus::json_document_error
- if the node is not of the number type.
identity
() const¶Return an indentifier of the JSON value object that the node represents. The identifier is derived directly from the memory address of the value object.
Friends
orcus::json::detail::node::::orcus::json_document_tree
orcus::json::detail::
node_t
¶Values:
unset
¶node type is not set.
string
¶JSON string node. A node of this type contains a string value.
number
¶JSON number node. A node of this type contains a numeric value.
object
¶JSON object node. A node of this type contains one or more key-value pairs.
array
¶JSON array node. A node of this type contains one or more child nodes.
boolean_true
¶JSON boolean node containing a value of ‘true’.
boolean_false
¶JSON boolean node containing a value of ‘false’.
null
¶JSON node containing a ‘null’ value.