Javascript 如何根据键上的过滤器获取json路径?
我有一个json,我必须从json对象中选择作者姓名,该对象不包含可用的键Javascript 如何根据键上的过滤器获取json路径?,javascript,json,jsonpath,Javascript,Json,Jsonpath,我有一个json,我必须从json对象中选择作者姓名,该对象不包含可用的键 { "store": { "book": [ { "category": "reference", "author": "Nigel Rees", "title": "Sayings of the Century&qu
{
"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
"available":false
},
{
"category": "fiction",
"author": "Herman Melville",
"title": "Moby Dick",
"isbn": "0-553-21311-3",
"price": 8.99
},
{
"category": "fiction",
"author": "J. R. R. Tolkien",
"title": "The Lord of the Rings",
"isbn": "0-395-19395-8",
"price": 22.99
}
],
"bicycle": {
"color": "red",
"price": 19.95
}
},
"expensive": 10
}
因此,如果可能使用jsonpath或不使用jsonpath是“是”,我如何才能做到这一点呢?您可以筛选没有属性“可用”的书籍,然后映射经过筛选的书籍以获得作者姓名
const book=[
{
类别:'参考',
作者:“奈杰尔·里斯”,
标题:"世纪格言",,
价格:8.95
},
{
类别:"小说",,
作者:“伊芙琳·沃”,
标题:“荣誉之剑”,
价格:12.99,
可用:false
},
{
类别:"小说",,
作者:《赫尔曼·梅尔维尔》,
标题:《白鲸》,
isbn:'0-553-21311-3',
售价:8.99
},
{
类别:"小说",,
作者:“J.R.R.托尔金”,
标题:《魔戒》,
isbn:'0-395-19395-8',
售价:22.99
}
]
const authorNames=书籍
.filter(book=>!book.hasOwnProperty('available'))
.map(book=>book.author)
console.log(authorNames)
我想您需要可以为您完成任务的JSONpath,所以您可以尝试一下
$..book[?(!@.available)].author
试穿
它的工作方式与您希望的相同您可以使用for..in构造来迭代对象的任意属性:
for (var key in obj.d) {
console.log("Key: " + key);
console.log("Value: " + obj.d[key]);}
或者像这样检查您的可用密钥,例如
var Data_Array = {
"Private": {
"Price": {
"Adult": "18",
"Child": [{
"FromAge": "0",
"ToAge": "12",
"Price": "10"
}]
}
}};var child = 'Child' in Data_Array.Private.Price && Data_Array.Private.Price.Child[0] || 'there is no child';console.log(child);
这将告诉您是否存在可用密钥,然后像下面这样获取作者名称,例如
通过使用单词“b”,您仍然使用关键字名称
var info = {"fname": "A","lname": "B","Age": "34","favcolor": {"color1":"Gray", "color2":"Black", "color3":"Blue"}};
请看下面的代码片段
for(key in info) {var infoJSON = info[key];console.log(infoJSON);}
你想得到没有钥匙的书吗?@VenkatLokeswar我想得到作者的名字