[英]Parsing json in ASP.NET MVC4 controller
json是使用POST方法从浏览器传递到服务器中的ASP.NET MVC4应用程序控制器的。 它包含3个由0 ..组成的数组的属性。20个元素(在下面的代码中,它们所有都只有1个元素)。 如何在C#中解析此json? 我尝试了带签名的控制器
public JsonResult RegisterSales(Sale mysale)
但未分配mysale属性。
传递的json:
{ "id":"sale1",
"sale_date":"2013-11-10 19:20:44"
"taxes":[{"id":"km20pr","name":"20%","rate":0.2}],
"products":[{"id":"prod1",
"sale_id":"sale1",
"register_id":"register1",
"quantity":"1.00000"}],
"payments":[{"id":"payment1",
"sale_id":"sale1",
"register_id":"register1",
"amount": 0
}]
}
它应该解析为C#结构,例如
public class Sale
{
public string id;
public DateTime sale_date;
public Tax[] taxes;
public Product[] products;
public Payment[] payments;
}
public class Tax
{
public string id, name;
public decimal rate;
}
public class Product
{
public string id, sale_id, register_id;
public decimal quantity;
}
public class Payment
{
public string id, sale_id, register_id;
public decimal amount;
}
使用NewtonSoft JSON Deserialize,如下所示:
class School
{
public string student;
public object[] data;
}
School datum = JsonConvert.Deserialize<School>(jsonStr);
//Do stuff with datum...
请享用。
您需要发布具有正确内容类型的数据。 在这种情况下,它是application / json。 MVC基于用于将数据发送到服务器的内容类型选择正确的绑定模式。
最好的办法是使json具有与您接受的变量“ mysale”相同的名称。 例:
"mysale": { "id":"sale1",
"sale_date":"2013-11-10 19:20:44"
"taxes":[{"id":"km20pr","name":"20%","rate":0.2}],
"products":[{"id":"prod1",
"sale_id":"sale1",
"register_id":"register1",
"quantity":"1.00000"}],
"payments":[{"id":"payment1",
"sale_id":"sale1",
"register_id":"register1",
"amount": 0
}]
}
您可以这样在AJAX调用中添加名称:
$.ajax({
...,
...,
data: JSON.stringify({mysale:data}),
...,
...
});
现在它将接受您的JSON。
这样做的原因是,发布的JSON将被视为发布值,就像使用常规形式一样,您可以通过名称来捕获该值。
因此,回答您的问题:添加{get; set;}并不是最好的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.