RFC 4627 (which defines JSON) says:
The names within an object SHOULD be unique.
In my view, this means that the treatment of duplicate names within a
JSON object is more or less up to the implementation. Until now, the OVS
JSON parser has dealt with duplicates fairly badly: they all get shoved
into the hash table and you get one or the other value semi-randomly
(typically the one added later). This commit makes the behavior
predictable: old values are deleted and replaced by newer values.
void
json_object_put(struct json *json, const char *name, struct json *value)
{
- shash_add(json->u.object, name, value);
+ json_destroy(shash_replace(json->u.object, name, value));
}
void