2015-03-25 14 views
2
Id: { 
    editable: false, 
    nullable: true 
}, 
CustomerID: { 
    editable: true, 
    type: Integer 
}, 
CompanyName: { 
    editable: true, 
    type: String 
}, 
ContactName: { 
    editable: true, 
    type: String 
} 

嗨,有沒有在JavaScript或jQuery中可以將此字符串轉換爲對象的方法?將字符串轉換爲對象javascript/jquery

謝謝。

+2

怎麼辦你得到那個字符串? – undefined 2015-03-25 02:17:52

+0

JSON不支持函數值(如字符串或整型,也不支持所有瀏覽器(版本) – DoronG 2015-03-25 03:07:04

+0

該字符串應該是動態的,我從數據庫表中讀取字段 – confused 2015-03-25 03:08:18

回答

3

如果這是嚴格的字符串格式,那麼它是無效的JSON。但是,您可以得到解決這個問題,如果使用得當的eval()

eval('myobj = {' + stringifiedObject + '};'); 

正如澄清,你不能使用JSON.parse()這裏是JSON的規範要求,所有的按鍵都引述的原因。

JSON.parse('{ ID: 1 }'); // Generates an exception: Invalid character 
JSON.parse('{ "ID": 1 }'); // Returns object: { ID: 1 } 
0

基礎上@Phylogenesis答案,但沒有eval

包裝-almost-對象,然後運行JSON.parse

var myObj; 

stringifiedObject = '{' + stringifiedObject + '}'; 
myObj = JSON.parse(stringifiedObject); 

注: 如果你不知道你想填寫Flash串的原點(或格式),那麼你可以用一個try..catch()語句之間的JSON.parse線。

+0

不幸的是,這不起作用.JSON規範要求引用鍵名:'{「Id」:{「editable」:false,「nullable」:true},...}'。在你的例子中運行'JSON.parse()'會產生一個異常。 – Phylogenesis 2015-03-25 09:12:29

+0

@種系發生你是對的,你的答案肯定會更好。 – rec 2015-03-25 12:48:15

0

我會同時使用現有的答案

var new_string = JSON.parse((string.trim().charAt(0)!=='{')?('{'+string+'}'):string); 

假設字符串的組合是你的輸入,並new_string是你的輸出

0

這可能會爲你工作,

var mystring="[Id: { 
    editable: false, 
    nullable: true 
}, 
CustomerID: { 
    editable: true, 
    type: Integer 
}, 
CompanyName: { 
    editable: true, 
    type: String 
}, 
ContactName: { 
    editable: true, 
    type: String 
}]"; 

var obj1 = JSON.parse(mystring); 

OR 

var obj2= eval('(' + mystring+ ')');