MySQL JSON_OBJECT() Function
In MySQL, the JSON_OBJECT() function returns a JSON object containing all the key-value pairs specified by parameters.
JSON_OBJECT() Syntax
Here is the syntax of the MySQL JSON_OBJECT() function:
JSON_OBJECT(key, value[, key2, value2, ...])
Parameters
key- Required. The Key in the object.
value- Required. The value of
keyin the object .
Return value
The JSON_OBJECT() function evaluates all key-value pairs in the parameters and returns a JSON object containing all the key-value pairs.
Since all keys in the JSON object are strings, JSON_OBJECT() converts non-string keys to strings. In order to ensure the stability of the program, we should use string type key.
Maybe there are the following errors during execution:
- If the
keyisNULL, MySQL will return the error:ERROR 3158 (22032): JSON documents may not contain NULL member names.. - If there are an odd number of parameters, MySQL will return an error:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'json_object'.
JSON_OBJECT() Examples
Here are some examples of JSON_OBJECT().
Basic usage
SELECT JSON_OBJECT('name', 'Jim', 'age', 20);
+---------------------------------------+
| JSON_OBJECT('name', 'Jim', 'age', 20) |
+---------------------------------------+
| {"age": 20, "name": "Jim"} |
+---------------------------------------+Here, the returned JSON object includes two members: name and age, and the value of name is 'Jim', the value of age is 20.
Duplicate keys
If there are duplicate key-value pairs in the parameters, the last key-value pairs are retained in the final returned object.
SELECT JSON_OBJECT('name', 'Jim', 'age', 20, 'name', 'Tim');
+------------------------------------------------------+
| JSON_OBJECT('name', 'Jim', 'age', 20, 'name', 'Tim') |
+------------------------------------------------------+
| {"age": 20, "name": "Tim"} |
+------------------------------------------------------+Complex objects
A complex JSON object can store more information.
SELECT JSON_OBJECT(
'name',
'Tim',
'age',
20,
'friend',
JSON_OBJECT('name', 'Jim', 'age', 20),
'hobby',
JSON_ARRAY('games', 'sports')
) AS object;
+------------------------------------------------------------------------------------------------+
| object |
+------------------------------------------------------------------------------------------------+
| {"age": 20, "name": "Tim", "hobby": ["games", "sports"], "friend": {"age": 20, "name": "Jim"}} |
+------------------------------------------------------------------------------------------------+Here, we created the following JSON object:
{
"age": 20,
"name": "Tim",
"hobby": ["games", "sports"],
"friend": { "age": 20, "name": "Jim" }
}
In the object:
- The value of
hobbyis an array, created by theJSON_ARRAY()function. - The value of
friendis an object, created by theJSON_OBJECT()function.