无法使用 JSON_EXTRACT 提取 MySQL 中具有特殊字符的键

Sri*_*mar 4 mysql json

我的表(MySQL 数据库)中有一个 json 字段。

结构如下:

{
    "article":{
            "Key's 1":{
                "value":"24"
            }
            "Key's of the something's 2":{
                "value":"55"
            }
    }

}
Run Code Online (Sandbox Code Playgroud)

我正在尝试提取“Key's 1”“值”字段。

由于单引号空格等特殊字符,我无法使用 JSON_EXTRACT 函数。

它给出错误:无效的 JSON 路径表达式。此错误位于字符位置 no : 10 附近

我的查询:

select 
    JSON_EXTRACT(analytics_json,'$.article.Key\'s 1.value')As value
from
    tbl_json_data;
Run Code Online (Sandbox Code Playgroud)

即使在放置反斜杠之后,我也会收到错误。

Tim*_*sen 6

您可以用双引号转义每个 JSON 路径组件以处理特殊字符和空格。以下作品:

SELECT 
    JSON_EXTRACT(analytics_json,'$.article."Key''s 1".value') AS value
FROM tbl_json_data;
Run Code Online (Sandbox Code Playgroud)

演示

请注意,您的键名实际上有两个问题。首先,它包含一个单引号。我们可以通过将两个单引号加倍来解决这个问题。键名还包含空格。通过用双引号转义,我们可以解决这个问题,但最好避免使用带有空格的 JSON 键。