📜  Underscore.js _.isJSON() 方法(1)

📅  最后修改于: 2023-12-03 15:35:27.965000             🧑  作者: Mango

Underscore.js _.isJSON() 方法介绍

Underscore.js 是一个 JavaScript 工具库,提供了很多实用的函数和方法。其中的 _.isJSON() 方法可以用来判断一个字符串是否为 JSON 格式。

语法
_.isJSON(object)

参数:

  • object:要判断的对象。

返回值:

  • 如果对象是 JSON 格式的字符串,则返回 true
  • 如果对象不是 JSON 格式的字符串,则返回 false
示例

以下是使用 _.isJSON() 方法的示例:

_.isJSON('{"name":"Tom","age":20}');  // true
_.isJSON('{name:"Tom",age:20}');     // false
_.isJSON({name: "Tom", age: 20});    // false
实现原理

_.isJSON() 方法的实现原理比较简单,它先使用正则表达式检测字符串是否以 "{" 开头和以 "}" 结尾,如果是,则说明可能是 JSON 格式的字符串。然后再尝试将字符串转换为 JSON 对象,如果转换成功,则说明该字符串是 JSON 格式的。

以下是 _.isJSON() 方法的源码:

_.isJSON = function(obj) {
  if (!_.isString(obj)) return false;
  obj = obj.trim();
  if ((obj.startsWith('{') && obj.endsWith('}')) ||
      (obj.startsWith('[') && obj.endsWith(']')) ) {
    try {
      JSON.parse(obj);
      return true;
    } catch(e) {
      return false;
    }
  }
  return false;
};

以上源码中,_.isString() 方法是 Underscore.js 定义的方法,用于判断一个对象是否为字符串类型。startsWith() 和 endsWith() 方法是 ECMA Script 6 定义的方法,用于判断字符串是否以某个字符开头或结尾。JSON.parse() 方法是 JavaScript 原生的方法,用于将字符串解析成 JSON 对象。