数组的 JSON 测试



我正在使用返回一些数据的节点模块。数据将以以下两种方式之一返回:

单条记录

single = {"records[]":{"name":"record1", "notes":"abc"}}

多条记录

multiple = {"records[]":[{"name":"record1", "notes":"abc"},{"name":"record2", "notes":"xyz"}]}

如果我调用以下内容,我可以从单个记录中获取值

single['records[]'].name // returns "record1"

对于多个记录,我将不得不像这样打电话

multiple['records[]'][0].name // returns "record1"

当我返回单个记录但将其视为多个记录时出现问题

single['records[]'][0].name // returns undefined

现在我像这样测试:

var data = nodemodule.getRecords();
if(data['records[]'){ //test if records are returned
if(data['records[]'].length){ //test if 'records[]' has length
// ... records has a length therefore multiple exist
// ... for loop to loop through records[] and send data to function call
} else {
// .length was undefined therefore single records
// single function call where I pass in records[] data
}
}

鉴于我受到节点模块返回的内容的限制,这是测试单个记录与多个记录的最佳方法,还是我错过了一些更简单的方法?

您可以使用Array.isArray(obj)

obj要检查的对象。

如果对象是数组,则为 true;否则为false

if(data['records[]']){
if(Array.isArray(data['records[]'])){
// console.log('multiple');
}else{
// console.log('single');
}
}

https://stackoverflow.com/a/26633883/4777670 阅读此内容,它有一些更快的方法。

最新更新