2015-11-23 50 views
1

我想創建一個解析JSON文本的函數。 創建一個不帶JSON解析器的解析器

function JSONParser(string) { 
 
    //CODE HERE 
 
    string = string.replace(/"/g, ""); 
 

 
    var obj = {}; 
 
    obj[0] = string; 
 
    string = obj[0].replace(/'/g, ""); 
 

 
    return string; 
 
}

我只是做與對象的時髦的事情,因爲.replace似乎並沒有直接對字符串工作第二次。

當我通過檢查器運行此代碼。我得到...

JSONParser(JSON.stringify(true)); 
 
"true"

我的目標返回布爾真,而不是一個字符串。

有誰知道我爲什麼仍然用雙引號得到回報?是否有更多的改變一個字符串對象比刪除引號?或者,我只是試圖不正確地刪除它們?

任何幫助將不勝感激。 TIA

-Lea

回答

2

因爲它仍然是一個字符串,所以控制檯帶有引號(如飾)顯示。

請記住,當你做var foo = "true"時,引號實際上並不是字符串的一部分,所以不需要刪除它們。您的控制檯只是將它們顯示爲指示它顯示的數據類型的一種方式。他們實際上並不存在。

如果你想要一個布爾值,你可以做這樣的事情:

function JSONParser(string) { 
 
    return string === "true" ? true : 
 
     string === "false" ? false : string; 
 
} 
 

 
console.log(JSONParser(JSON.stringify(true)));

如果字符串既不是"true"也不"false",它只是返回原始字符串。


如果你喜歡if語句,則:

function JSONParser(string) { 
 
    if (string === "true") { 
 
    return true; 
 
    } else if (string === "false") { 
 
    return false; 
 
    } else { 
 
    return string; 
 
    } 
 
} 
 

 
console.log(JSONParser(JSON.stringify(true)));

還是一個switch聲明將是有用的。