C# 从json字符串反序列化到字典列表?
我正在从ajax方法传递json对象数组C# 从json字符串反序列化到字典列表?,c#,.net,json.net,deserialization,C#,.net,Json.net,Deserialization,我正在从ajax方法传递json对象数组 var FieldValue = { Key: $(this).attr("id"), Value: $(this).val() }; FieldValues.push(FieldValue); $.ajax({ url: "../Hand
var FieldValue = {
Key: $(this).attr("id"),
Value: $(this).val()
};
FieldValues.push(FieldValue);
$.ajax({
url: "../Handler.ashx?&Action=Save",
data: JSON.stringify(FieldValues),
type: "post",
datatype: "json",
contentType: "application/json; charset=utf-8",
});
但当我试图反序列化到字典列表时
JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
List<Dictionary<string, string>> WebFields = new List<Dictionary<string, string>>();
WebFields = javaScriptSerializer.Deserialize<List<Dictionary<string, string>>>(jsonString);
但现在它就像每个WebField项目一样
WebFields[0] -> [0] -> Key
[1] -> Value
如何实现预期输出?要获得字典服务器端,请尝试发送基本POJO。 而不是:
var FieldValue = {
Key: $(this).attr("id"),
Value: $(this).val()
};
FieldValues.push(FieldValue);
尝试:
javascript对象被表示为一个键值对,因此返回字典将返回一个JS对象,键值为propname,值为List应该是Dictionary Dictionary本质上是一个KeyValuePair列表,所以您正在创建一个列表,这是您想要的吗?@Matt如果我改为Dictionary get exception,“WebFields=javaScriptSerializer.DeserializejsonString”引发了“System.InvalidOperationException”类型的异常@vinothkumar,请显示JSON.stringifyFieldValues、@vinothkumar中包含的数据,表示您的jsonString在后端的样子?@er shoaib var jsonString=[{\Key\:\1\u 1\u 1\u 1\u 1\u TXT\,\Value\:\},{\Key\:\2\u TXT\,\Value\:\},{\Key\:\3\u TXT\,Value:\}它也像WebFields[0]->[0]->{Key:},如果我真的喜欢这把钥匙,那么每一件物品的钥匙都会不同。每次钥匙都会从根本上不同。尝试将c中的重复键添加到字典中,您将收到一个异常。您正在将它包装为列表,而它应该是字典。不,谢谢你的方法。对我来说,只需稍加修改,var key=$this.attrid;var值=$this.val;字段值[键]=值;令人惊叹的这也适用于原始机制,但可能是外壳不匹配,我认为您的方法是一种更具可读性的方法。如果我能主动提出建议,尽量远离字典和JSON。如果需要处理这种类型的结构,我倾向于使用公共字符串键和公共字符串值创建一个名为CustomKvP的类。但99.99%的用户使用自己的POCO
var FieldValue = {
Key: $(this).attr("id"),
Value: $(this).val()
};
FieldValues.push(FieldValue);
var key = $(this).attr("id");
var value =$(this).val()
var fieldValue = { key: value };
fieldValues.push(fieldValue);