如何检查它是字符串还是json

我有一个json字符串,由JSON.Stringify函数从对象转换而来。

我想知道它是json字符串还是只是一个常规字符串。

是否有像“isJson()”这样的函数来检查它是否是json?

当我使用本地存储时,我想使用该function,如下面的代码。

先感谢您!!

var Storage = function(){} Storage.prototype = { setStorage: function(key, data){ if(typeof data == 'object'){ data = JSON.stringify(data); localStorage.setItem(key, data); } else { localStorage.setItem(key, data); } }, getStorage: function(key){ var data = localStorage.getItem(key); if(isJson(data){ // is there any function to check if the argument is json or string? data = JSON.parse(data); return data; } else { return data; } } } var storage = new Storage(); storage.setStorage('test', {x:'x', y:'y'}); console.log(storage.getStorage('test')); 

“简单”的方法是try解析并在失败时返回未解析的字符串:

 var data = localStorage[key]; try {return JSON.parse(data);} catch(e) {return data;} 

你可以使用JSON.parse轻松制作一个。 当它收到无效的JSON字符串时,它会抛出exception。

 function isJSON(data) { var ret = true; try { JSON.parse(data); }catch(e) { ret = false; } return ret; } 

在另一篇文章中找到了这个如何知道javascript中的对象是否是JSON?

 function isJSON(data) { var isJson = false try { // this works with JSON string and JSON object, not sure about others var json = $.parseJSON(data); isJson = typeof json === 'object' ; } catch (ex) { console.error('data is not JSON'); } return isJson; }