如何区分String和JSON

San*_*yak 0 javascript json

我已经和JSON合作了很长一段时间了.

我知道JSON是stringifiedJavaScript Object.

我也知道是什么使JSON,如下面的线程中所讨论的.

JSON和Object Literal Notation有什么区别?

问题: 但是,我想知道是否有typeof某种方式可以告诉我给定的字符串是JSON还是任何其他字符串.

到目前为止我所观察到的:

 1.   var data = {"name":"JS"};
      alert(typeof(data));  // object. Agree!


 2.  // I know this is JSON, by looking at the syntax
     var data = '{"name":"JS"}';
     alert(typeof(data));  // string. 

 3.  // I know this is just any other string (NOT JSON), by looking at the syntax.
     var data = "AnyOtherString";
     alert(typeof(data));  // string
Run Code Online (Sandbox Code Playgroud)

在JavaScript中,有什么方法可以区分上面的第2 第3点.可能,类似的东西typeof会告诉我它是否只是一个字符串或JSON(也是一个字符串).

Que*_*tin 5

要查看某些内容是否为JSON:尝试将其解析为JSON.

JSON.parsetry/catch如果不是,将抛出异常(你可以陷阱).

function isJSON(str) {
  try {
    JSON.parse(str);
    return true;
  } catch (err) {
    return false;
  }
}

alert(
  isJSON('{"name":"JS"}') + " / " + isJSON("AnyOtherString")
);
Run Code Online (Sandbox Code Playgroud)

  • 我不会把乱七八糟的正则表达式称为问题的理智方法;) (2认同)

归档时间:

查看次数:

229 次

最近记录:

10 年,7 月 前