Javascript 如何根据键上的过滤器获取json路径?

Javascript 如何根据键上的过滤器获取json路径?,javascript,json,jsonpath,Javascript,Json,Jsonpath,我有一个json,我必须从json对象中选择作者姓名,该对象不包含可用的键 { "store": { "book": [ { "category": "reference", "author": "Nigel Rees", "title": "Sayings of the Century&qu

我有一个json,我必须从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
        "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我想得到作者的名字