zoukankan      html  css  js  c++  java
  • 转 C#生成JSON数据格式的函数

    C#生成JSON数据格式的函数

    Posted on 2008-04-07 09:19 李海 阅读(325) 评论(0)  编辑 收藏 所属分类: Ext2.0学习

    使用说明:
        对List<类> 集合使用的方法:
         List<TBL_CODE_MZ> objList = objAction.GetCODE_MByList(objTbl);
         string JsonSource = JSONHelper.ToJSON(objList); //当前页记录转成JSON格式
         但有个问题:
         日期型数据谁转换成:@123456789@这样的数据!???不知道谁碰到过没有!!!!

      对数据集的使用如:DataSet,DataTable
     

    JSONHelper jsonHelp = new JSONHelper();

                jsonHelp.success 
    = true;
                jsonHelp.totlalCount 
    = getPrjListCount();
                
                
    foreach (DataRow dr in dsResult.Tables[0].Rows)
                
    {
                    jsonHelp.AddItem(
    "PRJ_ID", dr["PRJ_ID"].ToString());
                    jsonHelp.AddItem(
    "PRJ_NAME", dr["PRJ_NAME"].ToString());
                    jsonHelp.AddItem(
    "DEP_ID", dr["DEP_ID"].ToString());
                    jsonHelp.AddItem(
    "PRJ_MANID", dr["PRJ_MANID"].ToString());
                    jsonHelp.AddItem(
    "PRJ_STATE", dr["PRJ_STATE"].ToString());

                    
    if (dr["PRJ_STARTDATE"!= DBNull.Value)
                    
    {
                        jsonHelp.AddItem(
    "PRJ_STARTDATE", Convert.ToDateTime(dr["PRJ_STARTDATE"]).ToString("yyyy/MM/dd"));
                    }

                    
    else
                    
    {
                        jsonHelp.AddItem(
    "PRJ_STARTDATE"string.Empty);
                    }

                    
    if (dr["PRJ_ENDDATE"!= DBNull.Value)
                    
    {
                        jsonHelp.AddItem(
    "PRJ_ENDDATE", Convert.ToDateTime(dr["PRJ_ENDDATE"]).ToString("yyyy/MM/dd"));
                    }

                    
    else
                    
    {
                        jsonHelp.AddItem(
    "PRJ_ENDDATE"string.Empty);
                    }

                                    
                    jsonHelp.AddItem(
    "PRJ_MEMO", dr["PRJ_MEMO"].ToString());
                    jsonHelp.AddItem(
    "CODE_NAME", dr["CODE_NAME"].ToString());
                    jsonHelp.AddItem(
    "DEP_NAME", dr["DEP_NAME"].ToString());
                    jsonHelp.AddItem(
    "USER_NAME", dr["USER_NAME"].ToString());
                    jsonHelp.ItemOk();
                }


                
    string strResult = jsonHelp.ToString();

    //######################JSONHelp.cs源码######################################//

    using System;
    using System.Collections;
    using System.Collections.Generic; 
    using System.Text; 
    using System.Web.Script.Serialization;

    namespace framework.common
    {
        
    /// <summary>
        
    /// JSONHelper 的摘要说明
        
    /// </summary>

        public class JSONHelper
        
    {
            
    //对应JSON的singleInfo成员
            public string singleInfo = string.Empty;

            
    protected string _error = string.Empty;
            
    protected bool _success = true;
            
    protected long _totalCount = 0;
            
    protected System.Collections.ArrayList arrData = new ArrayList();
            
                   
            
    public JSONHelper()
            
    {
                
            }

            
    public static string ToJSON(object obj)
            
    {
                JavaScriptSerializer serializer 
    = new JavaScriptSerializer();
                
    return serializer.Serialize(obj);
            }

            
    public static string ToJSON(object obj, int recursionDepth)
            
    {
                JavaScriptSerializer serializer 
    = new JavaScriptSerializer();
                serializer.RecursionLimit 
    = recursionDepth;
                
    return serializer.Serialize(obj);
            }


            
    //对应于JSON的success成员
            #region 设置success为TURE,代表成功
            
    public bool success
            
    {
                
    get
                
    {
                    
    return _success;
                }

                
    set
                
    {
                    
    //如设置为true则清空error
                    if (success) _error = string.Empty;
                    _success 
    = value;
                }

            }

            
    #endregion

            
    //对应于JSON的error成员
            public string error
            
    {
                
    get
                
    {
                    
    return _error;
                }

                
    set
                
    {
                    
    //如设置error,则自动设置success为false
                    if (value != "") _success = false;
                    _error 
    = value;
                }

            }

            
    public long totlalCount
            
    {
                
    get return _totalCount; }
                
    set { _totalCount = value; }
            }

            
    //重置,每次新生成一个json对象时必须执行该方法
            public void Reset()
            
    {
                _success 
    = true;
                _error 
    = string.Empty;
                singleInfo 
    = string.Empty;
                arrData.Clear();
            }

            
    #region

            
    public void AddItem(string name, string value)
            
    {
                arrData.Add(
    """ + name + "":" + """ + value + """);
            }

            
            
    #endregion



            
    public void ItemOk()
            
    {
                arrData.Add(
    "<BR>");
            }


            
    //序列化JSON对象,得到返回的JSON代码
            public override string ToString()
            
    {
                StringBuilder sb 
    = new StringBuilder();
                sb.Append(
    "{");
                sb.Append(
    "totalCount:" + totlalCount.ToString() + ",");
                sb.Append(
    "success:" + _success.ToString().ToLower() + ",");
                sb.Append(
    "error:"" + _error.Replace(""""\""+ "",");
                sb.Append(
    "singleInfo:"" + singleInfo.Replace(""""\""+ "",");
                sb.Append(
    "data:[");

                
    int index = 0;
                sb.Append(
    "{");
                
    if (arrData.Count <= 0)
                
    {
                    sb.Append(
    "}]");
                }

                
    else
                
    {
                    
    foreach (string val in arrData)
                    
    {
                        index
    ++;

                        
    if (val != "<BR>")
                        
    {
                            sb.Append(val 
    + ",");
                        }

                        
    else
                        
    {
                            sb 
    = sb.Replace(",""", sb.Length - 11);
                            sb.Append(
    "},");
                            
    if (index < arrData.Count)
                            
    {
                                sb.Append(
    "{");
                            }

                        }

                       
                    }

                    sb 
    = sb.Replace(",""", sb.Length - 11);
                    sb.Append(
    "]");
                }

                
                sb.Append(
    "}");
                
    return sb.ToString();
            }

        }

    }
    http://blog.csdn.net/LGame/archive/2008/01/09/2031303.aspx
  • 相关阅读:
    错误:严重: Servlet.service() for servlet [appServlet] in context with path [] threw exception [Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is
    转 File "/usr/bin/yum", line 30 except KeyboardInterrupt, e:
    【转】C++和Java比较
    org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter 'xxxx' is not present
    Leetcode 423. Reconstruct Original Digits from English
    Maven中打包scope为system的Jar包
    Oracle常用函数和注意事项
    Vue中组件之间数据通信
    Vue中data数据响应问题
    JAVA爬虫对font-face字体反爬虫解密
  • 原文地址:https://www.cnblogs.com/winner/p/1242591.html
Copyright © 2011-2022 走看看