我在节点js中有一个像这样的数组Json。
JSON 1
var json1= {
bookmarkname: 'My Health Circles',
bookmarkurl: 'http://localhost:3000/',
bookmark_system_category: [ '22', '1' ]
}
JSON 2
var json2 = {
bookmarkname: 'My Health Circles',
bookmarkurl: 'http://localhost:3000/',
bookmark_system_category:'22'
}
我试过了:
var length1=json1.bookmark_system_category.length;
var length1=json2.bookmark_system_category.length;
预期产出:
l1=2;
l2=1;
答案 0 :(得分:2)
length
属于string
以及array
在第二种情况下,它会计算string
的长度 2
可能你需要一个条件:
var json1 = {
bookmarkname: 'My Health Circles',
bookmarkurl: 'http://localhost:3000/',
bookmark_system_category: ['22', '1']
};
var json2 = {
bookmarkname: 'My Health Circles',
bookmarkurl: 'http://localhost:3000/',
bookmark_system_category: '22'
};
var getLength = function(input) {
if (typeof input === 'string') {
return 'Is String';
} else {
return input.length;
}
}
var length1 = getLength(json1.bookmark_system_category);
var length2 = getLength(json2.bookmark_system_category);
alert(length1);
alert(length2)
答案 1 :(得分:0)
您可以使用Array.isArray
:
Array.isArray(json1.bookmark_system_category); // true
但是对于不是数组的所有内容,这将返回false
- 字符串,对象,null
。
这是一个漂亮的函数,它将返回一个你可以测试的对象类型(小写):
function toType(x) {
return ({}).toString.call(x).match(/\s([a-zA-Z]+)/)[1].toLowerCase();
}
toType({}) // object
toType([]) // array
toType(null) // null
toType(0) // number
toType('bob') // string
所以:
toType(json1.bookmark_system_category) // array
toType(json2.bookmark_system_category) // string