【问题标题】:How to check the value within json is string or array in node js如何检查json中的值是节点js中的字符串或数组
【发布时间】:2016-02-12 18:58:38
【问题描述】:

我在节点 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;

【问题讨论】:

  • 仅供参考,这是一个对象,而不是数组

标签: javascript json node.js object


【解决方案1】:

lengthstringarray 的属性

在您的第二种情况下,它正在计算 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)

【讨论】:

    【解决方案2】:

    你可以使用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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-01
      • 2022-01-04
      相关资源
      最近更新 更多