Skip to main content

GET_JSON_STRING

Description

This function is used to extract a field's value from a JSON document and convert it to STRING type. It returns the field value at the specified path. If the value cannot be converted to a string, or if the field at the specified path does not exist, it returns NULL.

Syntax

GET_JSON_STRING( <json_str>, <json_path>)

Required Parameters

ParameterDescription
<json_str>The JSON string from which data needs to be extracted.
<json_path>JSON path that specifies the field's location. The path can use dot notation.

Return Value

It returns the STRING value of the field at the specified path. If the specified path does not point to a valid field or the field value cannot be converted to a STRING type, it returns NULL.

Usage Notes

Parses and retrieves the string content of the specified path in the JSON string. The <json_path> must start with the $ symbol, using . as the path delimiter. If the path contains a ., it should be enclosed in double quotes. Use [ ] to indicate array indices, starting from 0. The path should not contain ", [, and ]. If the <json_str> format is incorrect, or if the <json_path> format is invalid, or if no matching field is found, NULL is returned.

Additionally, it is recommended to use the jsonb type and jsonb_extract_XXX functions to achieve the same functionality.

Special case handling as follows:

  • If the field specified by <json_path> does not exist in the JSON, return NULL.
  • If the actual type of the field specified by <json_path> differs from the type expected by json_extract_t, if it can be losslessly converted to the expected type, it will return the specified type. Otherwise, it will return NULL.

Examples

  1. Get the value for key "k1"

SELECT get_json_string('{"k1":"v1", "k2":"v2"}', "$.k1");
+---------------------------------------------------+
| get_json_string('{"k1":"v1", "k2":"v2"}', '$.k1') |
+---------------------------------------------------+
| v1 |
+---------------------------------------------------+
  1. Get the second element of the array for key "my.key"
SELECT get_json_string('{"k1":"v1", "my.key":["e1", "e2", "e3"]}', '$."my.key"[1]');

+------------------------------------------------------------------------------+
| get_json_string('{"k1":"v1", "my.key":["e1", "e2", "e3"]}', '$."my.key"[1]') |
+------------------------------------------------------------------------------+
| e2 |
+------------------------------------------------------------------------------+

  1. Get the first element of the array in the secondary path k1.key -> k2
 SELECT get_json_string('{"k1.key":{"k2":["v1", "v2"]}}', '$."k1.key".k2[0]');


+-----------------------------------------------------------------------+
| get_json_string('{"k1.key":{"k2":["v1", "v2"]}}', '$."k1.key".k2[0]') |
+-----------------------------------------------------------------------+
| v1 |
+-----------------------------------------------------------------------+