C#拼裝JSON數組簡易方法


  下面是我們想要拼接出來的JSON字符串,返回給前台

 {"success":"true","msg":"","data":[{"macName":"正面預拼裝機","state":1.0},{"macName":"正面拼板壓力架","state":1.0},{"macName":"板片翻身系統","state":1.0},{"macName":"反面預拼裝機","state":1.0},{"macName":"反面拼板壓力架","state":1.0},{"macName":"划線噴碼機","state":0.0},{"macName":"縱骨焊接安裝輥道","state":0.0},{"macName":"縱骨焊接機","state":1.0},{"macName":"T排焊接安裝輥道","state":0.0}]}

  想看拼接后的JSON格式,這里可以推薦一個網站:https://www.json.cn/

  之前都是用StringBuider手動拼接出JSON數據,拼出來的結果還容易錯,下面推薦一個簡單方式

  首先,我們把JSON數組創建實體類,那么問題來了,這個實體類如何創建,這里推薦一個網站:http://www.bejson.com/convert/json2csharp/,只需要將JSON格式放入,就會幫我們自動轉成實體類

  實體類也比較簡單,用到了List集合存放對象,下面Demo演示

實體類

     public class MacState
     {
         /// <summary>
         /// 請求狀態
         /// </summary>
         public string success { get; set; }
         /// <summary>
         /// 錯誤信息
         /// </summary>
         public string msg { get; set; }
         /// <summary>
         /// JSON數組
         /// </summary>
         public List<MacStateData> data { get; set; }
     }
     public class MacStateData
     {
         /// <summary>
         /// 設備名稱
         /// </summary>
         public string macName { get; set; }
         /// <summary>
         /// 運行狀態 運行/停止(1/0)
         /// </summary>
         public decimal state { get; set; }
     }

函數(標紅色的注意!!!)

     /// <summary>
     /// 設備狀態情況
     /// </summary>
     /// <returns>JSON數組</returns>
     [WebMethod(Description ="設備狀態")]
     public string GetMacState()
     {
         MacState obj = new MacState();
         try
         {            
             DateTime NowDate = DateTime.Now;
             DataTable dt_his_count = new DataTable();
             DataTable dt_mac_state = new DataTable();
             int max_count = 200000;            
             string add_his_sql = "INSERT INTO EMES_MAC_STATE_PORT_HIS (DEF_DATE) VALUES (TO_DATE('{0}','YYYY-MM-DD HH24:MI:SS'))";
             DbUtil.ExecuteSql(string.Format(add_his_sql, NowDate));
             string query_his_sql = "SELECT COUNT(*) FROM EMES_MAC_STATE_PORT_HIS";
             dt_his_count = DbUtil.QueryDT(query_his_sql);
             if (Convert.ToDecimal(dt_his_count.Rows[0][0]??"0")>max_count) //接口日志超過20W條,自動刪除
             {
                 string del_sql = "DELETE FROM EMES_MAC_STATE_PORT_HIS";
                 DbUtil.ExecuteSql(del_sql);
             }
             string query_mac_state_sql = "SELECT MAC_NAME,STATE FROM EMES_MAC_STATE";
             dt_mac_state = DbUtil.QueryDT(query_mac_state_sql);
             if (dt_mac_state.Rows.Count > 0)
             {
                 obj.success = "true";
                 obj.msg = "";
                 obj.data = new List<MacStateData>(); //實例化JSON數組,不實例化要報錯 
                 for (int i = 0; i < dt_mac_state.Rows.Count; i++)
                 {
                     MacStateData objData = new MacStateData(); //實例化JSON數組對象,用於添加JSON數組集合
                     objData.macName = dt_mac_state.Rows[i]["MAC_NAME"].ToString();
                     objData.state = Convert.ToDecimal(dt_mac_state.Rows[i]["STATE"] ?? "0");
                     obj.data.Add(objData); //添加JSON數組集合
                 }
                 string res = JsonConvert.SerializeObject(obj); //轉JSON數組,演示用,下面講方法使用                   return JSONHelper.ToJSON(obj); //調用的封裝函數,不用管,我們將上面的方式              }
             else
             {
                 obj.success = "false";
                 obj.msg = "當前無數據信息,請稍后再試!";
                 obj.data = new List<MacStateData>();
                 return JSONHelper.ToJSON(obj);
             }
         }
         catch (Exception ex)
         {
             obj.success = "false";
             obj.msg = ex.Message;
             obj.data = new List<MacStateData>();
             return JSONHelper.ToJSON(obj);
         }
     }

注:將對象轉JSON數組,我們需要引入外部類庫:Newtonsoft.Json.dll,沒有的小伙伴請到我另外一篇博客下載:https://www.cnblogs.com/chenyanbin/p/11200415.html

 引入命名空間:
 using Newtonsoft.Json;
 
 方法使用:
 JsonConvert.SerializeObject(實體類對象)

JSON數組

搞定~~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM