【发布时间】:2013-07-07 16:32:45
【问题描述】:
我正在我的 JavaScript 中创建一个 JSON 字符串并将其发送到我在 mvc 应用程序中的控制器。我创建 JSON 字符串的代码:
$('#btnassign').click(function () {
var arrPrice = "";
var arrMarkUP = "";
$("table tr").each(function () {
if ($(this).find('input:checkbox:first').is(':checked')) {
if ($(this).find('input.inputprice').val() != "") {
arrPrice += "{";
var price = $(this).find('input.inputprice').val();
var id = $(this).find('input[type=hidden]').val();
arrPrice += '"Id":"' + id + '","Price":"' + price + '"';
arrPrice += "},";
}
if ($(this).find('input.inputmarkup').val() != "") {
arrMarkUP += "{";
var price = $(this).find('input.inputmarkup').val();
var id = $(this).find('input[type=hidden]').val();
arrMarkUP += "Id:" + id + ",Price:" + price;
arrMarkUP += "},";
}
}
});
var lastindexp = arrPrice.lastIndexOf(",");
arrPrice = arrPrice.substring(0, lastindexp) + "|";
var lastindexm = arrMarkUP.lastIndexOf(",");
arrMarkUP = arrMarkUP.substring(0, lastindexm) + "|";
alert(arrPrice);
alert(arrMarkUP);
$("#hdPrice").val(arrPrice);
$("#hdMarkUP").val(arrMarkUP);
$("#AssignProductForm").submit();
});
});
我的 JSON 字符串是从上面的代码生成的:
{"Id":"1","Price":"4"},{"Id":"2","Price":"6"}
我的控制器解析代码:
[HttpPost]
public ActionResult AddProducts(FormCollection collection, string txtsearch)
{
var ManualPricing = collection["hdPrice"].Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
JavaScriptSerializer ser = new JavaScriptSerializer();
var Manual = ser.Deserialize<PriceMargin>(ManualPricing[0]);
}
Price margin 是一个应该反序列化的类:
public class PriceMargin
{
public string Id { get; set; }
public string Price { get; set; }
}
var Manual = ser.Deserialize<PriceMargin>(ManualPricing[0]) 行给了我一个错误:
无效的 JSON 原语:{"Id":"2","Price":"9"}。
解决方案:
var list = new JavaScriptSerializer().Deserialize<List<KeyValue>>(json);
public class KeyValue
{
public string key;
public string value;
}
【问题讨论】:
-
为什么要手动构建字符串?您可以使用本机数据类型,然后将这些数据类型编码为 JSON strong 并将 JSON 字符串解码为本机数据类型
-
我不知道该怎么做,我是 javascript 和 jquery 的新手!有什么例子吗?
-
添加了使用 javascript 对象的示例
标签: javascript asp.net-mvc json asp.net-mvc-3 asp.net-mvc-4