测试JSON对象包含我期望的属性

Test JSON object contains the attributes I expect

本文关键字:属性 期望 包含我 JSON 对象 测试      更新时间:2023-09-26

我正在编写一个简单的nodejs express路由,POST是一个JSON对象。

作为一个node/js新手,我很想知道是否有一种优雅的方法可以测试JSON对象是否包含我希望提交的所有属性,并且只包含这些属性?

例如,如果我有一个像这样的JSON对象:

data:{
   "a":"somevalue".
   "b":"somebvalue",
   "c":"somecvalue"
}

我在想我可以做一些类似的事情:

if( (data.a) && (data.b) && (data.c) ){
   //Proceed and process post
else {
  // respond with unacceptable 
}

我只是想知道是否有更好的方法,无论是在JavaScript中还是在express中?

您的代码并不完全正确。例如,对于可能有效的对象{a:undefined,b:3,c:5},您可能认为它没有所需的属性,但实际上它有。更正确的方法(假设原型也很好)是:

("a" in data) && ("b" in data) && ("c" in data)

如果你想要一个适合多种属性的解决方案:

您可以使用Array.prototype.every:

if(["a","b","c"].every(function(attr){ return attr in data;})){

它并不短,但我认为它更具语义,并且它不会为空字符串、null和其他"falsy"值返回假阳性。当然,你可以将其提取到一个函数中:)

这是一把小提琴