Json / Nodejs:如何从JSON文件获取特定数据

时间:2020-02-23 02:04:38

标签: node.js json

我正在尝试使用nodejs开发一个不和谐的机器人。我的问题是如何从JSON文件中获取特定数据(例如,从this json中获取。我只想指定单个uuid(如“ 59d4c622c7cc459a98c2e947054e2b11”)并获取数据。

2 个答案:

答案 0 :(得分:1)

假设您已将JSON解析为名为data的实际Javascript对象,并给出了当前数据的组织方式,则必须搜索data.guild.members数组以查找具有以下内容的对象:所需的uuid属性值。

function findDataForUuid(uuid) {
     for (let obj of data.guild.members) {
        if (obj.uuid === uuid) {
            return obj;
        }
     }
     // no match found
     return null;
}


let item = findDataForUuid("59d4c622c7cc459a98c2e947054e2b11");
if (item) {
    console.log(item);    // will show all the properties of the member object
}

或者,在数组上使用.find()

function findDataForUuid(uuid) {
     return data.guild.members.find(item => {
         return item.uuid === uuid;
     });
}

答案 1 :(得分:0)

可以使用过滤器的简单解决方案。最好是减少使用。

const data = {
  guild: {
    _id: "5b2906070cf29ddccd0f203c",
    name: "Dulcet",
    coins: 122010,
    coinsEver: 232010,
    created: 1529415175560,
    members: [
      {
        uuid: "59d4c622c7cc459a98c2e947054e2b11",
        rank: "MEMBER",
        joined: 1529683128302,
        questParticipation: 39,
        expHistory: {
          "2020-02-16": 0,
          "2020-02-15": 0,
          "2020-02-14": 0,
          "2020-02-13": 0,
          "2020-02-12": 0,
          "2020-02-11": 0,
          "2020-02-10": 0
        }
      }
    ]
  }
};

const members = data.guild.members.filter(
  member => member.uuid == "59d4c622c7cc459a98c2e947054e2b11"
);

const firstMember = members[0]
console.log(firstMember)