Spark的get_json_object函数中$符号的含义是什么?
关于get_json_object函数路径中$符号的说明
这个$并不是Spark自定义的语法,而是JSONPath表达式的标准根节点标识,get_json_object函数的第二个参数本身就要求传入符合JSONPath规范的查询字符串,规则如下:
$代表你传入的整个JSON对象/JSON数组的根节点,是所有JSON属性查询的固定起点- 后续跟的
.属性名是子级属性访问符,$.path.to.data的含义就是:从JSON根节点开始,依次访问下级属性path、path的下级属性to、to的下级属性data,最终返回该属性对应的取值
举个实际场景示例,如果你的jsonColumn字段存储的JSON内容如下:
{ "path": { "to": { "data": "示例取值" } } }
执行get_json_object(col("jsonColumn"), "$.path.to.data")得到的返回结果就是示例取值。
额外补充相关语法细节:
- 如果要访问JSON数组的指定下标元素,可使用
$.数组属性名[下标]的写法,比如$.userList[0]代表取根节点下userList数组的第一个元素 - 如果属性名包含特殊字符、空格,需要用方括号加单引号包裹属性名,比如
$.'user info'
内容的提问来源于stack exchange,提问作者Ivan Feliciano Avelino
相关产品推荐
相关产品推荐

