我對象bulding的一個數組在JavaScript如下:無法反序列化對象的JavaScript數組到C#陣列
var tabDiscount = []
for(var i=0; i<someArray.length; i++){
var refdiscountpair = { productCode: $("#Ref" + i).html(), discount: discountValue }
tabDiscount.push(refdiscountpair);
}
這似乎很好地工作。然後我將這個數組存儲在一個隱藏域中
$HFDiscount.val(JSON.stringify(tabDiscount));
所以當表單發佈時,我得到隱藏域值服務器端。我有一個C#類RefDiscountPair:
[Serializable]
public class RefDiscountPair
{
public string productCode
{
get;
set;
}
public int discount
{
get;
set;
}
public RefDiscountPair()
{
}
}
我嘗試javascript對象陣列反序列化爲RefDiscountPair的陣列。
RefDiscountPair[] test = JsonConvert.DeserializeObject<RefDiscountPair[]>(HFDiscount.Value);
whcih提出了一個JsonSerializationException
:我使用JSON .NET包(Newtonsoft.Json)嘗試。
我也試着使用JavaScriptSerializer類:
string[] test = js.Deserialize<string[]>(js.Deserialize<string>(HFDiscount.Value));
foreach (string s in test)
{
RefDiscountPair p = js.Deserialize<RefDiscountPair>(s);
}
異常
MissingMethodException
(類型的 'system.string' javascriptserializer沒有定義參數的構造函數)。
任何想法?
編輯
這是我收到的JSON的結構:
"\"[{\\\"productCode\\\": \\\"1111111\\\", \\\"discount\\\": \\\"5\\\"}, {\\\"productCode\\\": \\\"2222222\\\", \\\"discount\\\": \\\"5\\\"}]\""
這導致以下錯誤信息:
Error converting value "[{"productCode": "1111111", "discount": "5"}, {"productCode": "2222222", "discount": "5"}]"
所以你得到的JSON它看起來像 {項目:yourArray}這可能是更好的保鮮膜包裝對象中的數組 –
您是否嘗試過反序列化一個對象,而不是一個數組?嘗試限制可能出錯的事物的數量。 –
@ A.Rama使用JSON.NET包將一個對象放入RefDiscountPair對象看起來可以正常工作。我不明白爲什麼我不能將整個數組反序列化到C#中的RefDiscountPair數組中。 – WizLiz