本文由德广发表于代码之路-技术博客前端开发中,当接口返回复杂嵌套JSON时,获取固定层级的数据,需要使用链值//接口数据varobj={name:"历史",value:3,children:[{name:"明清",value:"3-1",count:10},{name:"现代",value:"3-2",count:20}]}//获取第二个子类型的值constval=obj.children[1].value//3-2当层次结构再次变长时,使用链valuecode冗长且容易出错。比如这里的数据层次有问题,比如children的长度只有1,就会遇到我们常见的错误:UncaughtTypeError:Cannotreadproperty'value'ofundefined。为了避免错误带来的问题,这里可以使用JSONPath来取值。JSONPath在认识JSONPath之前,先了解xPath。xPath是XML的路径语言。它使用路径标识通过层级结构定位文档元素,例如在HTML中定位元素:类似的,JSONPath通过路径检索JSON,支持运算符、函数、过滤器等,方便快速定位。上面的取值可以用JSONPath来描述为JSONPath('$.children[1].value',obj)operatorsymbol描述了$query的根节点对象,用来表示一个ison数据,可以是数组或一个object@filter过滤谓词处理的当前节点对象,类似于iava中的this字段*wildcard,代表一个名字或数字*递归搜索。
