无法从 JSON api 检索特定元素

Unable to retrieve specific elements from JSON api

实现一个 fetchDataForUser 函数,它从远程 JSON api 获取数据,然后 return 作为它的一部分。

由于这是一个网络调用,它需要是一个异步函数,并且 return 通过回调获取数据。

JSON 数据: https://gist.githubusercontent.com/kvirani/f7d65576cc1331da1c98d5cad4f82a69/raw/4baad7566f0b6cd6f651c5d3558a015e226428b5/data.json

应使用两个参数调用回调:

  1. 错误:如果请求返回错误,将其传递给此回调。否则将其设置为 null
  2. data:如果没有错误,这应该是代表给定用户名输赢的对象。如果有错误,这个应该设置为null。

*/

const fetchDataForUser = function (url, username, callback) {
  request(url, (err, res, body) => {
    if (err) {
      callback(err, null);
    }
    const data = JSON.parse(body);
    for (let key in data) {
    console.log(data[key]);
    if (data[key] === username){
     return key
}
    callback(null, data);
  });
};

它 return 是来自 json 文件的正确数据列表: 用户:{mr_robot:{赢:5,输:2},teddy_b:{赢:0,输:3}}

但我需要在输入用户名时检索特定元素:例如“Mr Robot”

  +  "losses": 2
  +  "wins": 5    

测试驱动代码

fetchDataForUser(url, 'mr_robot')

您可以在没有 for 循环的情况下执行此操作。

在我下面的示例中,真正重要的行是用户数据:

let userdata = (data["users"][username]) ? data["users"][username]: [];

基本上它会查看用户名是否存在于数据中,如果存在,则 returns 该用户的数据,如果不存在,则 returns 一个空数组。

let data = {
  "users": {
    "mr_robot": {
      "wins": 5,
      "losses": 2
    },
    "teddy_b": {
      "wins": 0,
      "losses": 3
    }
  }
};

let username = "mr_robot";

let userdata = (data["users"][username]) ? data["users"][username]: [];


console.log(userdata)