亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C# JsonHelper 操作輔助類,拿來直接用

2020-01-24 01:10:18
字體:
來源:轉載
供稿:網友

四個主要操作類:JsonConverter 、JsonHelper 、JsonSplit 、AjaxResult

一、JsonConverter:

自定義查詢對象轉換動態類、object動態類轉換json包、json轉換object動態類、DataReader轉換為Json、DataSet轉換為Json、DataTable轉成Json、Datatable轉換為Json 、格式化字符型日期型布爾型、過濾特殊字符等

using System;using System.Collections.Generic;using System.Text;using System.Data;using System.Linq;using System.Web.Script.Serialization;using System.Collections;namespace Common{  public class JsonConverter  {        /// <summary>    /// 自定義查詢對象轉換動態類    /// add yuangang by 2015-05-19    /// </summary>    /// <param name="obj"></param>    /// <returns></returns>    public static dynamic JsonClass(object obj)     {      return ConvertJson(Serialize(obj, true));    }    /// <summary>    /// object動態類轉換json包    /// add yuangang by 2015-05-19    /// </summary>    /// <param name="obj">對象</param>    /// <param name="DateConvert">時間戳是否轉換成日期類型</param>    /// <returns></returns>    public static string Serialize(object obj, bool DateConvert = false)    {      JavaScriptSerializer jss = new JavaScriptSerializer();      var str = jss.Serialize(obj);      if (DateConvert)      {        str = System.Text.RegularExpressions.Regex.Replace(str, @"http:///Date/((/d+)/)///", match =>        {          DateTime dt = new DateTime(1970, 1, 1);          dt = dt.AddMilliseconds(long.Parse(match.Groups[1].Value));          dt = dt.ToLocalTime();          return dt.ToString("yyyy-MM-dd HH:mm:ss");        });      }      return str;    }    /// <summary>    /// json轉換object動態類    /// add yuangang by 2015-05-19    /// </summary>    /// <param name="json"></param>    /// <returns></returns>    public static dynamic ConvertJson(string json)    {      JavaScriptSerializer jss = new JavaScriptSerializer();      jss.RegisterConverters(new JavaScriptConverter[] { new DynamicJsonConverter() });      dynamic dy = jss.Deserialize(json, typeof(object)) as dynamic;      return dy;    }    /// <summary>      /// DataReader轉換為Json      /// </summary>      /// <param name="dataReader">DataReader對象</param>      /// <returns>Json字符串</returns>      public static string ToJson(IDataReader dataReader)    {      try      {        StringBuilder jsonString = new StringBuilder();        jsonString.Append("[");        while (dataReader.Read())        {          jsonString.Append("{");          for (int i = 0; i < dataReader.FieldCount; i++)          {            Type type = dataReader.GetFieldType(i);            string strKey = dataReader.GetName(i);            string strValue = dataReader[i].ToString();            jsonString.Append("/"" + strKey + "/":");            strValue = StringFormat(strValue, type);            if (i < dataReader.FieldCount - 1)            {              jsonString.Append(strValue + ",");            }            else            {              jsonString.Append(strValue);            }          }          jsonString.Append("},");        }        if (!dataReader.IsClosed)        {          dataReader.Close();        }        jsonString.Remove(jsonString.Length - 1, 1);        jsonString.Append("]");        if (jsonString.Length == 1)        {          return "[]";        }        return jsonString.ToString();      }      catch (Exception ex)      {        throw ex;      }    }    /// <summary>      /// DataSet轉換為Json      /// add yuangang by 2015-05-19    /// </summary>      /// <param name="dataSet">DataSet對象</param>      /// <returns>Json字符串</returns>      public static string ToJson(DataSet dataSet)    {      string jsonString = "{";      foreach (DataTable table in dataSet.Tables)      {        jsonString += "/"" + table.TableName + "/":" + ToJson(table) + ",";      }      jsonString = jsonString.TrimEnd(',');      return jsonString + "}";    }    /// <summary>     /// DataTable轉成Json      /// add yuangang by 2015-05-19    /// </summary>     /// <param name="jsonName"></param>     /// <param name="dt"></param>     /// <returns></returns>     public static string ToJson(DataTable dt, string jsonName)    {      StringBuilder Json = new StringBuilder();      if (string.IsNullOrEmpty(jsonName))        jsonName = dt.TableName;      Json.Append("{/"" + jsonName + "/":[");      if (dt.Rows.Count > 0)      {        for (int i = 0; i < dt.Rows.Count; i++)        {          Json.Append("{");          for (int j = 0; j < dt.Columns.Count; j++)          {            Type type = dt.Rows[i][j].GetType();            Json.Append("/"" + dt.Columns[j].ColumnName.ToString() + "/":" + StringFormat(dt.Rows[i][j] is DBNull ? string.Empty : dt.Rows[i][j].ToString(), type));            if (j < dt.Columns.Count - 1)            {              Json.Append(",");            }          }          Json.Append("}");          if (i < dt.Rows.Count - 1)          {            Json.Append(",");          }        }      }      Json.Append("]}");      return Json.ToString();    }    /// <summary>      /// Datatable轉換為Json      /// add yuangang by 2015-05-19    /// </summary>      /// <param name="table">Datatable對象</param>      /// <returns>Json字符串</returns>      public static string ToJson(DataTable dt)    {      StringBuilder jsonString = new StringBuilder();      jsonString.Append("[");      DataRowCollection drc = dt.Rows;      for (int i = 0; i < drc.Count; i++)      {        jsonString.Append("{");        for (int j = 0; j < dt.Columns.Count; j++)        {          string strKey = dt.Columns[j].ColumnName;          string strValue = drc[i][j].ToString();          Type type = dt.Columns[j].DataType;          jsonString.Append("/"" + strKey + "/":");          strValue = StringFormat(strValue, type);          if (j < dt.Columns.Count - 1)          {            jsonString.Append(strValue + ",");          }          else          {            jsonString.Append(strValue);          }        }        jsonString.Append("},");      }      jsonString.Remove(jsonString.Length - 1, 1);      jsonString.Append("]");      if (jsonString.Length == 1)      {        return "[]";      }      return jsonString.ToString();    }     /// <summary>     /// 格式化字符型、日期型、布爾型     /// add yuangang by 2015-05-19    /// </summary>     /// <param name="str"></param>     /// <param name="type"></param>     /// <returns></returns>     private static string StringFormat(string str, Type type)    {      if (type != typeof(string) && string.IsNullOrEmpty(str))      {        str = "/"" + str + "/"";      }      else if (type == typeof(string))      {        str = String2Json(str);        str = "/"" + str + "/"";      }      else if (type == typeof(DateTime))      {        str = "/"" + str + "/"";      }      else if (type == typeof(bool))      {        str = str.ToLower();      }      else if (type == typeof(byte[]))      {        str = "/"" + str + "/"";      }      else if (type == typeof(Guid))      {        str = "/"" + str + "/"";      }      return str;    }    /// <summary>     /// 過濾特殊字符     /// add yuangang by 2015-05-19    /// </summary>     /// <param name="s"></param>     /// <returns></returns>     public static string String2Json(String s)    {      StringBuilder sb = new StringBuilder();      for (int i = 0; i < s.Length; i++)      {        char c = s.ToCharArray()[i];        switch (c)        {          case '/"':            sb.Append("http:///""); break;          case '//':            sb.Append("http:////"); break;          case '/':            sb.Append("http:///"); break;          case '/b':            sb.Append("http://b"); break;          case '/f':            sb.Append("http://f"); break;          case '/n':            sb.Append("http://n"); break;          case '/r':            sb.Append("http://r"); break;          case '/t':            sb.Append("http://t"); break;          case '/v':            sb.Append("http://v"); break;          case '/0':            sb.Append("http://0"); break;          default:            sb.Append(c); break;        }      }      return sb.ToString();    }    public static string GetDataGridJsonByDataSet(DataSet ds, string totalProperty, string root)    {      return GetDataGridJsonByDataTable(ds.Tables[0], totalProperty, root);    }    public static string GetDataGridJsonByDataTable(DataTable dt, string totalProperty, string root)    {      StringBuilder jsonBuilder = new StringBuilder();      jsonBuilder.Append("({/"" + totalProperty + "/":/"" + dt.Rows.Count + "/",");      jsonBuilder.Append("/"");      jsonBuilder.Append(root);      jsonBuilder.Append("/":[");      for (int i = 0; i < dt.Rows.Count; i++)      {        jsonBuilder.Append("{");        for (int j = 0; j < dt.Columns.Count; j++)        {          jsonBuilder.Append("/"");          jsonBuilder.Append(dt.Columns[j].ColumnName);          jsonBuilder.Append("/":/"");          jsonBuilder.Append(dt.Rows[i][j].ToString());          jsonBuilder.Append("/",");        }        jsonBuilder.Remove(jsonBuilder.Length - 1, 1);        jsonBuilder.Append("},");      }      jsonBuilder.Remove(jsonBuilder.Length - 1, 1);      jsonBuilder.Append("]");      jsonBuilder.Append("})");      return jsonBuilder.ToString();    }    public static string GetTreeJsonByDataSet(DataSet ds)    {      return GetTreeJsonByDataTable(ds.Tables[0]);    }    public static string GetTreeJsonByDataTable(DataTable dataTable)    {      DataTable dt = FormatDataTableForTree(dataTable);      StringBuilder jsonBuilder = new StringBuilder();      jsonBuilder.Append("[");      for (int i = 0; i < dt.Rows.Count; i++)      {        jsonBuilder.Append("{");        for (int j = 0; j < dt.Columns.Count; j++)        {          jsonBuilder.Append("/'");          if (dt.Columns[j].ColumnName == "leaf")          {            string leafValue = dt.Rows[i][j].ToString();            if (!string.IsNullOrEmpty(leafValue))            {              jsonBuilder.Append(dt.Columns[j].ColumnName);              jsonBuilder.Append("/':/'");              jsonBuilder.Append(dt.Rows[i][j].ToString());              jsonBuilder.Append("/',");            }            else            {              jsonBuilder.Remove(jsonBuilder.Length - 1, 1);            }          }          else if (dt.Columns[j].ColumnName == "customUrl")          {            jsonBuilder.Remove(jsonBuilder.Length - 1, 1);            jsonBuilder.Append(dt.Columns[j].ColumnName);            jsonBuilder.Append(":/'");            jsonBuilder.Append(dt.Rows[i][j].ToString());            jsonBuilder.Append("/',");          }          else          {            jsonBuilder.Append(dt.Columns[j].ColumnName);            jsonBuilder.Append("/':/'");            jsonBuilder.Append(dt.Rows[i][j].ToString());            jsonBuilder.Append("/',");          }        }        jsonBuilder.Remove(jsonBuilder.Length - 1, 1);        jsonBuilder.Append("},");      }      jsonBuilder.Remove(jsonBuilder.Length - 1, 1);      jsonBuilder.Append("]");      return jsonBuilder.ToString();    }    private static DataTable FormatDataTableForTree(DataTable dt)    {      DataTable dtTree = new DataTable();      dtTree.Columns.Add("id", typeof(string));      dtTree.Columns.Add("text", typeof(string));      dtTree.Columns.Add("leaf", typeof(string));      dtTree.Columns.Add("cls", typeof(string));      dtTree.Columns.Add("customUrl", typeof(string));      dtTree.AcceptChanges();      for (int i = 0; i < dt.Rows.Count; i++)      {        DataRow drTree = dtTree.NewRow();        drTree["id"] = dt.Rows[i]["id"].ToString();        drTree["text"] = dt.Rows[i]["text"].ToString();        if (dt.Rows[i]["leaf"].ToString() == "Y")        {          drTree["leaf"] = "true";          drTree["cls"] = "file";        }        else        {          drTree["cls"] = "folder";        }        drTree["customUrl"] = dt.Rows[i]["customUrl"].ToString();        dtTree.Rows.Add(drTree);      }      return dtTree;    }   }  /// <summary>  /// 動態JSON解析  /// add yuangang by 2015-05-19  /// </summary>  public class DynamicJsonObject : System.Dynamic.DynamicObject  {    private IDictionary<string, object> Dictionary { get; set; }    public DynamicJsonObject(IDictionary<string, object> dictionary)    {      this.Dictionary = dictionary;    }    public override bool TryGetMember(System.Dynamic.GetMemberBinder binder, out object result)    {      result = this.Dictionary[binder.Name];      if (result is IDictionary<string, object>)      {        result = new DynamicJsonObject(result as IDictionary<string, object>);      }      else if (result is ArrayList && (result as ArrayList) is IDictionary<string, object>)      {        result = new List<DynamicJsonObject>((result as ArrayList).ToArray().Select(x => new DynamicJsonObject(x as IDictionary<string, object>)));      }      else if (result is ArrayList)      {        result = new List<object>((result as ArrayList).ToArray());      }      return this.Dictionary.ContainsKey(binder.Name);    }  }  /// <summary>  /// 動態JSON轉換  /// add yuangang by 2015-05-19  /// </summary>  public class DynamicJsonConverter : JavaScriptConverter  {    public override object Deserialize(IDictionary<string, object> dictionary, Type type, JavaScriptSerializer serializer)    {      if (dictionary == null)        throw new ArgumentNullException("dictionary");      if (type == typeof(object))      {        return new DynamicJsonObject(dictionary);      }      return null;    }    public override IDictionary<string, object> Serialize(object obj, JavaScriptSerializer serializer)    {      throw new NotImplementedException();    }    public override IEnumerable<Type> SupportedTypes    {      get { return new System.Collections.ObjectModel.ReadOnlyCollection<Type>(new List<Type>(new Type[] { typeof(object) })); }    }  }}

二、JsonHelper:json的輔助類

using System.Collections.Generic;using System.Text;using Newtonsoft.Json;using System.Runtime.Serialization.Json;using System.IO;namespace Common{  /// <summary>  /// 提供了一個關于json的輔助類  /// </summary>  public class JsonHelper  {    #region Method    /// <summary>    /// 類對像轉換成json格式    /// </summary>     /// <returns></returns>    public static string ToJson(object t)    {     return JsonConvert.SerializeObject(t, Newtonsoft.Json.Formatting.Indented, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Include });    }    /// <summary>    /// 類對像轉換成json格式    /// </summary>    /// <param name="t"></param>    /// <param name="HasNullIgnore">是否忽略NULL值</param>    /// <returns></returns>    public static string ToJson(object t, bool HasNullIgnore)    {      if (HasNullIgnore)        return JsonConvert.SerializeObject(t, Newtonsoft.Json.Formatting.Indented, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore });      else        return ToJson(t);    }    /// <summary>    /// json格式轉換    /// </summary>    /// <typeparam name="T"></typeparam>    /// <param name="strJson"></param>    /// <returns></returns>    public static T FromJson<T>(string strJson) where T : class    {      if (!strJson.IsNullOrEmpty())        return JsonConvert.DeserializeObject<T>(strJson);      return null;    }    /// <summary>    /// 功能描述:將List轉換為Json    /// </summary>    /// <param name="a"></param>    /// <returns></returns>    public static string ListToJson(IList<object> a)    {      DataContractJsonSerializer json = new DataContractJsonSerializer(a.GetType());      string szJson = "";      //序列化      using (MemoryStream stream = new MemoryStream())      {        json.WriteObject(stream, a);        szJson = Encoding.UTF8.GetString(stream.ToArray());      }      return szJson;    }    #endregion    #region Property    /// <summary>    /// 數據狀態    /// </summary>    public string Status { get; set; }    /// <summary>    /// 提示信息    /// </summary>    public string Msg { get; set; }    /// <summary>    /// 回傳URL    /// </summary>    public string ReUrl { get; set; }    /// <summary>    /// 數據包    /// </summary>    public object Data { get; set; }    #endregion  }}

三、JsonSplit:判斷字符串是否為Json

using System;using System.Collections.Generic;using System.Linq;using System.Web;namespace Common{  /// <summary>  /// 判斷字符串是否為JSON  /// </summary>  public class JsonSplit  {    private static bool IsJsonStart(ref string json)    {      if (!string.IsNullOrEmpty(json))      {        json = json.Trim('/r', '/n', ' ');        if (json.Length > 1)        {          char s = json[0];          char e = json[json.Length - 1];          return (s == '{' && e == '}') || (s == '[' && e == ']');        }      }      return false;    }    public static bool IsJson(string json)    {      int errIndex;      return IsJson(json, out errIndex);    }    public static bool IsJson(string json, out int errIndex)    {      errIndex = 0;      if (IsJsonStart(ref json))      {        CharState cs = new CharState();        char c;        for (int i = 0; i < json.Length; i++)        {          c = json[i];          if (SetCharState(c, ref cs) && cs.childrenStart)//設置關鍵符號狀態。          {            string item = json.Substring(i);            int err;            int length = GetValueLength(item, true, out err);            cs.childrenStart = false;            if (err > 0)            {              errIndex = i + err;              return false;            }            i = i + length - 1;          }          if (cs.isError)          {            errIndex = i;            return false;          }        }        return !cs.arrayStart && !cs.jsonStart;      }      return false;    }    /// <summary>    /// 獲取值的長度(當Json值嵌套以"{"或"["開頭時)    /// </summary>    private static int GetValueLength(string json, bool breakOnErr, out int errIndex)    {      errIndex = 0;      int len = 0;      if (!string.IsNullOrEmpty(json))      {        CharState cs = new CharState();        char c;        for (int i = 0; i < json.Length; i++)        {          c = json[i];          if (!SetCharState(c, ref cs))//設置關鍵符號狀態。          {            if (!cs.jsonStart && !cs.arrayStart)//json結束,又不是數組,則退出。            {              break;            }          }          else if (cs.childrenStart)//正常字符,值狀態下。          {            int length = GetValueLength(json.Substring(i), breakOnErr, out errIndex);//遞歸子值,返回一個長度。。。            cs.childrenStart = false;            cs.valueStart = 0;            //cs.state = 0;            i = i + length - 1;          }          if (breakOnErr && cs.isError)          {            errIndex = i;            return i;          }          if (!cs.jsonStart && !cs.arrayStart)//記錄當前結束位置。          {            len = i + 1;//長度比索引+1            break;          }        }      }      return len;    }    /// <summary>    /// 字符狀態    /// </summary>    private class CharState    {      internal bool jsonStart = false;//以 "{"開始了...      internal bool setDicValue = false;// 可以設置字典值了。      internal bool escapeChar = false;//以"/"轉義符號開始了      /// <summary>      /// 數組開始【僅第一開頭才算】,值嵌套的以【childrenStart】來標識。      /// </summary>      internal bool arrayStart = false;//以"[" 符號開始了      internal bool childrenStart = false;//子級嵌套開始了。      /// <summary>      /// 【0 初始狀態,或 遇到“,”逗號】;【1 遇到“:”冒號】      /// </summary>      internal int state = 0;      /// <summary>      /// 【-1 取值結束】【0 未開始】【1 無引號開始】【2 單引號開始】【3 雙引號開始】      /// </summary>      internal int keyStart = 0;      /// <summary>      /// 【-1 取值結束】【0 未開始】【1 無引號開始】【2 單引號開始】【3 雙引號開始】      /// </summary>      internal int valueStart = 0;      internal bool isError = false;//是否語法錯誤。      internal void CheckIsError(char c)//只當成一級處理(因為GetLength會遞歸到每一個子項處理)      {        if (keyStart > 1 || valueStart > 1)        {          return;        }        //示例 ["aa",{"bbbb":123,"fff","ddd"}]         switch (c)        {          case '{'://[{ "[{A}]":[{"[{B}]":3,"m":"C"}]}]            isError = jsonStart && state == 0;//重復開始錯誤 同時不是值處理。            break;          case '}':            isError = !jsonStart || (keyStart != 0 && state == 0);//重復結束錯誤 或者 提前結束{"aa"}。正常的有{}            break;          case '[':            isError = arrayStart && state == 0;//重復開始錯誤            break;          case ']':            isError = !arrayStart || jsonStart;//重復開始錯誤 或者 Json 未結束            break;          case '"':          case '/'':            isError = !(jsonStart || arrayStart); //json 或數組開始。            if (!isError)            {              //重復開始 [""",{"" "}]              isError = (state == 0 && keyStart == -1) || (state == 1 && valueStart == -1);            }            if (!isError && arrayStart && !jsonStart && c == '/'')//['aa',{}]            {              isError = true;            }            break;          case ':':            isError = !jsonStart || state == 1;//重復出現。            break;          case ',':            isError = !(jsonStart || arrayStart); //json 或數組開始。            if (!isError)            {              if (jsonStart)              {                isError = state == 0 || (state == 1 && valueStart > 1);//重復出現。              }              else if (arrayStart)//["aa,] [,] [{},{}]              {                isError = keyStart == 0 && !setDicValue;              }            }            break;          case ' ':          case '/r':          case '/n'://[ "a",/r/n{} ]          case '/0':          case '/t':            break;          default: //值開頭。。            isError = (!jsonStart && !arrayStart) || (state == 0 && keyStart == -1) || (valueStart == -1 && state == 1);//            break;        }        //if (isError)        //{        //}      }    }    /// <summary>    /// 設置字符狀態(返回true則為關鍵詞,返回false則當為普通字符處理)    /// </summary>    private static bool SetCharState(char c, ref CharState cs)    {      cs.CheckIsError(c);      switch (c)      {        case '{'://[{ "[{A}]":[{"[{B}]":3,"m":"C"}]}]          #region 大括號          if (cs.keyStart <= 0 && cs.valueStart <= 0)          {            cs.keyStart = 0;            cs.valueStart = 0;            if (cs.jsonStart && cs.state == 1)            {              cs.childrenStart = true;            }            else            {              cs.state = 0;            }            cs.jsonStart = true;//開始。            return true;          }          #endregion          break;        case '}':          #region 大括號結束          if (cs.keyStart <= 0 && cs.valueStart < 2 && cs.jsonStart)          {            cs.jsonStart = false;//正常結束。            cs.state = 0;            cs.keyStart = 0;            cs.valueStart = 0;            cs.setDicValue = true;            return true;          }          // cs.isError = !cs.jsonStart && cs.state == 0;          #endregion          break;        case '[':          #region 中括號開始          if (!cs.jsonStart)          {            cs.arrayStart = true;            return true;          }          else if (cs.jsonStart && cs.state == 1)          {            cs.childrenStart = true;            return true;          }          #endregion          break;        case ']':          #region 中括號結束          if (cs.arrayStart && !cs.jsonStart && cs.keyStart <= 2 && cs.valueStart <= 0)//[{},333]//這樣結束。          {            cs.keyStart = 0;            cs.valueStart = 0;            cs.arrayStart = false;            return true;          }          #endregion          break;        case '"':        case '/'':          #region 引號          if (cs.jsonStart || cs.arrayStart)          {            if (cs.state == 0)//key階段,有可能是數組["aa",{}]            {              if (cs.keyStart <= 0)              {                cs.keyStart = (c == '"' ? 3 : 2);                return true;              }              else if ((cs.keyStart == 2 && c == '/'') || (cs.keyStart == 3 && c == '"'))              {                if (!cs.escapeChar)                {                  cs.keyStart = -1;                  return true;                }                else                {                  cs.escapeChar = false;                }              }            }            else if (cs.state == 1 && cs.jsonStart)//值階段必須是Json開始了。            {              if (cs.valueStart <= 0)              {                cs.valueStart = (c == '"' ? 3 : 2);                return true;              }              else if ((cs.valueStart == 2 && c == '/'') || (cs.valueStart == 3 && c == '"'))              {                if (!cs.escapeChar)                {                  cs.valueStart = -1;                  return true;                }                else                {                  cs.escapeChar = false;                }              }            }          }          #endregion          break;        case ':':          #region 冒號          if (cs.jsonStart && cs.keyStart < 2 && cs.valueStart < 2 && cs.state == 0)          {            if (cs.keyStart == 1)            {              cs.keyStart = -1;            }            cs.state = 1;            return true;          }          // cs.isError = !cs.jsonStart || (cs.keyStart < 2 && cs.valueStart < 2 && cs.state == 1);          #endregion          break;        case ',':          #region 逗號 //["aa",{aa:12,}]          if (cs.jsonStart)          {            if (cs.keyStart < 2 && cs.valueStart < 2 && cs.state == 1)            {              cs.state = 0;              cs.keyStart = 0;              cs.valueStart = 0;              //if (cs.valueStart == 1)              //{              //  cs.valueStart = 0;              //}              cs.setDicValue = true;              return true;            }          }          else if (cs.arrayStart && cs.keyStart <= 2)          {            cs.keyStart = 0;            //if (cs.keyStart == 1)            //{            //  cs.keyStart = -1;            //}            return true;          }          #endregion          break;        case ' ':        case '/r':        case '/n'://[ "a",/r/n{} ]        case '/0':        case '/t':          if (cs.keyStart <= 0 && cs.valueStart <= 0) //cs.jsonStart &&           {            return true;//跳過空格。          }          break;        default: //值開頭。。          if (c == '//') //轉義符號          {            if (cs.escapeChar)            {              cs.escapeChar = false;            }            else            {              cs.escapeChar = true;              return true;            }          }          else          {            cs.escapeChar = false;          }          if (cs.jsonStart || cs.arrayStart) // Json 或數組開始了。          {            if (cs.keyStart <= 0 && cs.state == 0)            {              cs.keyStart = 1;//無引號的            }            else if (cs.valueStart <= 0 && cs.state == 1 && cs.jsonStart)//只有Json開始才有值。            {              cs.valueStart = 1;//無引號的            }          }          break;      }      return false;    }  }}

四、AjaxResult:前臺Ajax請求的統一返回結果類

using System.Web.Script.Serialization;namespace Common{  /// <summary>  /// 前臺Ajax請求的統一返回結果類  /// </summary>  public class AjaxResult  {    private AjaxResult()    {    }    private bool iserror = false;    /// <summary>    /// 是否產生錯誤    /// </summary>    public bool IsError { get { return iserror; } }    /// <summary>    /// 錯誤信息,或者成功信息    /// </summary>    public string Message { get; set; }    /// <summary>    /// 成功可能時返回的數據    /// </summary>    public object Data { get; set; }    #region Error    public static AjaxResult Error()    {      return new AjaxResult()      {        iserror = true      };    }    public static AjaxResult Error(string message)    {      return new AjaxResult()      {        iserror = true,        Message = message      };    }    #endregion    #region Success    public static AjaxResult Success()    {      return new AjaxResult()      {        iserror = false      };    }    public static AjaxResult Success(string message)    {      return new AjaxResult()      {        iserror = false,        Message = message      };    }    public static AjaxResult Success(object data)    {      return new AjaxResult()      {        iserror = false,        Data = data      };    }    public static AjaxResult Success(object data, string message)    {      return new AjaxResult()      {        iserror = false,        Data = data,        Message = message      };    }    #endregion    /// <summary>    /// 序列化    /// </summary>    /// <returns></returns>    public override string ToString()    {      return new JavaScriptSerializer().Serialize(this);    }  }}

常用的一些Json操作類,留著備用,需要的朋友的直接拿去用吧。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品18久久久久久首页狼| 国产啪精品视频网站| 亚洲国产黄色片| 欧美夫妻性视频| 亚洲欧美在线播放| 亚洲国产精品久久久久| 91久久国产精品91久久性色| 亚洲自拍小视频免费观看| 成人午夜在线影院| 色悠悠久久久久| 亚洲欧美激情精品一区二区| 91中文精品字幕在线视频| 亚洲精品乱码久久久久久按摩观| 91视频-88av| 色综合影院在线| 麻豆国产精品va在线观看不卡| 日韩欧美在线视频日韩欧美在线视频| 日韩视频第一页| 91av在线精品| 91性高湖久久久久久久久_久久99| 亚洲欧美国内爽妇网| 日韩高清人体午夜| www.日韩视频| 欧美性猛交xxxx免费看漫画| 黑人巨大精品欧美一区免费视频| 亚洲视屏在线播放| 日韩精品免费在线视频| 欧洲永久精品大片ww免费漫画| 色妞色视频一区二区三区四区| 午夜精品蜜臀一区二区三区免费| 色综合色综合网色综合| 影音先锋欧美在线资源| wwwwwwww亚洲| 精品久久国产精品| 欧美日韩在线另类| 性欧美xxxx交| 夜夜嗨av一区二区三区四区| 亚洲黄色成人网| 欧美伊久线香蕉线新在线| 中文字幕亚洲情99在线| 欧美日韩国产影院| 亚洲国产精品成人精品| 欧美日韩999| 性欧美暴力猛交69hd| 欧美大尺度电影在线观看| 亚洲自拍高清视频网站| 奇米4444一区二区三区| 欧美丰满少妇xxxxx做受| 国产在线观看一区二区三区| 97不卡在线视频| 欧美性受xxxx白人性爽| 日韩欧美在线中文字幕| 国产69精品99久久久久久宅男| 狠狠躁夜夜躁人人爽超碰91| 亚洲伊人第一页| 精品少妇一区二区30p| 国产精品久久久久久av福利| 久久免费视频网| 插插插亚洲综合网| 色婷婷av一区二区三区在线观看| 成人xvideos免费视频| 欧美黑人极品猛少妇色xxxxx| 在线国产精品视频| 国产精品亚洲美女av网站| 国产噜噜噜噜噜久久久久久久久| 亚洲在线免费看| 欧美大片va欧美在线播放| 国产欧美一区二区白浆黑人| 成人欧美一区二区三区在线湿哒哒| 欧美成人免费一级人片100| 欧美日韩国产第一页| 亚洲欧美日韩在线一区| 538国产精品视频一区二区| 欧美激情一区二区三区久久久| 国产成人亚洲精品| 欧美一区二区三区免费视| 欧美一区二区大胆人体摄影专业网站| 亚洲激情中文字幕| 91美女高潮出水| 亚洲成人精品久久| 日本一欧美一欧美一亚洲视频| 久久综合国产精品台湾中文娱乐网| 精品视频在线播放色网色视频| 亚洲aa在线观看| 亚洲国产日韩一区| 丰满岳妇乱一区二区三区| 亚洲网站在线播放| 国产精品久久久久久久电影| 91免费精品视频| 欧洲亚洲免费在线| 第一福利永久视频精品| 久久免费国产精品1| 久久久国产精彩视频美女艺术照福利| 国产成人一区二区三区小说| 欧美裸体视频网站| 色青青草原桃花久久综合| 欧美激情伊人电影| 日日噜噜噜夜夜爽亚洲精品| 久久全球大尺度高清视频| 亚洲japanese制服美女| 久久青草精品视频免费观看| 一本一本久久a久久精品牛牛影视| 成人有码视频在线播放| 中文字幕久精品免费视频| 久久精品国产69国产精品亚洲| 55夜色66夜色国产精品视频| 欧美高跟鞋交xxxxxhd| 亚洲香蕉伊综合在人在线视看| 青青草原成人在线视频| 日韩精品中文字幕在线播放| 国产成人精品综合| 国产成人精品优优av| 国产日本欧美一区| 久久99热精品这里久久精品| 26uuu另类亚洲欧美日本一| 成人中文字幕在线观看| 亚洲a级在线播放观看| 日韩欧美精品中文字幕| 人人爽久久涩噜噜噜网站| 久久精品国产综合| 清纯唯美亚洲综合| 国产成人精品久久二区二区91| 日本韩国在线不卡| 色婷婷亚洲mv天堂mv在影片| 欧美一级高清免费播放| 亚洲精品视频二区| 狠狠干狠狠久久| 日韩电影在线观看免费| 日本国产高清不卡| 久久久中精品2020中文| 成人在线中文字幕| 国产成人高清激情视频在线观看| 精品国产福利在线| 欧美老女人性视频| 日韩av在线一区| 亚洲第一二三四五区| 1769国产精品| 亚洲理论在线a中文字幕| 91久久精品国产91久久| 欧美激情第99页| 日韩精品在线影院| 亚洲精品自拍偷拍| 亚洲精品综合久久中文字幕| 久久九九亚洲综合| 日韩精品视频在线观看免费| 日韩精品在线看| 夜色77av精品影院| 亚洲精品在线视频| 亚洲美女性生活视频| 色综合久久中文字幕综合网小说| 69精品小视频| 欧美午夜精品久久久久久人妖| 亚洲精品美女在线观看播放| 伊人av综合网| 欧美成人精品在线视频| 日韩免费在线视频| 97在线免费观看视频| 国产精品aaa| 国产久一一精品| 欧美性猛交xxxx免费看| 国产婷婷97碰碰久久人人蜜臀| 欧美大片免费观看在线观看网站推荐| 97涩涩爰在线观看亚洲| 国产精品jizz在线观看麻豆|