2011-06-01 45 views
1

我有這樣的:使用JSON將方括號表示法數組從javascript轉換爲C#?

var testArray = []; 
testArray["First"] = "First Test Data"; 
testArray["Second"] = "Second Test Data"; 
$.toJSON(testArray); 

我然後傳遞迴服務器端。當我在處理AJAX請求時查看對象服務器端時,我所擁有的就是「[]」。

有沒有辦法做到這一點或類似的事情,以實現查找客戶端傳回的數據的能力?

+0

聽起來像你的'toJSON'實現不能正確轉換爲Json。 – Tejs 2011-06-01 19:05:39

回答

4

你正在創建一個數組,但你使用它作爲一個對象。創建一個對象,而不是,它會被正確處理:

var testObject = {}; 
testObject["First"] = "First Test Data"; 
testObject["Second"] = "Second Test Data"; 
$.toJSON(testObject); 

或者乾脆:

var testObject = { 
    First: "First Test Data", 
    Second: "Second Test Data" 
}; 
$.toJSON(testObject); 

如果你真的想要一個數組,那麼你訪問使用數字,而不是字符串的項目:

var testArray = []; 
testArray[0] = "First Test Data"; 
testArray[1] = "Second Test Data"; 
$.toJSON(testArray); 

或者乾脆:

var testArray = ["First Test Data", "Second Test Data"]; 
$.toJSON(testArray); 
+0

我不知道! JavaScript讓我很快樂地使用它。多麼奇怪。感謝這些例子! – 2011-06-01 19:13:34

+0

@Sean Anderson:是的,一個數組也是一個對象,所以用法不是錯誤(但可能令人困惑),但是當'toJSON'方法串行化數組時,它會檢測到它是一個數組並且只包含數組項目,而不是它的對象屬性。 – Guffa 2011-06-01 19:17:34

5

你必須做testArrayobject

var testArray = {}; 

您使用數組的方式是不正確的。數組只應具有數值指標的值。否則,您只需將一個屬性添加到數組對象,並在轉換爲JSON時忽略它們。

DEMO