![]() |
simdjson 4.6.4
Ridiculously Fast JSON
|
An ephemeral JSON value returned during iteration. More...
#include <value.h>
Public Member Functions | |
| simdjson_inline | value () noexcept=default |
| Create a new invalid value. | |
| template<typename T > | |
| simdjson_inline simdjson_result< T > | get () noexcept |
| Get this value as the given type. | |
| template<typename T > | |
| simdjson_warn_unused simdjson_inline error_code | get (T &out) noexcept |
| Get this value as the given type. | |
| simdjson_inline simdjson_result< array > | get_array () noexcept |
| Cast this JSON value to an array. | |
| simdjson_inline simdjson_result< object > | get_object () noexcept |
| Cast this JSON value to an object. | |
| simdjson_inline simdjson_result< uint64_t > | get_uint64 () noexcept |
| Cast this JSON value to an unsigned integer. | |
| simdjson_inline simdjson_result< uint64_t > | get_uint64_in_string () noexcept |
| Cast this JSON value (inside string) to a unsigned integer. | |
| simdjson_inline simdjson_result< int64_t > | get_int64 () noexcept |
| Cast this JSON value to a signed integer. | |
| simdjson_inline simdjson_result< int64_t > | get_int64_in_string () noexcept |
| Cast this JSON value (inside string) to a signed integer. | |
| simdjson_inline simdjson_result< uint32_t > | get_uint32 () noexcept |
| Cast this JSON value to a 32-bit unsigned integer. | |
| simdjson_inline simdjson_result< int32_t > | get_int32 () noexcept |
| Cast this JSON value to a 32-bit signed integer. | |
| simdjson_inline simdjson_result< double > | get_double () noexcept |
| Cast this JSON value to a double. | |
| simdjson_inline simdjson_result< double > | get_double_in_string () noexcept |
| Cast this JSON value (inside string) to a double. | |
| simdjson_inline simdjson_result< std::string_view > | get_string (bool allow_replacement=false) noexcept |
| Cast this JSON value to a string. | |
| template<typename string_type > | |
| simdjson_warn_unused simdjson_inline error_code | get_string (string_type &receiver, bool allow_replacement=false) noexcept |
| Attempts to fill the provided std::string reference with the parsed value of the current string. | |
| simdjson_inline simdjson_result< std::string_view > | get_wobbly_string () noexcept |
| Cast this JSON value to a "wobbly" string. | |
| simdjson_inline simdjson_result< raw_json_string > | get_raw_json_string () noexcept |
| Cast this JSON value to a raw_json_string. | |
| simdjson_inline simdjson_result< bool > | get_bool () noexcept |
| Cast this JSON value to a bool. | |
| simdjson_inline simdjson_result< bool > | is_null () noexcept |
| Checks if this JSON value is null. | |
| template<class T > | |
| simdjson_inline | operator T () noexcept(false) |
| Cast this JSON value to an instance of type T. | |
| simdjson_inline | operator array () noexcept(false) |
| Cast this JSON value to an array. | |
| simdjson_inline | operator object () noexcept(false) |
| Cast this JSON value to an object. | |
| simdjson_inline | operator uint64_t () noexcept(false) |
| Cast this JSON value to an unsigned integer. | |
| simdjson_inline | operator int64_t () noexcept(false) |
| Cast this JSON value to a signed integer. | |
| simdjson_inline | operator double () noexcept(false) |
| Cast this JSON value to a double. | |
| simdjson_inline | operator std::string_view () noexcept(false) |
| Cast this JSON value to a string. | |
| simdjson_inline | operator raw_json_string () noexcept(false) |
| Cast this JSON value to a raw_json_string. | |
| simdjson_inline | operator bool () noexcept(false) |
| Cast this JSON value to a bool. | |
| simdjson_inline simdjson_result< array_iterator > | begin () &noexcept |
| Begin array iteration. | |
| simdjson_inline simdjson_result< array_iterator > | end () &noexcept |
| Sentinel representing the end of the array. | |
| simdjson_inline simdjson_result< size_t > | count_elements () &noexcept |
| This method scans the array and counts the number of elements. | |
| simdjson_inline simdjson_result< size_t > | count_fields () &noexcept |
| This method scans the object and counts the number of key-value pairs. | |
| simdjson_inline simdjson_result< value > | at (size_t index) noexcept |
| Get the value at the given index in the array. | |
| simdjson_inline simdjson_result< value > | find_field (std::string_view key) noexcept |
| Look up a field by name on an object (order-sensitive). | |
| simdjson_inline simdjson_result< value > | find_field (const char *key) noexcept |
| simdjson_inline simdjson_result< value > | find_field_unordered (std::string_view key) noexcept |
| Look up a field by name on an object, without regard to key order. | |
| simdjson_inline simdjson_result< value > | find_field_unordered (const char *key) noexcept |
| simdjson_inline simdjson_result< value > | operator[] (std::string_view key) noexcept |
| simdjson_inline simdjson_result< value > | operator[] (const char *key) noexcept |
| simdjson_result< value > | operator[] (int) noexcept=delete |
| simdjson_inline simdjson_result< json_type > | type () noexcept |
| Get the type of this JSON value. | |
| simdjson_inline simdjson_result< bool > | is_scalar () noexcept |
| Checks whether the value is a scalar (string, number, null, Boolean). | |
| simdjson_inline simdjson_result< bool > | is_string () noexcept |
| Checks whether the value is a string. | |
| simdjson_inline bool | is_negative () noexcept |
| Checks whether the value is a negative number. | |
| simdjson_inline simdjson_result< bool > | is_integer () noexcept |
| Checks whether the value is an integer number. | |
| simdjson_inline simdjson_result< number_type > | get_number_type () noexcept |
| Determine the number type (integer or floating-point number) as quickly as possible. | |
| simdjson_warn_unused simdjson_inline simdjson_result< number > | get_number () noexcept |
| Attempt to parse an ondemand::number. | |
| simdjson_inline std::string_view | raw_json_token () noexcept |
| Get the raw JSON for this token. | |
| simdjson_inline simdjson_result< std::string_view > | raw_json () noexcept |
| Get a string_view pointing at this value in the JSON document. | |
| simdjson_inline simdjson_result< const char * > | current_location () noexcept |
| Returns the current location in the document if in bounds. | |
| simdjson_inline int32_t | current_depth () const noexcept |
| Returns the current depth in the document if in bounds. | |
| simdjson_inline simdjson_result< value > | at_pointer (std::string_view json_pointer) noexcept |
| Get the value associated with the given JSON pointer. | |
| simdjson_inline simdjson_result< value > | at_path (std::string_view at_path) noexcept |
| Get the value associated with the given JSONPath expression. | |
| template<typename Func > | |
| simdjson_inline error_code | for_each_at_path_with_wildcard (std::string_view json_path, Func &&callback) noexcept |
| Call the provided callback for each value matching the given JSONPath expression with wildcard support. | |
| template<> | |
| simdjson_inline simdjson_result< array > | get () noexcept |
| template<> | |
| simdjson_inline simdjson_result< object > | get () noexcept |
| template<> | |
| simdjson_inline simdjson_result< raw_json_string > | get () noexcept |
| template<> | |
| simdjson_inline simdjson_result< std::string_view > | get () noexcept |
| template<> | |
| simdjson_inline simdjson_result< number > | get () noexcept |
| template<> | |
| simdjson_inline simdjson_result< double > | get () noexcept |
| template<> | |
| simdjson_inline simdjson_result< uint64_t > | get () noexcept |
| template<> | |
| simdjson_inline simdjson_result< int64_t > | get () noexcept |
| template<> | |
| simdjson_inline simdjson_result< uint32_t > | get () noexcept |
| template<> | |
| simdjson_inline simdjson_result< int32_t > | get () noexcept |
| template<> | |
| simdjson_inline simdjson_result< bool > | get () noexcept |
| template<> | |
| simdjson_warn_unused simdjson_inline error_code | get (array &out) noexcept |
| template<> | |
| simdjson_warn_unused simdjson_inline error_code | get (object &out) noexcept |
| template<> | |
| simdjson_warn_unused simdjson_inline error_code | get (raw_json_string &out) noexcept |
| template<> | |
| simdjson_warn_unused simdjson_inline error_code | get (std::string_view &out) noexcept |
| template<> | |
| simdjson_warn_unused simdjson_inline error_code | get (number &out) noexcept |
| template<> | |
| simdjson_warn_unused simdjson_inline error_code | get (double &out) noexcept |
| template<> | |
| simdjson_warn_unused simdjson_inline error_code | get (uint64_t &out) noexcept |
| template<> | |
| simdjson_warn_unused simdjson_inline error_code | get (int64_t &out) noexcept |
| template<> | |
| simdjson_warn_unused simdjson_inline error_code | get (uint32_t &out) noexcept |
| template<> | |
| simdjson_warn_unused simdjson_inline error_code | get (int32_t &out) noexcept |
| template<> | |
| simdjson_warn_unused simdjson_inline error_code | get (bool &out) noexcept |
| template<typename Func > | |
| error_code | for_each_at_path_with_wildcard (std::string_view json_path, Func &&callback) noexcept |
Protected Member Functions | |
| simdjson_inline | value (const value_iterator &iter) noexcept |
| Create a value. | |
| simdjson_inline void | skip () noexcept |
| Skip this value, allowing iteration to continue. | |
| simdjson_inline simdjson_result< object > | start_or_resume_object () noexcept |
| Get the object, starting or resuming it as necessary. | |
Static Protected Member Functions | |
| static simdjson_inline value | start (const value_iterator &iter) noexcept |
| Start a value at the current position. | |
| static simdjson_inline value | resume (const value_iterator &iter) noexcept |
| Resume a value. | |
Protected Attributes | |
| value_iterator | iter {} |
An ephemeral JSON value returned during iteration.
It is only valid for as long as you do not access more data in the JSON document.
|
defaultnoexcept |
Create a new invalid value.
Exists so you can declare a variable and later assign to it before use.
|
protectednoexcept |
Create a value.
Definition at line 21 of file value-inl.h.
|
noexcept |
Get the value at the given index in the array.
This function has linear-time complexity. This function should only be called once on an array instance since the array iterator is not reset between each call.
Definition at line 175 of file value-inl.h.
|
noexcept |
Get the value associated with the given JSONPath expression.
We only support JSONPath queries that trivially convertible to JSON Pointer queries: key names and array indices.
Definition at line 304 of file value-inl.h.
|
noexcept |
Get the value associated with the given JSON pointer.
We use the RFC 6901 https://tools.ietf.org/html/rfc6901 standard.
ondemand::parser parser; auto json = R"({ "foo": { "a": [ 10, 20, 30 ] }})"_padded; auto doc = parser.iterate(json); doc.at_pointer("/foo/a/1") == 20
It is allowed for a key to be the empty string:
ondemand::parser parser; auto json = R"({ "": { "a": [ 10, 20, 30 ] }})"_padded; auto doc = parser.iterate(json); doc.at_pointer("//a/1") == 20
Note that at_pointer() called on the document automatically calls the document's rewind method between each call. It invalidates all previously accessed arrays, objects and values that have not been consumed.
Calling at_pointer() on non-document instances (e.g., arrays and objects) is not standardized (by RFC 6901). We provide some experimental support for JSON pointers on non-document instances. Yet it is not the case when calling at_pointer on an array or an object instance: there is no rewind and no invalidation.
You may only call at_pointer on an array after it has been created, but before it has been first accessed. When calling at_pointer on an array, the pointer is advanced to the location indicated by the JSON pointer (in case of success). It is no longer possible to call at_pointer on the same array.
You may call at_pointer more than once on an object, but each time the pointer is advanced to be within the value matched by the key indicated by the JSON pointer query. Thus any preceding key (as well as the current key) can no longer be used with following JSON pointer calls.
Also note that at_pointer() relies on find_field() which implies that we do not unescape keys when matching
Definition at line 286 of file value-inl.h.
|
noexcept |
Begin array iteration.
Part of the std::iterable interface.
Definition at line 152 of file value-inl.h.
|
noexcept |
This method scans the array and counts the number of elements.
The count_elements method should always be called before you have begun iterating through the array: it is expected that you are pointing at the beginning of the array. The runtime complexity is linear in the size of the array. After calling this function, if successful, the array is 'rewinded' at its beginning as if it had never been accessed. If the JSON is malformed (e.g., there is a missing comma), then an error is returned and it is no longer safe to continue.
Performance hint: You should only call count_elements() as a last resort as it may require scanning the document twice or more.
Definition at line 158 of file value-inl.h.
|
noexcept |
This method scans the object and counts the number of key-value pairs.
The count_fields method should always be called before you have begun iterating through the object: it is expected that you are pointing at the beginning of the object. The runtime complexity is linear in the size of the object. After calling this function, if successful, the object is 'rewinded' at its beginning as if it had never been accessed. If the JSON is malformed (e.g., there is a missing comma), then an error is returned and it is no longer safe to continue.
To check that an object is empty, it is more performant to use the is_empty() method on the object instance.
Performance hint: You should only call count_fields() as a last resort as it may require scanning the document twice or more.
Definition at line 168 of file value-inl.h.
|
noexcept |
Returns the current depth in the document if in bounds.
E.g., 0 = finished with document 1 = document root value (could be [ or {, not yet known) 2 = , or } inside root array/object 3 = key or value inside root array/object.
Definition at line 262 of file value-inl.h.
|
noexcept |
Returns the current location in the document if in bounds.
Definition at line 258 of file value-inl.h.
|
noexcept |
Sentinel representing the end of the array.
Part of the std::iterable interface.
Definition at line 155 of file value-inl.h.
|
noexcept |
Definition at line 183 of file value-inl.h.
|
noexcept |
Look up a field by name on an object (order-sensitive).
By order-sensitive, we mean that fields must be accessed in the order they appear in the JSON text (although you can skip fields). See find_field_unordered() and operator[] for an order-insensitive version.
The following code reads z, then y, then x, and thus will not retrieve x or y if fed the JSON { "x": 1, "y": 2, "z": 3 }:
If you have multiple fields with a matching key ({"x": 1, "x": 1}) be mindful that only one field is returned.
Raw Keys: The lookup will be done against the raw key, and will not unescape keys. e.g. object["a"] will match { "a": 1 }, but will not match { "\u0061": 1 }.
| key | The key to look up. |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Definition at line 180 of file value-inl.h.
|
noexcept |
Definition at line 190 of file value-inl.h.
|
noexcept |
Look up a field by name on an object, without regard to key order.
Performance Notes: This is a bit less performant than find_field(), though its effect varies and often appears negligible. It starts out normally, starting out at the last field; but if the field is not found, it scans from the beginning of the object to see if it missed it. That missing case has a non-cache-friendly bump and lots of extra scanning, especially if the object in question is large. The fact that the extra code is there also bumps the executable size.
We default operator[] on find_field_unordered() for convenience. It is the default because it would be highly surprising (and hard to debug) if the default behavior failed to look up a field just because it was in the wrong order–and many APIs assume this. Therefore, you must be explicit if you want to treat objects as out of order.
If you have multiple fields with a matching key ({"x": 1, "x": 1}) be mindful that only one field is returned.
Use find_field() if you are sure fields will be in order (or are willing to treat it as if the field as not there when they are not in order).
| key | The key to look up. |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Definition at line 187 of file value-inl.h.
|
inlinenoexcept |
Definition at line 323 of file value-inl.h.
|
noexcept |
Call the provided callback for each value matching the given JSONPath expression with wildcard support.
Supports wildcard character (*) for arrays or ".*" for objects.
| json_path | JSONPath expression with wildcards |
| callback | Function called for each matching value |
|
noexcept |
Definition at line 96 of file value-inl.h.
|
noexcept |
Definition at line 97 of file value-inl.h.
|
noexcept |
Definition at line 98 of file value-inl.h.
|
noexcept |
Definition at line 99 of file value-inl.h.
|
noexcept |
Definition at line 100 of file value-inl.h.
|
noexcept |
Definition at line 101 of file value-inl.h.
|
noexcept |
Definition at line 102 of file value-inl.h.
|
noexcept |
Definition at line 103 of file value-inl.h.
|
noexcept |
Definition at line 104 of file value-inl.h.
|
noexcept |
Definition at line 105 of file value-inl.h.
|
noexcept |
Definition at line 106 of file value-inl.h.
|
inlinenoexcept |
Get this value as the given type.
Supported types: object, array, raw_json_string, string_view, uint64_t, int64_t, double, bool
You may use get_double(), get_bool(), get_uint64(), get_int64(), get_object(), get_array(), get_raw_json_string(), or get_string() instead. When SIMDJSON_SUPPORTS_CONCEPTS is set, custom types are also supported.
|
noexcept |
Definition at line 109 of file value-inl.h.
|
noexcept |
Definition at line 119 of file value-inl.h.
|
noexcept |
Definition at line 114 of file value-inl.h.
|
noexcept |
Definition at line 118 of file value-inl.h.
|
noexcept |
Definition at line 116 of file value-inl.h.
|
noexcept |
Definition at line 113 of file value-inl.h.
|
noexcept |
Definition at line 110 of file value-inl.h.
|
noexcept |
Definition at line 111 of file value-inl.h.
|
noexcept |
Definition at line 112 of file value-inl.h.
|
inlinenoexcept |
Get this value as the given type.
Supported types: object, array, raw_json_string, string_view, uint64_t, int64_t, double, bool If the macro SIMDJSON_SUPPORTS_CONCEPTS is set, then custom types are also supported.
| out | This is set to a value of the given type, parsed from the JSON. If there is an error, this may not be initialized. |
|
noexcept |
Definition at line 117 of file value-inl.h.
|
noexcept |
Definition at line 115 of file value-inl.h.
|
noexcept |
Cast this JSON value to an array.
Definition at line 32 of file value-inl.h.
|
noexcept |
Cast this JSON value to a bool.
Definition at line 89 of file value-inl.h.
|
noexcept |
Cast this JSON value to a double.
Definition at line 59 of file value-inl.h.
|
noexcept |
Cast this JSON value (inside string) to a double.
Definition at line 62 of file value-inl.h.
|
noexcept |
Cast this JSON value to a 32-bit signed integer.
Calls get_int64() and checks that the result fits in an int32_t.
Definition at line 83 of file value-inl.h.
|
noexcept |
Cast this JSON value to a signed integer.
Definition at line 71 of file value-inl.h.
|
noexcept |
Cast this JSON value (inside string) to a signed integer.
Definition at line 74 of file value-inl.h.
|
noexcept |
Attempt to parse an ondemand::number.
An ondemand::number may contain an integer value or a floating-point value, the simdjson library will autodetect the type. Thus it is a dynamically typed number. Before accessing the value, you must determine the detected type.
number.get_number_type() is number_type::signed_integer if we have an integer in [-9223372036854775808,9223372036854775808) You can recover the value by calling number.get_int64() and you have that number.is_int64() is true.
number.get_number_type() is number_type::unsigned_integer if we have an integer in [9223372036854775808,18446744073709551616) You can recover the value by calling number.get_uint64() and you have that number.is_uint64() is true.
For integers that do not fit in 64 bits, the function returns BIGINT_ERROR error code.
Otherwise, number.get_number_type() has value number_type::floating_point_number and we have a binary64 number. You can recover the value by calling number.get_double() and you have that number.is_double() is true.
You must check the type before accessing the value: it is an error to call "get_int64()" when number.get_number_type() is not number_type::signed_integer and when number.is_int64() is false.
Performance note: this is designed with performance in mind. When calling 'get_number()', you scan the number string only once, determining efficiently the type and storing it in an efficient manner.
Definition at line 230 of file value-inl.h.
|
noexcept |
Determine the number type (integer or floating-point number) as quickly as possible.
This function does not fully validate the input. It is useful when you only need to classify the numbers, without parsing them.
If you are planning to retrieve the value or you need full validation, consider using the get_number() method instead: it will fully parse and validate the input, and give you access to the type: get_number().get_number_type().
get_number_type() is number_type::unsigned_integer if we have an integer greater or equal to 9223372036854775808. get_number_type() is number_type::signed_integer if we have an integer that is less than 9223372036854775808. get_number_type() is number_type::big_integer for integers that do not fit in 64 bits, in which case the digit_count is set to the length of the big integer string. Otherwise, get_number_type() has value number_type::floating_point_number.
This function requires processing the number string, but it is expected to be faster than get_number().get_number_type() because it is does not parse the number value.
Definition at line 227 of file value-inl.h.
|
noexcept |
Cast this JSON value to an object.
Definition at line 35 of file value-inl.h.
|
noexcept |
Cast this JSON value to a raw_json_string.
The string is guaranteed to be valid UTF-8, and may have escapes in it (e.g. \ or
).
Definition at line 46 of file value-inl.h.
|
noexcept |
Cast this JSON value to a string.
The string is guaranteed to be valid UTF-8.
Equivalent to get<std::string_view>().
Important: a value should be consumed once. Calling get_string() twice on the same value is an error.
In some instances, you may want to allow replacement of invalid Unicode sequences. You may do so by passing the allow_replacement parameter as true. In the following example, the string "431924697b\udff0L\u0001Y" is not valid Unicode. By passing true to get_string, we allow the replacement of the invalid Unicode sequences with the Unicode replacement character (U+FFFD).
simdjson::ondemand::parser parser; auto json = R"({"deviceId":"431924697b\udff0L\u0001Y"})"_padded; simdjson::ondemand::document doc = parser.iterate(json); auto view = doc["deviceId"].get_string(true);
Definition at line 49 of file value-inl.h.
|
noexcept |
Attempts to fill the provided std::string reference with the parsed value of the current string.
The string is guaranteed to be valid UTF-8.
Important: a value should be consumed once. Calling get_string() twice on the same value is an error.
Performance: This method may be slower than get_string() or get_string(bool) because it may need to allocate memory. We recommend you avoid allocating an std::string unless you need to.
Definition at line 53 of file value-inl.h.
|
noexcept |
Cast this JSON value to a 32-bit unsigned integer.
Calls get_uint64() and checks that the result fits in a uint32_t.
Definition at line 77 of file value-inl.h.
|
noexcept |
Cast this JSON value to an unsigned integer.
Definition at line 65 of file value-inl.h.
|
noexcept |
Cast this JSON value (inside string) to a unsigned integer.
Definition at line 68 of file value-inl.h.
|
noexcept |
Cast this JSON value to a "wobbly" string.
The string is may not be a valid UTF-8 string. See https://simonsapin.github.io/wtf-8/
Important: a value should be consumed once. Calling get_wobbly_string() twice on the same value is an error.
Definition at line 56 of file value-inl.h.
|
noexcept |
Checks whether the value is an integer number.
Note that this requires to partially parse the number string. If the value is determined to be an integer, it may still not parse properly as an integer in subsequent steps (e.g., it might overflow).
Performance note: if you call this function systematically before parsing a number, you may have fallen for a performance anti-pattern.
Definition at line 224 of file value-inl.h.
|
noexcept |
Checks whether the value is a negative number.
Definition at line 220 of file value-inl.h.
|
noexcept |
Checks if this JSON value is null.
If and only if the value is null, then it is consumed (we advance). If we find a token that begins with 'n' but is not 'null', then an error is returned.
Definition at line 92 of file value-inl.h.
|
noexcept |
Checks whether the value is a scalar (string, number, null, Boolean).
Returns false when there it is an array or object.
Definition at line 205 of file value-inl.h.
|
noexcept |
Checks whether the value is a string.
Definition at line 212 of file value-inl.h.
| simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::operator array | ( | ) |
Cast this JSON value to an array.
| simdjson_error(INCORRECT_TYPE) | If the JSON value is not an array. |
Definition at line 126 of file value-inl.h.
| simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::operator bool | ( | ) |
Cast this JSON value to a bool.
| simdjson_error(INCORRECT_TYPE) | if the JSON value is not true or false. |
Definition at line 147 of file value-inl.h.
| simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::operator double | ( | ) |
Cast this JSON value to a double.
| simdjson_error(INCORRECT_TYPE) | If the JSON value is not a valid floating-point number. |
Definition at line 138 of file value-inl.h.
| simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::operator int64_t | ( | ) |
Cast this JSON value to a signed integer.
| simdjson_error(INCORRECT_TYPE) | If the JSON value is not a 64-bit integer. |
Definition at line 135 of file value-inl.h.
| simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::operator object | ( | ) |
Cast this JSON value to an object.
| simdjson_error(INCORRECT_TYPE) | If the JSON value is not an object. |
Definition at line 129 of file value-inl.h.
| simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::operator raw_json_string | ( | ) |
Cast this JSON value to a raw_json_string.
The string is guaranteed to be valid UTF-8, and may have escapes in it (e.g. \ or
).
| simdjson_error(INCORRECT_TYPE) | if the JSON value is not a string. |
Definition at line 144 of file value-inl.h.
| simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::operator std::string_view | ( | ) |
Cast this JSON value to a string.
The string is guaranteed to be valid UTF-8.
Equivalent to get<std::string_view>().
| simdjson_error(INCORRECT_TYPE) | if the JSON value is not a string. |
Definition at line 141 of file value-inl.h.
|
explicit |
Cast this JSON value to an instance of type T.
The programmer is responsible for providing an implementation of get<T> for the type T, if T is not one of the types supported by the library (object, array, raw_json_string, string_view, uint64_t, etc.).
See https://github.com/simdjson/simdjson/blob/master/doc/basics.md#adding-support-for-custom-types
Definition at line 123 of file value-inl.h.
| simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::operator uint64_t | ( | ) |
Cast this JSON value to an unsigned integer.
| simdjson_error(INCORRECT_TYPE) | If the JSON value is not a 64-bit unsigned integer. |
Definition at line 132 of file value-inl.h.
|
noexcept |
Definition at line 197 of file value-inl.h.
|
noexcept |
Definition at line 194 of file value-inl.h.
|
noexcept |
Get a string_view pointing at this value in the JSON document.
If this element is an array or an object, it consumes the array or the object and returns a string_view instance corresponding to the array as represented in JSON. It points inside the original document. If this element is a scalar (string, number, Boolean, null), it returns what raw_json_token() would return.
Definition at line 238 of file value-inl.h.
|
noexcept |
Get the raw JSON for this token.
The string_view will always point into the input buffer.
The string_view will start at the beginning of the token, and include the entire token as well as all spaces until the next token (or EOF). This means, for example, that a string token always begins with a " and is always terminated by the final ", possibly followed by a number of spaces.
The string_view is not null-terminated. However, if this is a scalar (string, number, boolean, or null), the character after the end of the string_view is guaranteed to be a non-space token.
Tokens include:
See also value::raw_json().
Definition at line 234 of file value-inl.h.
|
staticprotectednoexcept |
Resume a value.
Definition at line 28 of file value-inl.h.
|
staticprotectednoexcept |
Start a value at the current position.
(It should already be started; this is just a self-documentation method.)
Definition at line 25 of file value-inl.h.
|
protectednoexcept |
Get the object, starting or resuming it as necessary.
Definition at line 38 of file value-inl.h.
|
noexcept |
Get the type of this JSON value.
It does not validate or consume the value. E.g., you must still call "is_null()" to check that a value is null even if "type()" returns json_type::null.
NOTE: If you're only expecting a value to be one type (a typical case), it's generally better to just call .get_double, .get_string, etc. and check for INCORRECT_TYPE (or just let it throw an exception).
Definition at line 201 of file value-inl.h.
|
protected |