zoukankan      html  css  js  c++  java
  • 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数组

    搞定~~

  • 相关阅读:
    微博CacheService架构浅析 对底层协议进行适配
    Lucene 查询原理 传统二级索引方案 倒排链合并 倒排索引 跳表 位图
    Linux kernel 同步机制
    对话 CTO〡用声音在一起,听荔枝 CTO 丁宁聊 UGC 声音互动平台的技术世界 原创 王颖奇 极客公园 2018-12-01
    当中台遇上DDD,我们该如何设计微服务?
    京东技术沙龙系列之二 | 深度解析京东微服务组件平台
    gRPC设计动机和原则
    微信全文搜索优化之路
    门户级UGC系统的技术进化路线——新浪新闻评论系统的架构演进和经验总结 提高响应性能的手段归根结底就是三板斧:队列(Queue)、缓存(Cache)和分区(Sharding)
    现加减乘除4则运算
  • 原文地址:https://www.cnblogs.com/chenyanbin/p/11205616.html
Copyright © 2011-2022 走看看