激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - asp.net 2.0里也可以用JSON的使用方法

asp.net 2.0里也可以用JSON的使用方法

2019-08-31 12:10服務器之家 ASP.NET教程

本人找到一份,可以在asp.net2.0里實現JSON方式傳送數據的方法。但是原方法,不能在數據中帶有{、}、[、]、"等,所以我做特意做了轉意。

全部代碼如下。 

復制代碼代碼如下:


/// <summary> 
/// JSON解析類 
/// </summary> 
public static class JSONConvert 

#region 全局變量 

private static JSONObject _json = new JSONObject();//寄存器 
private static readonly string _SEMICOLON = "@semicolon";//分號轉義符 
private static readonly string _COMMA = "@comma"; //逗號轉義符 

#endregion 

#region 字符串轉義 
/// <summary> 
/// 字符串轉義,將雙引號內的:和,分別轉成_SEMICOLON和_COMMA 
/// </summary> 
/// <param name="text"></param> 
/// <returns></returns> 
private static string StrEncode(string text) 

MatchCollection matches = Regex.Matches(text, "\\\"[^\\\"]+\\\""); 
foreach (Match match in matches) 

text = text.Replace(match.Value, match.Value.Replace(":", _SEMICOLON).Replace(",", _COMMA)); 


return text; 


/// <summary> 
/// 字符串轉義,將_SEMICOLON和_COMMA分別轉成:和, 
/// </summary> 
/// <param name="text"></param> 
/// <returns></returns> 
private static string StrDecode(string text) 

return text.Replace(_SEMICOLON, ":").Replace(_COMMA, ","); 


#endregion 

#region JSON最小單元解析 

/// <summary> 
/// 最小對象轉為JSONObject 
/// </summary> 
/// <param name="text"></param> 
/// <returns></returns> 
private static JSONObject DeserializeSingletonObject(string text) 

JSONObject jsonObject = new JSONObject(); 

MatchCollection matches = Regex.Matches(text, "(\\\"(?<key>[^\\\"]+)\\\":\\\"(?<value>[^,\\\"]+)\\\")|(\\\"(?<key>[^\\\"]+)\\\":(?<value>[^,\\\"\\}]+))"); 
foreach (Match match in matches) 

string value = match.Groups["value"].Value; 
jsonObject.Add(match.Groups["key"].Value, _json.ContainsKey(value) ? _json[value] : StrDecode(value)); 


return jsonObject; 


/// <summary> 
/// 最小數組轉為JSONArray 
/// </summary> 
/// <param name="text"></param> 
/// <returns></returns> 
private static JSONArray DeserializeSingletonArray(string text) 

JSONArray jsonArray = new JSONArray(); 

MatchCollection matches = Regex.Matches(text, "(\\\"(?<value>[^,\\\"]+)\")|(?<value>[^,\\[\\]]+)"); 
foreach (Match match in matches) 

string value = match.Groups["value"].Value; 
jsonArray.Add(_json.ContainsKey(value) ? _json[value] : StrDecode(value)); 


return jsonArray; 


/// <summary> 
/// 反序列化 
/// </summary> 
/// <param name="text"></param> 
/// <returns></returns> 
private static string Deserialize(string text) 

text = StrEncode(text);//轉義;和, 

int count = 0; 
string key = string.Empty; 
string pattern = "(\\{[^\\[\\]\\{\\}]+\\})|(\\[[^\\[\\]\\{\\}]+\\])"; 

while (Regex.IsMatch(text, pattern)) 

MatchCollection matches = Regex.Matches(text, pattern); 
foreach (Match match in matches) 

key = "___key" + count + "___"; 

if (match.Value.Substring(0, 1) == "{") 
_json.Add(key, DeserializeSingletonObject(match.Value)); 
else 
_json.Add(key, DeserializeSingletonArray(match.Value)); 

text = text.Replace(match.Value, key); 

count++; 


return text; 


#endregion 

#region 公共接口 

/// <summary> 
/// 序列化JSONObject對象 
/// </summary> 
/// <param name="text"></param> 
/// <returns></returns> 
public static JSONObject DeserializeObject(string text) 

_json = new JSONObject(); 
return _json[Deserialize(text)] as JSONObject; 


/// <summary> 
/// 序列化JSONArray對象 
/// </summary> 
/// <param name="text"></param> 
/// <returns></returns> 
public static JSONArray DeserializeArray(string text) 

_json = new JSONObject(); 
return _json[Deserialize(text)] as JSONArray; 


/// <summary> 
/// 反序列化JSONObject對象 
/// </summary> 
/// <param name="jsonObject"></param> 
/// <returns></returns> 
public static string SerializeObject(JSONObject jsonObject) 

StringBuilder sb = new StringBuilder(); 
sb.Append("{"); 
foreach (KeyValuePair<string, object> kvp in jsonObject) 

if (kvp.Value is JSONObject) 

sb.Append(string.Format("\"{0}\":{1},", kvp.Key, SerializeObject((JSONObject)kvp.Value))); 

else if (kvp.Value is JSONArray) 

sb.Append(string.Format("\"{0}\":{1},", kvp.Key, SerializeArray((JSONArray)kvp.Value))); 

else if (kvp.Value is String) 

sb.Append(string.Format("\"{0}\":\"{1}\",", kvp.Key, kvp.Value)); 

else 

sb.Append(string.Format("\"{0}\":\"{1}\",", kvp.Key, "")); 


if (sb.Length > 1) 
sb.Remove(sb.Length - 1, 1); 
sb.Append("}"); 
return sb.ToString(); 


/// <summary> 
/// 反序列化JSONArray對象 
/// </summary> 
/// <param name="jsonArray"></param> 
/// <returns></returns> 
public static string SerializeArray(JSONArray jsonArray) 

StringBuilder sb = new StringBuilder(); 
sb.Append("["); 
for (int i = 0; i < jsonArray.Count; i++) 

if (jsonArray[i] is JSONObject) 

sb.Append(string.Format("{0},", SerializeObject((JSONObject)jsonArray[i]))); 

else if (jsonArray[i] is JSONArray) 

sb.Append(string.Format("{0},", SerializeArray((JSONArray)jsonArray[i]))); 

else if (jsonArray[i] is String) 

sb.Append(string.Format("\"{0}\",", jsonArray[i])); 

else 

sb.Append(string.Format("\"{0}\",", "")); 



if (sb.Length > 1) 
sb.Remove(sb.Length - 1, 1); 
sb.Append("]"); 
return sb.ToString(); 

#endregion 


/// <summary> 
/// 取出JSON對象類 
/// </summary> 
public class JSONObject : Dictionary<string, object> 

public new void Add(string key, object value) 

System.Type t = value.GetType(); 

if (t.Name == "String") 

value = JsonEncode.StrEncodeForDeserialize(value.ToString()); 


base.Add(key, value); 



/// <summary> 
/// 取出JSON數組類 
/// </summary> 
public class JSONArray : List<object> 

public new void Add(object item) 

System.Type t = item.GetType(); 

if (t.Name == "String") 

item = JsonEncode.StrEncodeForDeserialize(item.ToString()); 


base.Add(item); 



/// <summary> 
/// 字符串轉義,將"{"、"}"、""" 
/// </summary> 
public class JsonEncode 

public static readonly string _LEFTBRACES = "@leftbraces";//"{"轉義符 
public static readonly string _RIGHTBRACES = "@rightbraces";//"}"轉義符 
public static readonly string _LEFTBRACKETS = "@leftbrackets";//"["轉義符 
public static readonly string _RIGHTBRACKETS = "@rightbrackets";//"]"轉義符 
public static readonly string _DOUBLEQUOTATIONMARKS = "@doubleQuotationMarks";//"""轉義符 


#region 字符串轉義 
/// <summary> 
/// 字符串轉義,將"{"、"}"、""",分別轉換_LEFTBRACES、_RIGHTBRACES、_DOUBLEQUOTATIONMARKS 
/// </summary> 
/// <param name="text"></param> 
/// <returns></returns> 
public static string StrEncodeForDeserialize(string text) 

return text 
.Replace("{", _LEFTBRACES) 
.Replace("}", _RIGHTBRACES) 
.Replace("[", _LEFTBRACKETS) 
.Replace("]", _RIGHTBRACKETS) 
.Replace("\"", _DOUBLEQUOTATIONMARKS); 


/// <summary> 
/// 字符串轉義,將_LEFTBRACES、_RIGHTBRACES、_DOUBLEQUOTATIONMARKS,分別轉換"{"、"}"、""" 
/// </summary> 
/// <param name="text"></param> 
/// <returns></returns> 
public static string StrDecodeForDeserialize(string text) 

return text.Replace(_LEFTBRACES, "{") 
.Replace(_RIGHTBRACES, "}") 
.Replace(_LEFTBRACKETS, "[") 
.Replace(_RIGHTBRACKETS, "]") 
.Replace(_DOUBLEQUOTATIONMARKS, "\""); 

#endregion 


 最后要說的,就是比較馬煩的是,現在要取JSON里的值要用到下面的方法

復制代碼代碼如下:


this.Label2.Text = JsonEncode.StrDecodeForDeserialize(json["domain"].ToString()); 
this.Label2.Text = JsonEncode.StrDecodeForDeserialize(((JSONArray)json["years"])[4].ToString());

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久久久久久久浪潮精品 | 99成人精品视频 | 久久久久久中文字幕 | 国产精品久久久毛片 | 中文字幕专区高清在线观看 | 精品亚洲一区二区三区 | 多男操一女视频 | 黄色男女视频 | 欧美日韩大片在线观看 | 青草久久av| 久久久久久免费免费 | 特黄一区二区三区 | www国产成人免费观看视频 | 国产精品久久久久久久四虎电影 | 污版视频在线观看 | 亚洲一区成人在线 | 91免费无限观看 | 久久久久久久久久久久久九 | 欧美五月婷婷 | 欧美成人小视频 | 欧美激情第一区 | 黄网站在线观 | 久久色播 | 亚州综合图片 | 激情宗合网| 黄在线免费看 | 久久久精品视 | 日本一级黄色毛片 | 操皮视频 | 国产精品成人一区二区三区电影毛片 | 九草网 | 久久久综 | 欧美精品久久久久久久久老牛影院 | 国产一区视频在线免费观看 | jizzjizzjizz少妇| 欧美特黄一级高清免费的香蕉 | 国产精品一区2区3区 | 亚欧在线免费观看 | 久草在线视频免费播放 | 二区视频 | 今井夏帆av一区二区 |