json_set

SinceVersion dev

Description

Syntax

VARCHAR json_set(VARCHAR json_str, VARCHAR path, VARCHAR val[, VARCHAR path, VARCHAR val] ...)

json_set function inserts or updates data in a JSON and returns the result.Returns NULL if json_str or path is NULL. Otherwise, an error occurs if the json_str argument is not a valid JSON or any path argument is not a valid path expression or contains a * wildcard.

The path-value pairs are evaluated left to right.

A path-value pair for an existing path in the json overwrites the existing json value with the new value. A path-value pair for a nonexisting path in the json adds the value to the json if the path identifies one of these types of values:

  • A member not present in an existing object. The member is added to the object and associated with the new value.

  • A position past the end of an existing array. The array is extended with the new value. If the existing value is not an array, it is autowrapped as an array, then extended with the new value.

Otherwise, a path-value pair for a nonexisting path in the json is ignored and has no effect.

example

  1. MySQL> select json_set(null, null, null);
  2. +------------------------------+
  3. | json_set(NULL, NULL, 'NULL') |
  4. +------------------------------+
  5. | NULL |
  6. +------------------------------+
  7. MySQL> select json_set('{"k": 1}', "$.k", 2);
  8. +------------------------------------+
  9. | json_set('{\"k\": 1}', '$.k', '2') |
  10. +------------------------------------+
  11. | {"k":2} |
  12. +------------------------------------+
  13. MySQL> select json_set('{"k": 1}', "$.j", 2);
  14. +------------------------------------+
  15. | json_set('{\"k\": 1}', '$.j', '2') |
  16. +------------------------------------+
  17. | {"k":1,"j":2} |
  18. +------------------------------------+

keywords

JSON, json_set