JSONPath是否存在与Safe navigation operator等效的功能实现?
JSONPath中等价于安全导航操作符的语法说明
Ruby等众多编程语言中支持的安全导航操作符(示例写法name = article&.author&.name),作用是避免路径中间节点为空时抛出异常,JSONPath中存在功能完全等价的实现,不同版本的语法略有差异:
- 大部分主流的JSONPath实现(包括广泛使用的goessner版本、Java Jayway、JavaScript JSONPath-plus等)默认自带空安全特性,无需额外添加特殊符号:直接写普通路径
$.article.author.name即可,只要路径中任意一级节点不存在或为null,整个表达式会直接返回空结果,不会抛出路径不存在的错误,效果和安全导航操作符完全一致。 - 遵循最新RFC 9535标准的JSONPath实现,还支持显式的可选链标记,写法和
&.高度相似:$.article?author?name,带?标记的节点代表可选访问,中间节点断裂时直接返回空。
验证示例
针对如下JSON结构:
{ "article": { "title": "测试文章", "view_num": 320 } }
执行路径表达式$.article.author.name,不会抛出"author属性不存在"的异常,会直接返回空结果,和Ruby中运行article&.author&.name返回nil的效果完全相同。
内容的提问来源于stack exchange,提问作者dzieciou
相关产品推荐
相关产品推荐

