以下代码工作正常
List<string> alist = new List<string>() { "1", "2", "3" };
string serialisedList= (new JavaScriptSerializer()).Serialize( alist );
List<int> deserialisedList= JsonConvert.DeserializeObject<List<int>>( serialisedList);
上例中serialisedList的值为"[\"1\",\"2\",\"3\"]"
然后,我有一个 JavaScript 对象,该对象具有一个属性,该属性是一组选中的 CheckboxList 控件值。当我将此对象转换为 JSON 时,键值对如下所示:
{
"SomeProp": "[\"1\",\"2\",\"3\"]"
}
所以,基本上这里的值和上面的值是完全一样的。但是,当我尝试将其反序列化为 C# 对象时:
public class ServerObject
{
public List<int> SomeProp { get; set; }
}
ServerObject deserialisedObj = JsonConvert.DeserializeObject<ServerObject>( jsonString );
我得到错误:
Error converting value "["1","2","3"]" to type 'System.Collections.Generic.List`1[System.Int32]'. Path 'SomeProp'
为什么不能将相同的值反序列化为对象属性,因为它可以直接直接转换为类型?