【问题标题】:Accessing and searching data from a JSON file从 JSON 文件访问和搜索数据
【发布时间】:2017-12-24 12:47:58
【问题描述】:

如果我有下面的 JSON 对象

 {
    "animals":{     
        "a_1":{    
        "species":"Tiger",     
        "name":"Timmy",     
        "dob":"2016-03-12",       
        },    
        "a_2":{    
        "species":"Lion",     
        "name":"Leo",     
        "dob":"2012-12-04",           
        }   
    }    
} 

如何搜索返回

"a_1": {    
    "species":"Tiger",     
    "name":"Timmy",     
    "dob":"2016-03-12",       
},    

用于搜索a_1?

有没有类似的方式调用a_1/a_2等?

【问题讨论】:

    标签: javascript json search


    【解决方案1】:

    您可以直接按键搜索。

    例如:

    var data = {
        "animals":{     
            "a_1":{    
                "species":"Tiger",     
                "name":"Timmy",     
                "dob":"2016-03-12",       
            },    
            "a_2":{    
                "species":"Lion",     
                "name":"Leo",     
                "dob":"2012-12-04",           
            }   
        }    
    };
    
    var searchKey = "a_1";
    console.log(data["animals"][searchKey]);
    

    【讨论】:

    • 谢谢,这是有道理的。唯一的麻烦是我不断收到此错误“无法读取未定义的属性'searchKey'”,但是 searchKey 已定义
    • 我的信息在一个单独的 JSON 文件中,所以我有: fs.readFile('animals.json', 'utf8', function (err, data){ var dataS = JSON.parse(data) ; 我认为它会做同样的工作?
    • 已排序,我之前的脚本有问题。感谢您的帮助!
    【解决方案2】:

    我认为您应该将数据结构更改为数组。这会更容易:

    const data = {
      "animals": {
        "a_1": {
          "species": "Tiger",
          "name": "Timmy",
          "dob": "2016-03-12",
        },
        "a_2": {
          "species": "Lion",
          "name": "Leo",
          "dob": "2012-12-04",
        }
      }
    }
    const animalList = Object.keys(data.animals).map(key => ({
      key,
      item: data.animals[key]
    }))
    const searchName = input => animalList.filter(animal => animal.item.name === input);
    console.log(searchName('Leo'))

    【讨论】:

    • ...你的数据结构中的数组到底在哪里?
    • animalList 是将您的序列化 JSON 对象转换为数组!
    • you should change your data structure to an array,我了解到您没有将数据结构更改为数组。它仍然是一个对象
    • animalList 是一个数组,并且针对该数组处理搜索
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-14
    • 1970-01-01
    • 2022-11-25
    • 2018-01-30
    • 1970-01-01
    相关资源
    最近更新 更多