JsonObject::is<T>()
Description
Tests if the value at specified key has the type T.
Signature
bool is<bool> (TString key) const;
bool is<const char*> (TString key) const;
bool is<char*> (TString key) const;
bool is<double> (TString key) const;
bool is<float> (TString key) const;
bool is<signed char> (TString key) const;
bool is<signed int> (TString key) const;
bool is<signed long> (TString key) const;
bool is<signed short> (TString key) const;
bool is<unsigned char> (TString key) const;
bool is<unsigned int> (TString key) const;
bool is<unsigned long> (TString key) const;
bool is<unsigned short> (TString key) const;
bool is<signed long long> (TString key) const; // <- may require ARDUINOJSON_USE_LONG_LONG
bool is<unsigned long long>(TString key) const; // <- may require ARDUINOJSON_USE_LONG_LONG
bool is<JsonArray> (TString key) const;
bool is<JsonObject> (TString key) const;
Arguments
key: the key of the value in the object, can be a:
const char*,String,std::string, orconst __FlashStringHelper*.
T: the type to test.
Return value
trueif value at specified key matches the typeT,falseif not
Remarks
Different C++ types can store the same JSON value, so is<T>() can return true for several Ts. For example, is<float>() always returns the same value as is<double>() .
The table below gives the correspondence between the JSON type and the C++ types:
| JSON type | T |
|---|---|
| Floating point | float, double |
| Integer | int, short, long, long long |
| String | const char*, char* |
| Boolean | bool |
| Array | JsonArray |
| Object | JsonObject |
Caution: is<float>() and is<double>() return true for integers too.
Example
char json[] = "{\"name\":\"toto\",\"pi\":3.14}";
StaticJsonBuffer<256> jsonBuffer;
JsonObject& obj = jsonBuffer.parseObject(json);
bool nameIsString = obj.is<char*>("name"); // <- true
bool piIsFloat = obj.is<float>("pi"); // <- true
// but we could also use JsonVariant.is<T>(), like that:
nameIsString = obj["name"].is<char*>(); // <- true
piIsFloat = obj["pi"].is<float>(); // <- true