⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 json.cs

📁 x2webcontrols
💻 CS
字号:
using System;
using System.Collections;
using System.Text;

namespace X2Design.Ajax
{
	public class Json
	{
		public string singleInfo = string.Empty;
		protected string _error = string.Empty;
		protected bool _success = true;

		public bool Success
		{
			get
			{
				return _success;
			}
			set
			{
				if (Success) _error = string.Empty;
				_success = value;
			}
		}
		public string Error
		{
			get
			{
				return _error;
			}
			set
			{
				Success = false;
				_error = value.Replace("\n", "").Replace("\r", "");
			}
		}

		public System.Collections.Hashtable Jsoas = new Hashtable();
		public System.Collections.Hashtable Jsos = new Hashtable();
		public void AddJsoa(string name, Jsoa jsoa)
		{
			Jsoas.Add(name, jsoa);
		}
		public void AddJso(string name, Jso jso)
		{
			Jsos.Add(name, jso);
		}
		protected Jsoa jsoa=new Jsoa();
		public Json()
		{
		}

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

		/// <summary>
		/// 添加data数组中一个元素(js对象)的一个名值对,例如
		///对于一个数组元素:{userName:"supNate",userId:"1"}
		///需执行两次AddItem:
		///AddItem("userName","supNate");
		///AddItem("userId","1");
		///最后执行
		///ItemOk();
		//表示数组元素添加完毕,底下的AddItem表示另一个数组元素的开始
		/// </summary>
		/// <param name="name"></param>
		/// <param name="_value"></param>

		public void AddItem(string name, string _value)
		{
			jsoa.AddItem(name, _value);
		}

		public void AddItem(string name, int _value)
		{
			jsoa.AddItem(name, _value);
		}

		public void AddItem_NoQuote(string name, string _value)
		{
			jsoa.AddItem_NoQuote(name, _value);
		}
		public void AddItem_NoQuote(string name, int _value)
		{
			jsoa.AddItem_NoQuote(name, _value);
		}

		//一个数组元素添加完毕(data数组)
		public void ItemOk()
		{
			jsoa.ItemOk();
		}

		//得到返回的json代码
		public override string ToString()
		{
			StringBuilder sb = new StringBuilder();
			sb.Append("({");
			//if (Jso != null)
			//{
			//    sb.Append("jso:");
			//    sb.Append(Jso.ToString());
			//    sb.Append(",");
			//}
			//if (Jsoa != null)
			//{
			//    sb.Append("jsoa:");
			//    sb.Append(Jsoa.ToString());
			//    sb.Append(",");
			//}
			foreach (string name in Jsoas.Keys)
			{
				sb.Append(name + ":");
				sb.Append(((Jsoa)Jsoas[name]).ToString());
				sb.Append(",");
			}
			foreach (string name in Jsos.Keys)
			{
				sb.Append(name + ":");
				sb.Append(((Jso)Jsos[name]).ToString());
				sb.Append(",");
			}
			sb.Append("success:" + _success.ToString().ToLower() + ",");
			sb.Append("error:\"" + _error.Replace("\"", "\\\"") + "\",");
			sb.Append("singleInfo:\"" + singleInfo.Replace("\"", "\\\"") + "\",");
			sb.Append("data:");
			sb.Append(jsoa.ToString());
			//for (int i = 0; i < arrData.Count; i++)
			//{
			//    ArrayList arr = (ArrayList)arrData[i];
			//    sb.Append("{");
			//    for (int j = 0; j < arr.Count; j += 2)
			//    {
			//        if (j == arr.Count) break;
			//        sb.Append((string)arr[j]);
			//        sb.Append(":");
			//        sb.Append(arr[j + 1].ToString());
			//        if (j < arr.Count - 2) sb.Append(",");
			//    }
			//    sb.Append("}");
			//    if (i < arrData.Count - 1) sb.Append(",");
			//}
			//sb.Append("]");
			sb.Append("})");
			return sb.ToString();
		}
	}


	/// <summary>
	/// JavaScript Object
	/// </summary>
	public class Jso
	{
		protected System.Collections.ArrayList arrDataItem = new ArrayList();

		public Jso()
		{
		}

		//重置,每次新生成一个jso对象时必须执行该方法
		public void Reset()
		{
			arrDataItem.Clear();
		}

		/// <summary>
		/// 添加data数组中一个元素(js对象)的一个名值对,例如
		///对于一个数组元素:{userName:"supNate",userId:"1"}
		///需执行两次AddItem:
		///AddItem("userName","supNate");
		///AddItem("userId","1");
		///最后执行
		///ItemOk();
		//表示数组元素添加完毕,底下的AddItem表示另一个数组元素的开始
		/// </summary>
		/// <param name="name"></param>
		/// <param name="_value"></param>

		public void AddItem(string name, string _value)
		{
			arrDataItem.Add(name);
			arrDataItem.Add("\"" + _value.ToString().Replace("\"", "\\\"") + "\"");

		}
		public void AddItem(string name, int _value)
		{
			this.AddItem(name, _value.ToString());
		}
		public void AddItem_NoQuote(string name, string _value)
		{
			arrDataItem.Add(name);
			arrDataItem.Add(_value);
		}
		public void AddItem_NoQuote(string name, int _value)
		{
			this.AddItem_NoQuote(name,_value.ToString());
		}


		//得到返回的jso代码
		public override string ToString()
		{
			StringBuilder sb = new StringBuilder();

			sb.Append("{");
			for (int j = 0; j < arrDataItem.Count; j += 2)
			{
				sb.Append((string)arrDataItem[j]);
				sb.Append(":");
				sb.Append(arrDataItem[j + 1].ToString());
				if (j < arrDataItem.Count - 2) sb.Append(",");
			}
			sb.Append("}");
			return sb.ToString();
		}
	}

	//类似[{},{}....]的js数组
	public class Jsoa
	{
		protected System.Collections.ArrayList arrData = new ArrayList();
		protected System.Collections.ArrayList arrDataItem = new ArrayList();
		protected Jso jso=new Jso();

		public Jsoa()
		{
		}

		//重置,每次新生成一个json对象时必须执行该方法
		public void Reset()
		{

			arrData.Clear();
			arrDataItem.Clear();
		}

		/// <summary>
		/// 添加data数组中一个元素(js对象)的一个名值对,例如
		///对于一个数组元素:{userName:"supNate",userId:"1"}
		///需执行两次AddItem:
		///AddItem("userName","supNate");
		///AddItem("userId","1");
		///最后执行
		///ItemOk();
		//表示数组元素添加完毕,底下的AddItem表示另一个数组元素的开始
		/// </summary>
		/// <param name="name"></param>
		/// <param name="_value"></param>

		public void AddItem(string name, string _value)
		{
			jso.AddItem(name, _value);
		}

		public void AddItem(string name, int _value)
		{
			jso.AddItem(name, _value);
		}

		public void AddItem_NoQuote(string name, string _value)
		{
			jso.AddItem_NoQuote(name, _value);
		}
		public void AddItem_NoQuote(string name, int _value)
		{
			jso.AddItem_NoQuote(name, _value);
		}

		//一个数组元素添加完毕(data数组)
		public void ItemOk()
		{
			arrData.Add(jso);
			jso = new Jso();
		}

		//得到返回的jsoa代码
		public override string ToString()
		{
			StringBuilder sb = new StringBuilder();

			sb.Append("[");

			for (int i = 0; i < arrData.Count; i++)
			{
				sb.Append(((Jso)arrData[i]).ToString());
				if (i < arrData.Count - 1) sb.Append(",");
			}
			sb.Append("]");
			return sb.ToString();
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -