javascript - JS:如果沿嵌套字典路径为空,则返回默认值
问题描述
我有一个高度嵌套的 JSON 结构,我可以在其中提取出这样的个人信息
let result = data["a"]["b"][0]["c"]["d"][0]["e"][0]
什么是提取数据的优雅方法?此外,是否可以将结果分配给null
或undefined
当任何 a、b、c、d、e 不存在或数组不包含元素 0 时?
解决方案
我想说最简单的选择是可选的链接运算符或其他东西,但我相信正确的方法是JSONPath。
可能还有其他库(例如jsonpath one 或jsonpath-plus)允许您执行相同的操作。
JSONPath 是 JSON 的 XPath。
JSON 示例:
{ "store": {
"book": [
{ "category": "reference",
"author": "Nigel Rees",
"title": "Sayings of the Century",
"price": 8.95
},
{ "category": "fiction",
"author": "Evelyn Waugh",
"title": "Sword of Honour",
"price": 12.99
}
],
"bicycle": {
"color": "red",
"price": 19.95
}
}
}
这就是您如何使用 JSONPath 表达式获取商店中所有书籍的作者的方法:
$.store.book[*].author
您可以在 JavaScript 中使用它:
const o = { /*...*/ }, // the 'store' JSON object from above
res1 = jsonPath(o, "$..author").toJSONString(); // all authors JSONPath expression
res2 = jsonPath(o, "$..author", {resultType:"PATH"}).toJSONString();
推荐阅读
- c# - 二进制文件读写
- qt - QBtyeArray QDataStream qCompress 到文件添加额外的前导字节
- r - 在 R Leaflet 中实现 groupedLayerControl 插件的问题
- javascript - 使用 Axios(带有 Digest Auth)的 Js http 调用在本地工作,但不在 AWS Lambda 中
- buffer - 更改开放层中缓冲区的颜色
- javascript - 使用 ajax 获取 BirdEye API 时出现 HTTP 错误 400
- numpy - 在 Deepnote 中运行 ImageDataBunch 的问题
- c# - 来自程序集“IBM.EntityFrameworkCore”的“IBM.EntityFrameworkCore.Query.Internal.Db2SqlTranslatingExpressionVisitorFactory”类型中的方法“创建”
- vb.net - 如何从 vb.net 打开 adobe reader
- c++ - How to convert analog input readings from Arduino to .WAV from sketch