C# 从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

我正在从ajax方法传递json对象数组

                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);