数组的JSON测试

时间:2018-06-29 15:38:28

标签: json node.js

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

单条记录

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
    }
}

鉴于我受节点模块返回的约束,或者缺少某种更简单的方法,这是测试单记录还是多记录的最佳方法吗?

1 个答案:

答案 0 :(得分:1)

您可以使用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 阅读此书可以找到一些更快的方法。