1. 程式人生 > >C# webapi 解析 json字串包

C# webapi 解析 json字串包

步驟一:最好是自己建立一個和json包中欄位一樣的實體類接收資料(推薦),也可以用原有的實體類

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace cmxapi.Models
{
    public class FinancialCreditCarApplyModel
    {

        public int BrandID { get; set; }
        public int SeriesID { get; set; }
        public int CarsType { get; set; }
        public int EntId { get; set; }
        public int CrtUser { get; set; }
        public int Status { get; set; }
        public int LineNum { get; set; }
         public DateTime CrtDate { get; set; }

    }
}

步驟二:引用名稱空間   using Newtonsoft.Json;   通過 nuget下載

步驟三:使用 該方法 JsonConvert.DeserializeObject(obj) 解析json包資料 裡面可以是任何型別的

              用list 集合接收json陣列

 List<FinancialCreditCarApplyModel> jobInfoList = JsonConvert.DeserializeObject<List<FinancialCreditCarApplyModel>>(strJson);

步驟四:案例如下

 [HttpPost("api/FinancialCreditCarApplyHeader/HeaderAdd")]
        public ActionResult FinancialCreditCarApplyHeaderAdd(string strJson)
        {
            ILog log = LogManager.GetLogger(Startup.repository.Name, "mylog");
            try
            {
              
               
                //string jsonText = "[{'EntId':1,'CrtUser':1020,'BrandID':9,'SeriesID':7,'CarsType':8},{'EntId':1,'CrtUser':1020,'BrandID':9,'SeriesID':7,'CarsType':8}]";

                //反序列化Json資料
               // JsonReader reader = new JsonTextReader(new StringReader(strJson));
                List<FinancialCreditCarApplyModel> jobInfoList = JsonConvert.DeserializeObject<List<FinancialCreditCarApplyModel>>(strJson);

                //主表
                FinancialCreditCarApplyModel hmodel = new FinancialCreditCarApplyModel();
                foreach (var item in jobInfoList)
                {
                    hmodel.CrtDate = DateTime.Now;
                    hmodel.CrtUser = item.CrtUser;
                    hmodel.EntId = item.EntId;
                    hmodel.Status = 0;

                }
                string hjson = JsonConvert.SerializeObject(hmodel);

                //從表
                FinancialCreditCarApplyModel dmodel = new FinancialCreditCarApplyModel();
                List<FinancialCreditCarApplyModel> LineList = new List<FinancialCreditCarApplyModel>();
                int count = 0;
                foreach (var item in jobInfoList)
                {
                    dmodel.BrandID = item.BrandID;
                    dmodel.SeriesID = item.SeriesID;
                    dmodel.CarsType = item.CarsType;
                    dmodel.LineNum = count++;
                    LineList.Add(dmodel);
                }
                string djson = JsonConvert.SerializeObject(dmodel);
                DataTable dt = financial.FinancialCreditCarApplyHeaderAdd(hjson, djson).Tables[0];

                if (dt.Rows.Count > 0)
                {
                    //成功                  
                    return Json(new { status = 0, message = "成功", data = dt });

                }
                else
                {
                    return Json(new { status = 1, message = "失敗", data = dt });
                }

            }
            catch (Exception ex)
            {

                log.Error("FinancialCreditCarApplyHeader_Apply_GetListByPage] error:" + ex.Message);
                return Json(new { status = -1, message = ex.Message, data = "" });
            }
        }