如何区分String和JSON

时间:2015-04-24 06:48:34

标签: javascript json

我已经与JSON合作了很长一段时间。

我知道JSON是ServerSocket serverSocket = new ServerSocket(); serverSocket.bind(new InetSocketAddress("127.0.0.1", 7000)); JavaScript对象。

我也知道是什么使JSON,如下面的线程所述。

What is the difference between JSON and Object Literal Notation?

问题但是,我想知道是否有stringified种方法可以告诉我给定字符串是JSON还是其他任何字符串。

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

typeof

在JavaScript中,有什么方法可以区分 Point 2 & 点3 以上。可能是类似于 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 的东西,它会告诉我它是一个字符串还是一个JSON(也是一个字符串)。?

3 个答案:

答案 0 :(得分:5)

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

JSON.parse会抛出异常(如果不是try/catch,则可以使用function isJSON(str) { try { JSON.parse(str); return true; } catch (err) { return false; } } alert( isJSON('{"name":"JS"}') + " / " + isJSON("AnyOtherString") );)。



<meta property="fb:app_id" content="388490671332868" />
<meta http-equiv='content-type' content='text/html; charset=utf-8' />
<meta property="og:title" content="Markets Rally" />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://marketsrally.com" />
<meta property="og:image" content="https://marketsrally.com/images/socialLogo.jpeg" />
<meta property="og:image:type" content="image/jpeg" />
<meta property="og:image:width" content="300" />
<meta property="og:image:height" content="313" />
<meta property="og:site_name" content="Markets Rally" />
<meta property="og:description" content="Join us and get a pole position on the Markets Rally" />
<meta name="description" content="The World Leaders in online Binary Options, for trading on indices, commodities, currencies and stocks." />
<meta name="keywords" content="https://marketsally.com binary options, digital options, trade options, options trading, options, binary trading, easy profit, quick profit, easy trading, simple trading, forex, forex trading, online trading, nasdaq, dow jones, dax, crude oil, gold" />
&#13;
&#13;
&#13;

答案 1 :(得分:3)

在大字符串下这可能不会很快,但这是唯一可靠的方法:

function isJson(a){
  try {
        JSON.parse(response);
        return true;
    } catch(e) {
        return false;
    }
  }

如果您要面对大字符串,将它们解析为JSON可能会很麻烦,那么您可以使用基本验证,例如搜索&#39; :&#39;,&#39; {{1} }&#39;,&#39; {&#39;,在进入真正的验证之前可以在开始时拒绝某些字符串。

Here是一些通过regexp解决它的帖子:

答案 2 :(得分:2)

不,JSON只是一个字符串。您唯一能做的就是尝试将字符串解码为JSON。如果成功,我想它是JSON。如果不是,那就不是。

但是,您首先需要猜测似乎令人担忧。如果你不知道你有什么数据,你怎么能有效地使用它?您的应用程序应该对其随时拥有的数据有一定的期望,并且需要满足这些期望。否则,您无法编写任何可靠的算法来处理该数据。您应该知道自己拥有JSON,或者不知道自己拥有JSON。