JSON 中的 {} 告诉反序列化器它将创建一个对象。记住这一点,您创建的 JSON 将创建一个对象 - 每个属性都包含一个字符串数组。似乎您想要一个对象列表,而不是这个。
你是用这种方法反序列化的吗?
JsonConvert.DeserializeObject<T>(json)
您需要提供一种类型来反序列化。所以在这种情况下,它将是:
class JobDetails
{
public string JobCode { get; set; }
public double Hours { get; set; }
public double Rate { get; set; }
public double Expense { get; set; }
}
为了反序列化为这种类型,您的 JSON.NET JsonConvert 调用将如下所示:
[HttpPost]
public ActionResult Testing(string json)
{
var list = JsonConvert.DeserializeObject<List<JobDetails>>(json)
UPDATE_YOUR_MODEL_HERE(list);
return WHAT_YOU_WANT_TO_RETURN_HERE;
}
你的 JSON 看起来像:
[
{
"JobCode": "a1",
"Hours": 37.5,
"Rate": 10,
"Expense": 375
},
{
"JobCode": "a2",
"Hours": 10,
"Rate": 20,
"Expense": 200
},
{
"JobCode": "a3",
"Hours": 37.5,
"Rate": 20,
"Expense": 750
}
]
这会将 JSON 转换为 JobDetails 对象列表。
或者,如果您想将 JSON 解析为对象作为 Action 参数,这应该可以解决问题:
[HttpPost]
public ActionResult Testing(List<JobDetails> list)
{
UPDATE_YOUR_MODEL_HERE(list);
return WHAT_YOU_WANT_TO_RETURN_HERE;
}
如果您在将表序列化以纠正 JSON 时遇到问题,请尝试查看此 jQuery 插件:https ://github.com/lightswitch05/table-to-json