Skip to content

Latest commit

 

History

History
105 lines (75 loc) · 3.66 KB

File metadata and controls

105 lines (75 loc) · 3.66 KB

jsoncons::basic_json::is

template <typename T,typename... Args>
bool is(Args&&... args) const noexcept; (1)

bool is_null() const noexcept; (2)

bool is_string() const noexcept; (3)

bool is_int64() const noexcept; (4)

bool is_uint64() const noexcept; (5)

bool is_double() const noexcept; (6)

bool is_number() const noexcept; (7)

bool is_bool() const noexcept; (8)

bool is_byte_string() const; (9)

bool is_bignum() const; (10)

bool is_array() const noexcept; (11)

bool is_object() const noexcept; (12)

(1) Generic is equivalent to type T. Returns true if the json value is the same as type T according to json_type_traits, false otherwise.

bool is<X<T>> const noexcept

If the type X is not std::basic_string but otherwise satisfies SequenceContainer, is<X<T>>() returns true if the json value is an array and each element is the "same as" type T according to json_type_traits, false otherwise. bool is<Xstd::string,T> const noexcept If the type 'X' satisfies AssociativeContainer or UnorderedAssociativeContainer, is<X<T>>() returns true if the json value is an object and each mapped value is the "same as" T according to json_type_traits, false otherwise.

(2) Same as is<jsoncons::null_type>().
Returns true if the json value is null, false otherwise.

(3) Same as is<std::string>().
Returns true if the json value is of string type, false otherwise.

(4) Same as is<int64_t>().
Returns true if the json value is integral and within the range of int64_t, false otherwise.

(5) Same as is<uint64_t>().
Returns true if the json value is integral and within the range of uint64_t, false otherwise.

(6) Same as is<double>().
Returns true if the json value is floating point and within the range of double, false otherwise.

(7) Same as is<int64_t>() || is<uint64_t>() || is<double>().

(8) Same as is<bool>().
Returns true if the json value is of boolean type, false otherwise.

(10) Same as is<jsoncons::bigint>().
Returns true if is<int64_t>() || is<uint64_t>() is **true**, or if isstd::string()` is true and the string holds an integer value, otherwise false.

(11) Returns true if the json value is an array, false otherwise.

(12) Returns true if the json value is an object, false otherwise.

Examples

json j = json::parse(R"(
{
    "k1" : 2147483647,
    "k2" : 2147483648,
    "k3" : -10,
    "k4" : 10.5,
    "k5" : true,
    "k6" : "10.5"
}
)");

std::cout << std::boolalpha << "(1) " << j["k1"].is<int32_t>() << '\n';
std::cout << std::boolalpha << "(2) " << j["k2"].is<int32_t>() << '\n';
std::cout << std::boolalpha << "(3) " << j["k2"].is<long long>() << '\n';
std::cout << std::boolalpha << "(4) " << j["k3"].is<signed char>() << '\n';
std::cout << std::boolalpha << "(5) " << j["k3"].is<uint32_t>() << '\n';
std::cout << std::boolalpha << "(6) " << j["k4"].is<int32_t>() << '\n';
std::cout << std::boolalpha << "(7) " << j["k4"].is<double>() << '\n';
std::cout << std::boolalpha << "(8) " << j["k5"].is<int>() << '\n';
std::cout << std::boolalpha << "(9) " << j["k5"].is<bool>() << '\n';
std::cout << std::boolalpha << "(10) " << j["k6"].is<double>() << '\n';

Output:

(1) true
(2) false
(3) true
(4) true
(5) false
(6) false
(7) true
(8) false
(9) true
(10) false