後端與多層次 json 資料傳入與送出 - 使用 Json.NET
本文章只列範例不說明
一、準備一範例,檔案結構如下圖
二、Model
在 Models 部份,有三個檔案,其內容分別為
QueryModel.cs
using System.Collections.Generic;
namespace WebApplication1.Models
{
public class QueryModel
{
public Header header { get; set; }
public IEnumerable<Detail> details { get; set; }
public long[] deleteList { get; set; }
}
}
Header.cs
namespace WebApplication1.Models
{
public class Header
{
public int id { get; set; }
public string name { get; set; }
}
}
Detail.cs
namespace WebApplication1.Models
{
public class Detail
{
public int no { get; set; }
public string productName { get; set; }
public int quantity { get; set; }
public int price { get; set; }
}
}
三、Controller
HomeController.cs
using System.Web.Mvc;
using WebApplication1.Models;
namespace WebApplication1.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult About()
{
ViewBag.Message = "Your application description page.";
return View();
}
public ActionResult Contact()
{
ViewBag.Message = "Your contact page.";
return View();
}
[HttpPost]
public ActionResult GetJson(QueryModel obj)
{
return Content(Newtonsoft.Json.JsonConvert.SerializeObject(obj), "application/json", System.Text.Encoding.UTF8);
}
}
}
四、View
Index.cshtml
@{ ViewBag.Title = "Home Page"; } @section scripts{ <script> var objectH = { id: 1, name: "Tom" }; var objectDs = [ { no: 1, productName: "hat", quantity: 2, price: 100 }, { no: 2, productName: "shoes", quantity: 1, price: 500 } ]; var delList = [111, 222, 333]; var MyJson = JSON.stringify({ header: objectH, details: objectDs, deleteList: delList }); $(document).ready(function () { $.ajax({ url: "GetJson", type: "post", dataType: "json", data: MyJson, contentType: 'application/json; charset=utf-8', success: record }); }); function record(data) { console.log(data.header.name + " is buyer"); } </script> }
五、執行結果