【问题标题】:How to read json file and filter the result如何读取json文件并过滤结果
【发布时间】:2020-08-13 20:59:17
【问题描述】:

自从 7 天以来,我一直在使用 javascript 中的一个简单函数......但我找不到解决方案!

问题是这样的:我必须读取一个 json 文件,并过滤结果...

这是我用于读取文件的服务器端脚本:

function testing(email) 
{
    let rawdata = fs.readFileSync('test.json');
    var mydata = JSON.parse(rawdata);
    console.log("parse:"+ mydata);

    const value = email;
    const result = mydata.filter(email);
    console.log("result: " + result);

    if(result == 'undefined')
    {
        return(false);
    }
    else
    {
        return(true);
    }
};

这是我的 json 文件:

[
{
    "1":"black@gmail.com"
},
{
    "2":"bad@gmail.com"
}
{
    "3":"strangemail@gmail.com"
}
]

【问题讨论】:

  • 过滤条件是什么?
  • email 的值是多少?你应该提供一个minimal reproducible example
  • “这是我的 json 文件”——这确实是非常奇怪的结构化数据。为什么它不是一个简单的字符串数组?
  • @ontananza 过滤条件是“值”......我猜
  • @Quentin ye 当然,我会在几秒钟内提供它!顺便说一句,当您尝试调用此函数时,电子邮件的值是作为参数传递的字符串!我现在正在学习 javascript ...我不知道它是什么“纯字符串数组”

标签: javascript node.js json api fs


【解决方案1】:

json 数组的每个元素都应该包含相同的一致键,如果需要索引,索引应该是另一个键,即: const myData = [{"idx": 1, "email": "black@gmail.com"}, {"idx": 2, "email": "bad@gmail.com"}, {"idx": 3, "email": "strangemail@gmail.com"}]

然后你可以使用表达式过滤数据

const result = myData.filter((x) => x.email === email);

结果应该是这样的:

[{"idx": 1, "email": "black@gmail.com"}]

【讨论】:

  • 我现在要测试它!谢谢你,真的很感激
【解决方案2】:

JSON 数据结构相当奇怪,每个对象都有不同的键,但如果这是您所坚持的,那么可以按照以下方式处理它。

// a string to stand in for JSON fie:
const jsonStr = `[
  {"1":"black@gmail.com"},
  {"2":"bad@gmail.com"},
  {"3":"strangemail@gmail.com"}
]`;

function testing(email) {
  var mydata = JSON.parse(jsonStr);

  const result = mydata.filter(obj => {
    // search every property in object for email, since the
    // source JSON data doesn't have consistent keys
    for (let [key, value] of Object.entries(obj)) {
      if (value === email) {
        return true;
      }
    }
  });
  console.log(result); // [ { '2': 'bad@gmail.com' } ]
  return result.length > 0;
}

let example = testing("bad@gmail.com");
console.log(example); // true

【讨论】:

  • 它有效......这就是我要找的......真的谢谢你......你真的帮助了我!
猜你喜欢
  • 2021-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-26
相关资源
最近更新 更多