Description

JsonObject::remove() removes a key-value pair from the object pointed by the JsonObject.

If the JsonObject is null/unbound, this function does nothing.

Causes memory leaks ⚠️

Because JsonDocument contains a monotonic allocator, this function cannot release the memory associated with the removed value.
Consequently, you cannot call this function in a loop; otherwise, the JsonDocument will overflow.

Signatures

void remove(const char* key) const; void remove(const __FlashStringHelper* key) const; void remove(const String& key) const; void remove(const std::string& key) const; void remove(std::string_view key) const; void remove(JsonObject::iterator iterator) const; 

Arguments

key: the key to remove from the object.

iterator: an iterator returned by JsonObject::begin()

Examples

In the following examples, we will use this JSON document as input:

{ "survivors": { "Coach": { "age": 40, "sex": "male", "occupation": "teacher" }, "Ellis": { "age": 23, "sex": "male", "occupation": "mechanic" }, "Nick": { "age": 35, "sex": "male", "occupation": "retailer" }, "Rochelle": { "age": 29, "sex": "female", "occupation": "associate producer" } } } 

Example 1: Remove a member with the specified key

Here is how you can remove “Ellis” from the crew:

deserializeJson(doc, input); JsonObject crew = doc["survivors"]; crew.remove("Ellis"); serializeJsonPretty(object, Serial); 

Execute this program and it will print the following to the serial:

{ "survivors": { "Coach": { "age": 40, "sex": "male", "occupation": "teacher" }, "Nick": { "age": 35, "sex": "male", "occupation": "retailer" }, "Rochelle": { "age": 29, "sex": "female", "occupation": "associate producer" } } } 

Again, this doesn’t release the associate memory, which can create a memory leak.

Example 2: Remove all members matching a criteria

Here is how you can remove all female characters from the crew:

deserializeJson(doc, input); JsonObject crew = doc["survivors"]; for (JsonObject::iterator it=crew.begin(); it!=crew.end(); ++it) { if (it->value()["sex"] == "female") { crew.remove(it); } } serializeJsonPretty(object, Serial); 

Run this program and it will write theses lines to the serial:

{ "survivors": { "Coach": { "age": 40, "sex": "male", "occupation": "teacher" }, "Ellis": { "age": 23, "sex": "male", "occupation": "mechanic" }, "Nick": { "age": 35, "sex": "male", "occupation": "retailer" } } } 

We said it several times, but it’s worth repeating: remove() doesn’t release the associate memory, which can create a memory leak.

See also

Global warming stripes by Professor Ed Hawkins (University of Reading)