如何检查Json Doc是否在Node JS中具有所有必需的密钥

时间:2019-04-26 16:01:02

标签: javascript node.js json

我找到了多个有关如何检查json文件(如果存在密钥)的示例,但是我正在尝试更有效地执行此操作。

我有一个导入过程,在该过程中,用户上传了一个csv文件,然后将其转换为json。

由于我的csv文件有多种格式,因此我想在导入之前检查是否存在某些字段/键集,因为它们中的大多数具有不同的键名。

因此,我首先开始计算json中的Key数量,从而缩小了我可能的定义。那么我想使用像

这样的键数组
["field1", "field2", "field3"] 

,然后检查它们是否都在我的json文件中。作为一种简单的方法,还是需要遍历数组并检查每个键?

1 个答案:

答案 0 :(得分:1)

您可以从JSON对象中拔出密钥,但是仍然需要遍历“必需”密钥列表,并检查它们是否存在于密钥列表中。像下面这样的东西应该可以解决问题:

const myObject = {}; // getObjectFromCSV();
const required = ["field1", "field2", "field3"];
const objKeys = Object.keys(myObject);
required.every(key => objKeys.includes(key));

要获取缺少的必填字段的列表,请执行以下操作。 此代码将替换上面的最后一行(用every替换为以下内容:

const missingRequired = required.reduce(
  (acc, key) => { 
    if (!objKeys.includes(key)) { 
      acc.push(key);
    } 
    return acc;
  }, []);
const isValid = missingRequired.length === 0;

在化简函数中,acc是最初设置为[]的累加器,如果为空,则没有丢失的键。请注意,与every函数相比,条件是相反的,因为我们想知道什么时候缺少键,而不是是否找到所有键。