精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

也談C#之Json,從Json字符串到類代碼

開發(fā) 后端 開發(fā)工具
自從.net 4.0開始,微軟提供了一整套的針對(duì)json進(jìn)行處理的方案。其中,就有如何把json字符串轉(zhuǎn)化成C#類對(duì)象,其實(shí)這段代碼很多人都清楚,大家也都認(rèn)識(shí),我就不多說,先貼代碼。

json轉(zhuǎn)類對(duì)象

自從.net 4.0開始,微軟提供了一整套的針對(duì)json進(jìn)行處理的方案。其中,就有如何把json字符串轉(zhuǎn)化成C#類對(duì)象,其實(shí)這段代碼很多人都清楚,大家也都認(rèn)識(shí),我就不多說,先貼代碼。

1、添加引用 System.Web.Extensions

  

2、測(cè)試一下代碼

  1. static class Program 
  2.     { 
  3.         /// <summary> 
  4.         /// 程序的主入口點(diǎn)。 
  5.         /// </summary> 
  6.         static void Main() 
  7.         { 
  8.             string jsonStr = "{\"name\":\"supperlitt\",\"age\":25,\"likes\":[\"C#\",\"asp.net\"]}"
  9.             JavaScriptSerializer js = new JavaScriptSerializer(); 
  10.             var model = js.Deserialize<TestModel>(jsonStr); 
  11.  
  12.             Console.WriteLine(model.name); 
  13.             Console.WriteLine(model.age); 
  14.             Console.WriteLine(string.Join(",", model.likes)); 
  15.  
  16.             Console.ReadLine(); 
  17.         } 
  18.  
  19.         public class TestModel 
  20.         { 
  21.             public string name { getset; } 
  22.  
  23.             public int age { getset; } 
  24.  
  25.             public List<string> likes { getset; } 
  26.         } 
  27.     } 

輸出內(nèi)容:

 

逆思考

由于代碼中,經(jīng)常會(huì)遇到需要處理json字符串(抓包比較頻繁)。每次遇到j(luò)son字符串,大多需要解析,又要進(jìn)行重復(fù)勞動(dòng),又需要定義一個(gè)C#對(duì)象類,有沒有一個(gè)比較好的辦法解決呢,不用每次都去寫代碼。自動(dòng)生成多好。。。

于是LZ思前,向后,想到了以前用過的一個(gè)微軟的類庫,應(yīng)該是微軟的一個(gè)Com庫。

      

#p#

 從json字符串自動(dòng)生成C#類

1、試著百度了一下,也嘗試了幾個(gè)可以使用的類。于是找到了

如下的代碼,能夠解析一個(gè)json字符串,成為一個(gè)C#的對(duì)象。

這里引用了,Microsoft.JScript.dll 類庫。

 

  1. Microsoft.JScript.Vsa.VsaEngine ve = Microsoft.JScript.Vsa.VsaEngine.CreateEngine(); 
  2. var m = Microsoft.JScript.Eval.JScriptEvaluate("(" + jsonStr + ")", ve); 

 2、發(fā)現(xiàn)這個(gè)m對(duì)象,其實(shí)是一個(gè)JSObject對(duì)象,內(nèi)部也可以繼續(xù)進(jìn)行細(xì)分,于是測(cè)試了種種,稍后會(huì)上源碼。先看測(cè)試效果吧。

我們隨便在web上面找了一個(gè)json字符串來進(jìn)行處理。當(dāng)然json要稍稍復(fù)雜一點(diǎn)。

  

ps:代碼如下

  1. using System; 
  2. using System.Collections.Generic; 
  3. using System.Linq; 
  4. using System.Text; 
  5. using Microsoft.JScript; 
  6.  
  7. namespace Common 
  8.     /// <summary> 
  9.     /// Json字符串zhuanh 
  10.     /// </summary> 
  11.     public class JsonHelper : IHelper 
  12.     { 
  13.         /// <summary> 
  14.         /// 是否添加get set 
  15.         /// </summary> 
  16.         private bool isAddGetSet = false
  17.  
  18.         /// <summary> 
  19.         /// 數(shù)據(jù)集合,臨時(shí) 
  20.         /// </summary> 
  21.         private List<AutoClass> dataList = new List<AutoClass>(); 
  22.  
  23.         public JsonHelper() 
  24.         { 
  25.         } 
  26.  
  27.         public JsonHelper(bool isAddGetSet) 
  28.         { 
  29.             this.isAddGetSet = isAddGetSet; 
  30.         } 
  31.  
  32.         /// <summary> 
  33.         /// 獲取類的字符串形式 
  34.         /// </summary> 
  35.         /// <param name="jsonStr"></param> 
  36.         /// <returns></returns> 
  37.         public string GetClassString(string jsonStr) 
  38.         { 
  39.             Microsoft.JScript.Vsa.VsaEngine ve = Microsoft.JScript.Vsa.VsaEngine.CreateEngine(); 
  40.             var m = Microsoft.JScript.Eval.JScriptEvaluate("(" + jsonStr + ")", ve); 
  41.  
  42.             int index = 0; 
  43.             var result = GetDicType((JSObject)m, ref index); 
  44.  
  45.             StringBuilder content = new StringBuilder(); 
  46.             foreach (var item in dataList) 
  47.             { 
  48.                 content.AppendFormat("\tpublic class {0}\r\n", item.CLassName); 
  49.                 content.AppendLine("\t{"); 
  50.                 foreach (var model in item.Dic) 
  51.                 { 
  52.                     if (isAddGetSet) 
  53.                     { 
  54.                         content.AppendFormat("\t\tpublic {0} {1}", model.Value, model.Key); 
  55.                         content.Append(" { get; set; }\r\n"); 
  56.                     } 
  57.                     else 
  58.                     { 
  59.                         content.AppendFormat("\t\tpublic {0} {1};\r\n", model.Value, model.Key); 
  60.                     } 
  61.  
  62.                     content.AppendLine(); 
  63.                 } 
  64.  
  65.                 content.AppendLine("\t}"); 
  66.                 content.AppendLine(); 
  67.             } 
  68.  
  69.             return content.ToString(); 
  70.         } 
  71.  
  72.         /// <summary> 
  73.         /// 獲取類型的字符串表示 
  74.         /// </summary> 
  75.         /// <param name="type"></param> 
  76.         /// <returns></returns> 
  77.         private string GetTypeString(Type type) 
  78.         { 
  79.             if (type == typeof(int)) 
  80.             { 
  81.                 return "int"
  82.             } 
  83.             else if (type == typeof(bool)) 
  84.             { 
  85.                 return "bool"
  86.             } 
  87.             else if (type == typeof(Int64)) 
  88.             { 
  89.                 return "long"
  90.             } 
  91.             else if (type == typeof(string)) 
  92.             { 
  93.                 return "string"
  94.             } 
  95.             else if (type == typeof(List<string>)) 
  96.             { 
  97.                 return "List<string>"
  98.             } 
  99.             else if (type == typeof(List<int>)) 
  100.             { 
  101.                 return "List<int>"
  102.             } 
  103.             else 
  104.             { 
  105.                 return "string"
  106.             } 
  107.         } 
  108.  
  109.         /// <summary> 
  110.         /// 獲取字典類型 
  111.         /// </summary> 
  112.         /// <returns></returns> 
  113.         private string GetDicType(JSObject jsObj, ref int index) 
  114.         { 
  115.             AutoClass classInfo = new AutoClass(); 
  116.  
  117.             var model = ((Microsoft.JScript.JSObject)(jsObj)).GetMembers(System.Reflection.BindingFlags.GetField); 
  118.             foreach (Microsoft.JScript.JSField item in model) 
  119.             { 
  120.                 string name = item.Name; 
  121.                 Type type = item.GetValue(item).GetType(); 
  122.                 if (type == typeof(ArrayObject)) 
  123.                 { 
  124.                     // 集合 
  125.                     string typeName = GetDicListType((ArrayObject)item.GetValue(item), ref index); 
  126.                     if (!string.IsNullOrEmpty(typeName)) 
  127.                     { 
  128.                         classInfo.Dic.Add(name, typeName); 
  129.                     } 
  130.                 } 
  131.                 else if (type == typeof(JSObject)) 
  132.                 { 
  133.                     // 單個(gè)對(duì)象 
  134.                     string typeName = GetDicType((JSObject)item.GetValue(item), ref index); 
  135.                     if (!string.IsNullOrEmpty(typeName)) 
  136.                     { 
  137.                         classInfo.Dic.Add(name, typeName); 
  138.                     } 
  139.                 } 
  140.                 else 
  141.                 { 
  142.                     classInfo.Dic.Add(name, GetTypeString(type)); 
  143.                 } 
  144.             } 
  145.  
  146.             index++; 
  147.             classInfo.CLassName = "Class" + index; 
  148.             dataList.Add(classInfo); 
  149.             return classInfo.CLassName; 
  150.         } 
  151.  
  152.         /// <summary> 
  153.         /// 讀取集合類型 
  154.         /// </summary> 
  155.         /// <param name="jsArray"></param> 
  156.         /// <param name="index"></param> 
  157.         /// <returns></returns> 
  158.         private string GetDicListType(ArrayObject jsArray, ref int index) 
  159.         { 
  160.             string name = string.Empty; 
  161.             if ((int)jsArray.length > 0) 
  162.             { 
  163.                 var item = jsArray[0]; 
  164.                 var type = item.GetType(); 
  165.                 if (type == typeof(JSObject)) 
  166.                 { 
  167.                     name = "List<" + GetDicType((JSObject)item, ref index) + ">"
  168.                 } 
  169.                 else 
  170.                 { 
  171.                     name = "List<" + GetTypeString(type) + ">"
  172.                 } 
  173.             } 
  174.  
  175.             return name; 
  176.         } 
  177.     } 
  178.  
  179.     public class AutoClass 
  180.     { 
  181.         public string CLassName { getset; } 
  182.  
  183.         private Dictionary<stringstring> dic = new Dictionary<stringstring>(); 
  184.  
  185.         public Dictionary<stringstring> Dic 
  186.         { 
  187.             get 
  188.             { 
  189.                 return this.dic; 
  190.             } 
  191.             set 
  192.             { 
  193.                 this.dic = value; 
  194.             } 
  195.         } 
  196.     } 

 調(diào)用方式:

 

  1. JsonHelper helper = new JsonHelper(true); 
  2. try 
  3.    this.txtOutPut.Text = helper.GetClassString("json字符串"); 
  4. catch 
  5.    this.txtOutPut.Text = "輸入內(nèi)容不符合規(guī)范..."
  6. }

 ***如果dudu允許的話,我再附上一個(gè)測(cè)試地址吧:http://www.51debug.com/tool/JsonToCharpCode.aspx

 博客也寫了幾次了,不過每次都寫得比較濫,看著不舒服,這次用心寫了一下,歡迎大家拍磚或提供更好的建議。

責(zé)任編輯:王雪燕 來源: 博客園
相關(guān)推薦

2025-10-16 04:11:00

2013-07-23 06:39:49

Json字符串到JsoAndroid開發(fā)學(xué)習(xí)Json萬能解析器

2009-08-06 16:01:09

C#字符串函數(shù)大全

2009-08-24 13:04:44

操作步驟C#字符串

2009-08-24 17:06:37

C#字符串

2009-08-26 13:24:54

C#字符串

2009-08-07 13:50:11

C#字符串

2009-08-07 14:34:33

C#模式字符串

2009-08-07 14:15:21

C#字符串分割

2009-08-07 14:22:56

C#字符串搜索

2009-08-07 14:46:59

C#匹配字符串

2009-09-02 17:44:41

C#字符串處理

2009-09-02 16:21:20

C#字符串

2009-08-28 10:39:37

C#數(shù)值字符串

2009-08-07 15:58:54

C#字符串插入html

2009-08-20 18:23:29

C#中SQL連接字符串

2023-05-05 07:49:07

GolangJSON格式

2013-06-17 15:41:09

Windows PhoWP開發(fā)JSON生成C#類

2009-08-06 17:24:08

C#字符串

2009-08-07 15:49:46

使用C#字符串
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

四虎国产精品永久在线国在线 | 日本成人在线不卡视频| 尤物yw午夜国产精品视频明星| 污网站免费在线| 欧美伦理免费在线| 久久久久久免费网| 91网站免费观看| 中文字幕av影院| 高清性色生活片在线观看| 黑人精品欧美一区二区蜜桃| 欧美激情久久久| 精品深夜av无码一区二区老年| 91se在线| 国产91精品一区二区| 69视频在线播放| 国产又色又爽又高潮免费| 国产精品色在线网站| 国产日本欧美一区二区| 96sao精品视频在线观看| 天天干天天干天天| 欧美日韩少妇| 色av吧综合网| 91人人澡人人爽人人精品| 超碰最新在线| 国产日韩欧美亚洲| 国产伦精品一区二区| 亚洲图片视频小说| 久久aⅴ乱码一区二区三区| 麻豆一区二区在线观看| 五月天精品在线| 五月综合久久| 欧美日韩一二三四五区| av不卡在线免费观看| 免费毛片在线| av综合在线播放| 亚洲自拍av在线| 怡红院男人天堂| 亚洲专区一区| 97免费视频在线| 久一区二区三区| 欧美88av| 久久精品视频在线播放| 粉嫩精品久久99综合一区| 免费av一区| 亚洲精品视频二区| 中文字幕无码人妻少妇免费| 18国产精品| 欧美成人免费网站| 日韩精品――色哟哟| 成人网av.com/| 日韩毛片一二三区| 亚洲视频小说| 日p在线观看| 国产精品久久二区二区| 日韩亚洲视频在线| 91吃瓜网在线观看| 中文字幕人成不卡一区| 亚洲国产精品毛片| av国产在线观看| 亚洲欧美影音先锋| 日本成人性视频| av免费看在线| 亚洲综合免费观看高清完整版| 青青青在线观看视频| 国产天堂在线播放视频| 午夜久久久久久电影| 欧美黄色免费影院| 日韩专区在线| 亚洲日穴在线视频| 波多野结衣 作品| 国产探花在线观看| 欧美午夜精品久久久久久久| 亚洲 欧洲 日韩| caoporn97在线视频| 一区二区三区免费看视频| 国产日韩欧美精品在线观看| av大片在线播放| 亚洲免费在线视频| 久久久久久av无码免费网站下载| 啦啦啦中文在线观看日本| 五月婷婷久久丁香| 99免费视频观看| 精品欧美视频| 日韩av在线免播放器| 国产三级精品三级在线| 日韩三级精品| 亚洲精品按摩视频| 91视频福利网| 理论片一区二区在线| 国产亚洲美女精品久久久| 一级性生活免费视频| 黄色亚洲在线| 国产精品激情自拍| 亚洲精品97久久中文字幕| 精品一区在线看| 国产丝袜不卡| 在线视频三区| 精品久久久久久久久久久| 波多结衣在线观看| 国产精品视屏| 久久精品视频一| 无码人妻丰满熟妇区bbbbxxxx| 国内一区二区视频| 欧美日韩喷水| 678在线观看视频| 怡红院av一区二区三区| 99热成人精品热久久66| 自拍偷拍亚洲图片| 亚洲男人7777| 免费麻豆国产一区二区三区四区| 久久一区精品| 国产精品久久久久久久久久久久午夜片 | 操她视频在线观看| 羞羞视频在线观看欧美| 5566av亚洲| 91在线看黄| 高跟丝袜欧美一区| 日本女人黄色片| 日本一二区不卡| 97在线观看视频| jlzzjlzz亚洲女人18| 日本一区二区三区国色天香 | av磁力番号网| 欧美xnxx| 亚洲欧美日韩精品久久| 日本污视频在线观看| 国产主播精品| 亚洲影院色在线观看免费| av在线三区| 一本大道久久a久久精二百| 日本精品一二三区| 在线看片不卡| 亚洲影视九九影院在线观看| 婷婷免费在线视频| 欧美在线视频全部完| 国产av自拍一区| 国产亚洲欧洲| 久久精品国产第一区二区三区最新章节| 亚洲精品一线| 日韩视频免费直播| 欧美色图亚洲天堂| 欧美va天堂| 91九色综合久久| av在线电影播放| 欧美性视频一区二区三区| 欧美大波大乳巨大乳| 老妇喷水一区二区三区| 秋霞在线观看一区二区三区| 亚洲免费福利| 亚洲人精选亚洲人成在线| www.国产高清| 精品系列免费在线观看| 亚洲精品影院| 中文字幕综合| 欧美国产日产韩国视频| 亚洲第一视频在线| 五月综合激情婷婷六月色窝| 亚洲熟女乱综合一区二区三区| 亚洲美女网站| 欧美精品一区二区三区在线看午夜| 三级在线看中文字幕完整版| 亚洲精品网站在线播放gif| 人妻 日韩精品 中文字幕| 久久久久久久久久电影| 欧美午夜aaaaaa免费视频| 97欧美在线视频| 91网免费观看| 蜜桃在线视频| 日日骚久久av| 黄频在线免费观看| 欧美日韩一区二区三区在线免费观看| 亚洲第一成人网站| 麻豆精品在线视频| bt天堂新版中文在线地址| 国产另类在线| 国产精品户外野外| 91一区二区三区在线| 亚洲成人网在线| 无码人妻精品一区二区三区9厂 | 亚洲成色777777在线观看影院| 国产精品500部| 欧美经典一区二区三区| 日日夜夜精品视频免费观看| 欧美精品一卡| 日韩av一级大片| 天堂久久av| 日韩美女av在线免费观看| av中文字幕在线播放| 日韩www在线| 97精品人妻一区二区三区香蕉| 亚洲福利视频三区| 色婷婷国产精品免| 成人黄色大片在线观看 | www日韩大片| 亚洲欧美日本一区二区三区| 亚洲乱亚洲高清| 在线观看欧美一区| 亚洲另类av| 99久久一区三区四区免费| 成人国产二区| 久久久久久久国产精品| 中文字幕在线免费| 精品无人区太爽高潮在线播放 | 日本一级一片免费视频| 中文字幕一区二区三区在线观看 | 欧美人与动xxxxz0oz| 国产免费一区二区三区香蕉精| 9lporm自拍视频区在线| 按摩亚洲人久久| 免费人成在线观看网站| 精品国产凹凸成av人导航| 中文字幕视频一区二区| 精品国产91久久久久久| 九九精品在线观看视频 | 久久久久久久国产视频| 亚洲国产岛国毛片在线| 亚洲色图14p| 国产成人在线影院| 亚洲图色中文字幕| 日韩精品欧美精品| 午夜免费福利小电影| 欧美黄色aaaa| 一区二区视频国产| 成人在线免费观看网站| 欧美日韩精品不卡| 青青草这里只有精品| 999热视频| 伊人久久大香| 国产噜噜噜噜久久久久久久久| 亚洲最新无码中文字幕久久| 午夜精品福利视频| 国产乱妇乱子在线播视频播放网站| 日韩在线观看高清| 欧美69xxx| 亚洲深夜福利在线| 欧美一区二区少妇| 亚洲理论在线a中文字幕| 天天射天天色天天干| 欧美成人高清电影在线| 国产成人三级一区二区在线观看一| 欧美日韩高清影院| 在线免费av片| 91精品国产乱| 国产aⅴ爽av久久久久成人| 欧美一卡2卡3卡4卡| 国产露脸国语对白在线| 欧美一三区三区四区免费在线看| 国产伦精品一区二区三区免.费| 欧美日韩国产高清一区二区| 又污又黄的网站| 欧美日韩激情一区二区| 亚洲中文一区二区三区| 欧美高清性hdvideosex| 国产人妖一区二区| 欧美成人video| 午夜小视频在线播放| 欧美视频在线观看免费| 九九热在线视频播放| 精品国产1区2区| 亚洲毛片一区二区三区| 狠狠躁夜夜躁久久躁别揉| 懂色av中文字幕| 亚洲综合视频网| 国产成人精品a视频一区| 一本色道久久综合亚洲aⅴ蜜桃 | 这里有精品可以观看| 欧美与黑人午夜性猛交久久久| 久久爱91午夜羞羞| 国产精品视频地址| 欧美一区一区| 精品视频导航| 精品日韩在线| 免费看av软件| 亚洲精品护士| 九九视频精品在线观看| 国模一区二区三区白浆| 永久免费未满蜜桃| 青青草国产成人99久久| 亚洲精品第三页| 成人av高清在线| 色欲AV无码精品一区二区久久| 国产精品午夜在线| 久久精品99国产精| 日本道免费精品一区二区三区| 亚洲一级视频在线观看| 精品国产免费久久| 川上优的av在线一区二区| 久久久精品国产亚洲| 国产网站在线| 国产日韩在线亚洲字幕中文| aiai久久| 日本一区视频在线播放| 欧美精品一卡| 精品久久久久久久无码| 国产91丝袜在线播放| 欧美 日韩 成人| 亚洲蜜桃精久久久久久久| 四虎成人在线观看| 欧美一区二区三区免费| 日韩电影免费| 欧美精品在线观看| 久久91导航| 日韩av观看网址| 精品久久免费| 色就是色欧美| 亚洲美女色禁图| 日本黄色www| 国产一区二区三区av电影| 青青草成人免费视频| 亚洲激情校园春色| 日韩久久久久久久久久| 亚洲黄色在线观看| а√天堂官网中文在线| 国产精品欧美久久久| 欧美a一欧美| 日产精品久久久久久久蜜臀| 美女mm1313爽爽久久久蜜臀| 中文字字幕码一二三区| 一区二区三区产品免费精品久久75| 中文天堂在线资源| 日韩黄色在线免费观看| 青草在线视频在线观看| 成人看片人aa| 日产精品一区二区| 国产又大又硬又粗| 久久亚洲免费视频| 日韩 国产 在线| 精品日韩欧美在线| 亚洲婷婷噜噜| 91视频国产一区| 日韩极品一区| 深夜黄色小视频| 国产日韩欧美精品电影三级在线| 91国产丝袜播放在线| 精品国产a毛片| 国产第一页在线| 操人视频欧美| 欧美色综合网| 日韩女优在线视频| 亚洲国产精品视频| 国产91免费在线观看| 欧美国产日本在线| 国产福利一区二区精品秒拍| 国产成人一区二区三区别| 国产精品456露脸| 免费视频一二三区| 日韩欧美国产麻豆| 激情网站在线| 精品91免费| 国产精品一页| 成人黄色免费网址| 欧美日韩一区二区在线视频| 爱爱爱免费视频在线观看| 国产精品永久免费视频| 99热国内精品| www精品久久| 成人午夜视频免费看| 国产真人做爰视频免费| 在线亚洲人成电影网站色www| 成人亚洲综合天堂| 国产精品爽爽爽| 五月精品视频| 亚洲精品久久一区二区三区777| 亚洲国产一区二区视频| 波多野结衣理论片| 综合欧美国产视频二区| av日韩一区| 久久在线中文字幕| www久久久久| 最近中文字幕av| 欧美日本精品在线| 欧美丝袜美腿| 美女网站视频黄色| 一区二区三区中文免费| 婷婷五月综合久久中文字幕| 国产a级全部精品| 亚洲理论电影网| a视频免费观看| 欧美日韩国产色站一区二区三区| 久久黄色美女电影| 51国偷自产一区二区三区的来源| 亚洲免费精品| 纪美影视在线观看电视版使用方法| 91精品国产综合久久小美女 | 国产99久久久欧美黑人| 天天影视天天精品| 久久人人妻人人人人妻性色av| 色嗨嗨av一区二区三区| 手机在线免费观看av| 欧美日韩一区二区三| 国产自产视频一区二区三区| 中文字幕精品三级久久久| 日韩在线观看免费全集电视剧网站| 国产精品jk白丝蜜臀av小说| 国产wwwxx| 亚洲国产色一区| 免费黄网站在线| 久久99精品久久久久久青青日本| 精品一区二区成人精品| 久久黄色精品视频|