我有代碼JS:字符串轉換成目標
data = "{isShowLoginPopup:true,newFavOfferId:1486882}";
我想把它轉換成JS對象(不是JSON),並以這種方式使用它:
data.newFavOfferId = ...
我該怎麼辦這個?
我有代碼JS:字符串轉換成目標
data = "{isShowLoginPopup:true,newFavOfferId:1486882}";
我想把它轉換成JS對象(不是JSON),並以這種方式使用它:
data.newFavOfferId = ...
我該怎麼辦這個?
如果你的來源是可信的,最簡單的解決方案是使用eval
:
data = eval('('+data+')');
如果您不信任的來源,那麼你最好註明你能有什麼和手動解析字符串(例如,如果您只有一個屬性級別,則不會非常困難)。
另一種解決方案(根據您的實際數據)將通過插入缺失報價更改您的數據轉換成JSON:
data = JSON.parse(datareplace(/({|,)\s*([^:,}{]+)\s*(:)/g,'$1"$2"$3'));
雖然表面上這看起來像JSON數據上,它是畸形的,因此它不直接JSON.parse()
工作。這是因爲JSON對象需要按鍵被包裹在引號...
:
"{isShowLoginPopup:true,newFavOfferId:1486882}"
爲有效的JSON應該是:
"{\"isShowLoginPopup\":true,\"newFavOfferId\":1486882}"
所以,你必須有,其實什麼是JavaScript對象,而不是JSON,但是您遇到的問題是這是一個JavaScript對象,它是一個字符串文字。如果這是硬編碼,那麼您只需從字符串的開頭和結尾刪除"
。
var data = {isShowLoginPopup:true,newFavOfferId:1486882};
如果該對象被序列化,並且需要從/向一個服務器等傳輸,則現實的是,它需要爲JSON格式的字符串,然後可以被去串行化回JavaScript對象被髮送。
var data = JSON.parse("{\"isShowLoginPopup\":true,\"newFavOfferId\":1486882}");
我想起老的JavaScript的話說:「評估和演示是邪惡的」 – series0ne
由於大部分的說法,這是一部分的智慧和愚蠢的一部分。你必須知道何時使用它。當你知道你投入什麼時,主要的問題是它很慢。 –