如何使用也位于对象中的“name”关键字在json文件中记录对象的“id”?

时间:2018-05-29 06:45:04

标签: json node.js parsing keyword

我通过在终端中键入“node app.js”来启动我的程序。我的总体目标是再次在终端中键入一个特定单词,例如“弹球”。然后程序将继续运行并在json url中搜索单词“pinball”。在json url的一个对象里面是名字:“Supreme®/Stern®弹球机”。它将使用单词“pinball”找到包含该名称的对象,并在控制台日志中找到也在该对象内的id。这是我正在谈论的json的一部分:

{
    "unique_image_url_prefixes": [],
    "products_and_categories": {
        "Accessories": [{
            "name": "Supreme®/Stern® Pinball Machine",
            "id": 171495

        }]
    }
}

json的完整网址可在以下位置找到:http://www.supremenewyork.com/mobile_stock.json 任何帮助都很棒,我能够澄清任何没有意义的事情。我计划为json文件中的所有id执行此操作,但是如何执行一个示例将很好地编写其他代码。以下是我一直在处理的代码部分:

const request = require('request')
request('http://www.supremenewyork.com/mobile_stock.json', function(error, response, body) {
    const ids = Object.values(JSON.parse(body).products_and_categories).reduce((o, items) => o.concat(items.map(({
         Id
    }) => id)), [])
    console.log(ids)
})

简而言之,我想运行我的程序,在终端中键入“弹球”一词,然后它将控制日志“171495”

1 个答案:

答案 0 :(得分:0)

就我在数据中看到的那样,该对象包含密钥,并且在密钥内,您有一个包含某个类别的所有产品的数组。这可能有效:

const request = require('request');

request('http://www.supremenewyork.com/mobile_stock.json', function(error, response, body) {

    const searchword = "Pinball";

    const data = JSON.parse(body).products_and_categories;

    const ids = [];

    for (var key in data) {
        if (data.hasOwnProperty(key)) {
            data[key].map(item => {
                if (item.name.indexOf(searchword) >= 0) {
                    ids.push(item.id);
                }
            });
        }
    }

    console.log(ids);
})