2017-08-08 200 views
-2

它應該很容易,但我已經用了幾天的時間來弄清楚,如何將一個動態創建的JSON字符串變成一個數組。我想要的是在JavaScript中:如何將JSON字符串更改爲對象數組?

var col_model =[ { 'label': 'Name', 'name': 'Name', 'key': 'true', 'width': '75', 'hidden': 'false' }, { 'label': 'FirstName', 'name': 'FirstName' }]; 

它在我的模型和Chrome瀏覽器接受作爲[對象,對象,對象]完美的作品。

但是,當我動態創建它,然後Chrome瀏覽器不接受它作爲json對象的數組。例子:我在這先創建一個字符串:

var col_model = { 'label': 'Name', 'name': 'Name', 'key': 'true', 'width': '75', 'hidden': 'false' }, { 'label': 'FirstName', 'name': 'FirstName' }; 

col_model=[col_model]; 

但是,這是不一樣的,甚至當我在selcon鼎聯添加[]。我也試圖解析它像這一點,但它不工作之一:

col_model = $.parseJSON('[' + col_model + ']'); 
+3

一個字符串會被包含在''''或'''中,你在第二個例子中有一個簡單的語法錯誤,如果它實際上是一個字符串,並且你不能在這裏複製和粘貼, col_model =「[」+ col_model +「]」;' – baao

+0

謝謝。我也嘗試把它放在var col_model =「{'label':'Name'ect ect。但結果是一樣的。 – Troels

+0

另外,JSON字符串中的鍵名和字符串被包在雙引號內,這不是可選的。 – Teemu

回答

2

我不是很清楚,你正試圖在這裏實現什麼。假設你想將一個對象數組作爲字符串轉換爲實際的對象數組,請嘗試下面的代碼。

你的對象數組作爲字符串

var col_model ="[ { 'label': 'Name', 'name': 'Name', 'key': 'true', 'width': '75', 'hidden': 'false' }, { 'label': 'FirstName', 'name': 'FirstName' }];" 

注意"兩端

您可以使用eval語句TI轉換回對象數組

var newObjArray = eval(col_model) 

話雖如此,在使用eval時必須小心謹慎,因爲它同時非常強大且有潛在危險。請閱讀有關它here

+1

WOW。這是一種魅力。我之前從未使用過eval,因爲我認爲使用它有點危險。但它的工作。非常感謝。 :-) – Troels

+0

再次,_dangerous_取決於你如何使用它:-) –

1

看看你的控制檯瀏覽器,當然你會得到一個錯誤,如意外的字符串。

這是因爲:

 
    var col_model = { 'label': 'Name', 'name': 'Name', 'key': 'true', 'width': '75', 'hidden': 'false' }, { 'label': 'FirstName', 'name': 'FirstName' }; 

無法存儲逗號在變量分開的兩個對象。或者是一個對象數組或者是單個對象,但是你寫的是不正確的。

然後,您可以以正確的方式訪問對象並設置其值並解析它。

我希望它可以幫助你。

+0

謝謝。你是對的。我檢查了瀏覽器:-) – Troels

相關問題