mirror of
https://github.com/bblanchon/ArduinoJson.git
synced 2025-07-14 19:16:35 +02:00
Added JsonVariant::operator[](const char*)
This commit is contained in:
@ -91,13 +91,17 @@ class JsonVariant {
|
||||
|
||||
static JsonVariant &invalid() { return _invalid; }
|
||||
|
||||
bool success() { return _type != Internals::JSON_INVALID; }
|
||||
bool success() {
|
||||
return _type != Internals::JSON_INVALID &&
|
||||
_type != Internals::JSON_UNDEFINED;
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void writeTo(T &writer) const;
|
||||
|
||||
size_t size() const;
|
||||
JsonVariant &operator[](int index);
|
||||
JsonVariant &operator[](const char *key);
|
||||
|
||||
private:
|
||||
JsonVariant(Internals::JsonVariantType type) : _type(type) {}
|
||||
|
@ -86,6 +86,11 @@ JsonVariant &JsonVariant::operator[](int index) {
|
||||
return _content.asArray->operator[](index);
|
||||
}
|
||||
|
||||
JsonVariant &JsonVariant::operator[](const char *key) {
|
||||
if (_type != JSON_OBJECT) return JsonVariant::invalid();
|
||||
return _content.asObject->operator[](key);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void JsonVariant::writeTo(T &writer) const {
|
||||
switch (_type) {
|
||||
|
@ -29,4 +29,19 @@ TEST_F(JsonVariant_Subscript_Tests, Array) {
|
||||
EXPECT_STREQ("element at index 1", variant[1].asString());
|
||||
EXPECT_FALSE(variant[-1].success());
|
||||
EXPECT_FALSE(variant[3].success());
|
||||
EXPECT_FALSE(variant["0"].success());
|
||||
}
|
||||
|
||||
TEST_F(JsonVariant_Subscript_Tests, Object) {
|
||||
JsonObject &object = buffer.createObject();
|
||||
object["a"] = "element at key \"a\"";
|
||||
object["b"] = "element at key \"b\"";
|
||||
|
||||
variant = object;
|
||||
|
||||
EXPECT_EQ(2, variant.size());
|
||||
EXPECT_STREQ("element at key \"a\"", variant["a"].asString());
|
||||
EXPECT_STREQ("element at key \"b\"", variant["b"].asString());
|
||||
EXPECT_FALSE(variant["c"].success());
|
||||
EXPECT_FALSE(variant[0].success());
|
||||
}
|
||||
|
Reference in New Issue
Block a user