2014-07-25 49 views
1

我有一個字符串變量是一個對象的字符串表示形式。就像這樣:字符串到對象的轉換?

{ 
    "column": "'asdf'", 
    "sort": "true", 
    "search": "{\"asdf\":\"searchval\"}" 
} 

我想上面的字符串轉換成一個對象,它看起來像這樣:我做搜索和替換引號和反斜線正則表達式規劃

{ 
    column: 'asdf', 
    sort: 'true', 
    search: { 
     asdf: 'searchval' 
    } 
} 

,然後使用eval(),但這似乎不安全和效率低下。有沒有更好的替代方法?

我正在計劃將字符串的對象值分配給對象變量。

回答

1

你試過JSON.parse();然而?

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse

var myOriginalData = JSON.stringify({"column": "'asdf'","sort": "true","search": "{\"asdf\":\"searchval\"}"}); 

myNewData = JSON.parse(myOriginalData, function (key, value) { 
    var type; 
    if (value && typeof value === 'object') { 
     type = value.type; 
     if (typeof type === 'string' && typeof window[type] === 'function') { 
      return new (window[type])(value); 
     } 
    } 
    return value; 
}); 

console.log('myNewData -----------------------------------------------------------'); 
console.log(myNewData); 

工作實例:http://plnkr.co/edit/2jLGIxx3AVEceVQsOpxL?p=preview

1

發佈後立即發現有JSON.parse();函數。我不刪除這個問題的唯一原因是,以後可能會節省一些時間。

您所要做的只是將字符串變量作爲參數傳遞,並輸出一個對象。

如果有人看到這個解決方案的任何問題,或知道更好的解決方案,請做出答案!

+0

我上面貼一個完整的工作例如,如果你仍然有興趣。 –