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

时间:2019-02-06 04:30:46

标签: mysql json

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

以下是结构:

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

}

我正在尝试提取“键的1” “值” 字段。

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

出现错误:无效的JSON路径表达式。此错误围绕字符位置no:10

我的查询:

select 
    JSON_EXTRACT(analytics_json,'$.article.Key\'s 1.value')As value
from
    tbl_json_data;

即使在放置反斜杠之后,我仍然收到错误消息。

1 个答案:

答案 0 :(得分:1)

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

SELECT 
    JSON_EXTRACT(analytics_json,'$.article."Key''s 1".value') AS value
FROM tbl_json_data;

Demo

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