📄 json.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 + -