测试JSON对象包含我期望的属性
Test JSON object contains the attributes I expect
我正在编写一个简单的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"值返回假阳性。当然,你可以将其提取到一个函数中:)
这是一把小提琴
相关文章:
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- 全局变量和全局对象的属性之间有什么区别吗
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 如何在Bootstrap Modal中为动态点击生成的变量设置jade属性
- 序列化数据属性中对象的最可靠方法
- 分析高度属性时出现意外值{{specs.height}}.index.html
- TypeError:无法读取属性'推'未定义的JavaScript
- 同样,同样的错误'ahorcado.js:26未捕获类型错误:无法读取属性'beginPath'
- 柴 js 期望属性值为空数组
- Chai期望:一个数组包含一个至少具有这些属性和值的对象
- 测试JSON对象包含我期望的属性
- 对象不支持此属性或方法-期望的行为,但我如何隐藏消息
- 如何将函数设置为期望匿名函数的属性值
- 模式定义中期望的替换属性
- 错误:d3.v4.min.js:3错误:<属性宽度:期望长度,"
- d3错误:
属性d:期望号码日期 - D3多折线图-错误:
属性d:期望数,“MNaN,NaNLNaN,NaNC…” - 对象属性由另一个函数设置(不期望)
- “错误:& lt; path>属性d:期望数量
- 期望deep属性具有多个值中的任何一个