You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL中如何访问含分号的JSON属性?

如何访问JSON中含分号的属性?

嘿,这个问题我太熟悉了!JSON Path里的分号是个特殊角色——它通常被用来分隔多个表达式,所以你直接写$.foo;oo的话,解析器会在分号那里就误以为表达式结束了,剩下的oo就成了无效语法,自然报错。

解决办法很简单,只需要把包含特殊字符的属性名用引号包裹起来,明确告诉解析器这是一个完整的属性名就行。下面给你几种靠谱的写法:

常见正确写法

假设你的JSON结构是这样的:

{
  "foo;oo": "我是目标值"
}

1. 点语法+引号包裹

用单引号或者双引号把属性名包起来:

  • 单引号写法:$.'foo;oo'
  • 双引号写法:$."foo;oo"

    注意:如果是在代码字符串里使用双引号,可能需要根据语言规则转义,比如Java里要写成"$.(\"foo;oo\")",避免转义麻烦的话,用单引号会更省心。

2. 方括号语法(兼容性最强)

这种写法几乎适配所有JSON Path解析器,把属性名放在方括号里并用引号包裹:

$["foo;oo"]

或者用单引号:

$['foo;oo']

代码示例(以Jayway JsonPath为例)

import com.jayway.jsonpath.JsonPath;

public class JsonPathTest {
    public static void main(String[] args) {
        String json = "{\"foo;oo\": \"bar\"}";
        // 三种写法都能拿到正确值
        String value1 = JsonPath.read(json, "$['foo;oo']");
        String value2 = JsonPath.read(json, "$.\"foo;oo\"");
        String value3 = JsonPath.read(json, "$[\"foo;oo\"]");
        
        System.out.println(value1); // 输出 bar
    }
}

本质上就是通过引号把特殊字符“隔离”起来,不让解析器把分号当成语法分隔符处理,这样就能正确定位到目标属性啦。

内容的提问来源于stack exchange,提问作者tixastronauta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 09:13:50