【发布时间】:2018-12-03 13:17:33
【问题描述】:
我从 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);
我的预期输出列表是这样的,
string Key = WebFields[0].Key
string Value = WebFields[0].Value
但现在就像每个 WebField 项目一样,
WebFields[0] -> [0] -> Key
[1] -> Value
如何达到我的预期输出?
【问题讨论】:
-
List<Dictionary<string, string>>应该是Dictionary<string, string>字典本质上是KeyValuePair的列表,所以您正在制作列表列表,这就是您想要的吗? -
@Matt 如果我更改为 Dictionary
出现异常,'WebFields = javaScriptSerializer.Deserialize >(jsonString)' 抛出类型为 'System.InvalidOperationException 的异常' -
@vinothkumar,您能否显示您的数据包含在
JSON.stringify(FieldValues),中? -
@vinothkumar,表示您的
jsonString在后端的外观如何? -
@er-shoaib var jsonString = "[{\"Key\":\"1_1_1_1_1_TXT\",\"Value\":\"\"},{\"Key\":\ "2_TXT\",\"Value\":\"\"},{\"Key\":\"3_TXT\","Value":\"\"}]"
标签: c# .net json.net deserialization