我正在写一个简单的nodejs
表达路线,该路线是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还是表达方式)?
最佳答案
您的代码与所执行的操作并不完全正确。例如,对于可能的有效对象{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和其他“虚假”值,它不会返回假肯定。当然-您可以将其提取为一个函数:)
Here's a fiddle
关于javascript - 测试JSON对象包含我期望的属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17559015/