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 をオブジェクトに解決する場合は、次のようにします。
[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