前言 針對 “js判斷字元串是否為JSON格式” 這個問題,在網上查了許多資料,都沒找到自己想要的答案。 但是看到這個帖子《js判斷字元串是否為JSON格式》後,突然靈光一閃,想到一種很簡單的解決方案。 如果你對這個方法有異議,歡迎留言探討。 解決方案 分析 就像之前的帖子所說,只是單純的用JSON ...
前言
針對 “js判斷字元串是否為JSON格式” 這個問題,在網上查了許多資料,都沒找到自己想要的答案。
但是看到這個帖子《js判斷字元串是否為JSON格式》後,突然靈光一閃,想到一種很簡單的解決方案。
如果你對這個方法有異議,歡迎留言探討。
解決方案
function isJSON(str) {
if (typeof str == 'string') {
try {
var obj=JSON.parse(str);
if(str.indexOf('{')>-1){
return true;
}else{
return false;
}
} catch(e) {
console.log(e);
return false;
}
}
return false;
}
分析
就像之前的帖子所說,只是單純的用JSON.parse(str)不能完全檢驗一個字元串是JSON
格式的字元串,有許多例外:
JSON.parse('123'); // 123
JSON.parse('{}'); // {}
JSON.parse('true'); // true
JSON.parse('"foo"'); // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse('null'); // null
我們知道,JS中的數據類型分為:字元串、數字、布爾、數組、對象、Null、Undefined。
那我們就針對這幾種類型的字元串進行測試。
function isJSON_test(str) {
if (typeof str == 'string') {
try {
var obj=JSON.parse(str);
console.log('轉換成功:'+obj);
return true;
} catch(e) {
console.log('error:'+str+'!!!'+e);
return false;
}
}
console.log('It is not a string!')
}
isJSON_test('123'); //number
isJSON_test('aaaa'); //string
isJSON_test('"aaa"');
isJSON_test('true'); //布爾
isJSON_test('["1","2"]'); //數組
isJSON_test('{name:"123"}'); //對象
isJSON_test('{}'); //空對象
isJSON_test('null'); //null
isJSON_test('Undefined'); //Undefined
isJSON_test('{"name":"123"}'); //json
isJSON_test('{"name":"123",}'); //不規範的json
測試結果如下圖:
從以上測試結果,以及JSON的定義 。可以得到一個規律:
如果JSON.parse能夠轉換成功;並且字元串中包含 { 時,那麼這個字元串就是JSON格式的字元串。
如果大家對這個方法有異議,歡迎在下方留言,感謝。