2017-05-07 42 views
1

我想從不是典型的JSON字符串的字符串中創建對象。在JavaScript中將字符串轉換爲對象

這裏是例子:

var ObjectInString = "{x:62.43993,y:293.64093}"; //string i want to turn into an object 
 
var ObjectWhichWorks = {x:62.43993,y:293.64093}; 
 

 
console.log(ObjectInString); 
 
console.log(ObjectWhichWorks);

+0

使用'JSON.parse(string)'將字符串轉換爲對象 –

+1

您是否遇到了[與此處所述相同的問題](http://stackoverflow.com/questions/9637517/parsing-relaxed-json-without- EVAL)?如果是這樣,這是重複的。如果沒有,請解釋原因。 –

+0

此問題的解決方案對我無效。 – AESTHETICS

回答

0

假設你的鑰匙總是xy,轉換字符串。一個有效的JSON字符串由圍繞這些鍵增加雙引號然後可以使用JSON.parse()以獲得所需的對象:

var o = '{x:62.43993,y:293.64093}'; 
 

 
console.log(JSON.parse(o.replace('x', '"x"').replace('y', '"y"')));

+0

downvote的原因是什麼? –

+1

這不是我。感謝您解決我的問題! – AESTHETICS

1

您可以使用eval解釋字符串裏JavaScript表達式。我們需要將此值包含在括號中,以便將其作爲對象字面值正確解析,而不是無效的語句。

var ObjectInString = "{x:62.43993,y:293.64093}"; 
 
var Object = eval("(" + ObjectInString + ")"); 
 

 
console.log(ObjectInString); 
 
console.log(Object);

然而,使用eval與不可信的數據是一個巨大的安全漏洞。只有做到這一點從來源被完全可信的數據,並尋找替代品(如使用有效的JSON數據可以用JSON.parse(...)儘快解析。

0

很多年前,我很多搜索此SOLUT離子。

var obj = eval ("(" + ObjectInString + ")"); 

我不知道跨瀏覽器支持或其他任何東西,只是知道它適合我。