C#拼装JSON数组简易方法

2022-09-27 09:25:28

 下面是我们想要拼接出来的JSON字符串,返回给前台

1 {"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演示

实体类

 1publicclass MacState 2    { 3///<summary> 4/// 请求状态 5///</summary> 6publicstring success {get;set; } 7///<summary> 8/// 错误信息 9///</summary>10publicstring msg {get;set; }11///<summary>12/// JSON数组13///</summary>14public List<MacStateData> data {get;set; }15    }16publicclass MacStateData17    {18///<summary>19/// 设备名称20///</summary>21publicstring macName {get;set; }22///<summary>23/// 运行状态 运行/停止(1/0)24///</summary>25publicdecimal state {get;set; }26     }

函数(标红色的注意!!!)

 1///<summary> 2/// 设备状态情况 3///</summary> 4///<returns>JSON数组</returns> 5     [WebMethod(Description ="设备状态")] 6publicstring GetMacState() 7    { 8         MacState obj =new MacState(); 9try10        {11             DateTime NowDate = DateTime.Now;12             DataTable dt_his_count =new DataTable();13             DataTable dt_mac_state =new DataTable();14int max_count =200000;15string add_his_sql ="INSERT INTO EMES_MAC_STATE_PORT_HIS (DEF_DATE) VALUES (TO_DATE('{0}','YYYY-MM-DD HH24:MI:SS'))";16             DbUtil.ExecuteSql(string.Format(add_his_sql, NowDate));17string query_his_sql ="SELECT COUNT(*) FROM EMES_MAC_STATE_PORT_HIS";18             dt_his_count = DbUtil.QueryDT(query_his_sql);19if (Convert.ToDecimal(dt_his_count.Rows[0][0]??"0")>max_count)//接口日志超过20W条,自动删除20            {21string del_sql ="DELETE FROM EMES_MAC_STATE_PORT_HIS";22                DbUtil.ExecuteSql(del_sql);23            }24string query_mac_state_sql ="SELECT MAC_NAME,STATE FROM EMES_MAC_STATE";25             dt_mac_state = DbUtil.QueryDT(query_mac_state_sql);26if (dt_mac_state.Rows.Count >0)27            {28                 obj.success ="true";29                 obj.msg ="";30                 obj.data =new List<MacStateData>();//实例化JSON数组,不实例化要报错31for (int i =0; i < dt_mac_state.Rows.Count; i++)32                {33                     MacStateData objData =new MacStateData();//实例化JSON数组对象,用于添加JSON数组集合34                     objData.macName = dt_mac_state.Rows[i]["MAC_NAME"].ToString();35                     objData.state = Convert.ToDecimal(dt_mac_state.Rows[i]["STATE"] ??"0");36                     obj.data.Add(objData);//添加JSON数组集合37                }38string res = JsonConvert.SerializeObject(obj);//转JSON数组,演示用,下面讲方法使用39return JSONHelper.ToJSON(obj);//调用的封装函数,不用管,我们将上面的方式40            }41else42            {43                 obj.success ="false";44                 obj.msg ="当前无数据信息,请稍后再试!";45                 obj.data =new List<MacStateData>();46return JSONHelper.ToJSON(obj);47            }48        }49catch (Exception ex)50        {51             obj.success ="false";52             obj.msg = ex.Message;53             obj.data =new List<MacStateData>();54return JSONHelper.ToJSON(obj);55        }56     }

注:将对象转JSON数组,我们需要引入外部类库:Newtonsoft.Json.dll,没有的小伙伴请到我另外一篇博客下载:https://www.cnblogs.com/chenyanbin/p/11200415.html

1引入命名空间:2using Newtonsoft.Json;34方法使用:5 JsonConvert.SerializeObject(实体类对象)

JSON数组

搞定~~

转载于:https://www.cnblogs.com/chenyanbin/p/11205616.html

  • 作者:weixin_30784141
  • 原文链接:https://blog.csdn.net/weixin_30784141/article/details/96435475
    更新时间:2022-09-27 09:25:28