vs里根據json快速創建對應類的方法


有時候,我們在調用別人接口的時候,服務端返回了一個json格式的字符串,我們要獲取json里面的數據的話一般有兩種方式:

1.通過正則 2.反序列化成一個對象 第一種方式這里不再多說,主要說一下第二種,(為什么呢,你看到后面 你也會喜歡上第二種)

有人肯定會說, json字符串萬一很長,很復雜,我一個個去寫類????有這個功夫 我用個正則 程序都已經寫完了,你還在寫對應的類. 是的,我之前也是通過正則的方式獲取想要的數據,因為第二種方式,我們創建與json相對應的類的話 如果json很復雜,那是相當麻煩的一件事. 但是我今天要介紹的是vs的功能,讓vs幫我們創建與json對應的類,一秒完成.提升了我們N倍的開發效率.  下面來看看吧!

首先,我這里來一個json格式的字符串. 該json字符串是百度貼吧簽到返回的json

{"no":0,"error":"","data":{"errno":0,"errmsg":"success","sign_version":2,"is_block":0,"finfo":{"forum_info":{"forum_id":5077715,"forum_name":"newgame"},"current_rank_info":{"sign_count":820}},"uinfo":{"user_id":2710692001,"is_sign_in":1,"user_sign_rank":820,"sign_time":1472346974,"cont_sign_num":1,"total_sign_num":3,"cout_total_sing_num":3,"hun_sign_num":2,"total_resign_num":0,"is_org_name":0}}}

是不是非常的復雜,正則寫起來也是有點麻煩的,根據這個json創建相對應的類的話 更麻煩,現在我們讓vs幫我們自動創建,

1.復制這一段json格式的字符串 2.打開vs 創建一個類. 創建完畢后,點擊vs左上方的編輯=>選擇性粘貼=>將json粘貼為類

3.一秒不到的時間vs已經幫我們生成了對應的類

 1 著作權歸作者所有。
 2 商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
 3 作者:卷貓
 4 鏈接:http://anneke.cn/ArticleInfo/Detial?id=9
 5 來源:Anneke.cn
 6 
 7 public class Rootobject
 8 {
 9     public int no { get; set; }
10     public string error { get; set; }
11     public Data data { get; set; }
12 }
13  
14 public class Data
15 {
16     public int errno { get; set; }
17     public string errmsg { get; set; }
18     public int sign_version { get; set; }
19     public int is_block { get; set; }
20     public Finfo finfo { get; set; }
21     public Uinfo uinfo { get; set; }
22 }
23  
24 public class Finfo
25 {
26     public Forum_Info forum_info { get; set; }
27     public Current_Rank_Info current_rank_info { get; set; }
28 }
29  
30 public class Forum_Info
31 {
32     public int forum_id { get; set; }
33     public string forum_name { get; set; }
34 }
35  
36 public class Current_Rank_Info
37 {
38     public int sign_count { get; set; }
39 }
40  
41 public class Uinfo
42 {
43     public long user_id { get; set; }
44     public int is_sign_in { get; set; }
45     public int user_sign_rank { get; set; }
46     public int sign_time { get; set; }
47     public int cont_sign_num { get; set; }
48     public int total_sign_num { get; set; }
49     public int cout_total_sing_num { get; set; }
50     public int hun_sign_num { get; set; }
51     public int total_resign_num { get; set; }
52     public int is_org_name { get; set; }
53 }

4.我們使用的話只要進行反序列化就可以了

著作權歸作者所有。
商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
作者:卷貓
鏈接:http://anneke.cn/ArticleInfo/Detial?id=9
來源:Anneke.cn

 string json = "{\"no\":0,\"error\":\"\",\"data\":{\"errno\":0,\"errmsg\":\"success\",\"sign_version\":2,\"is_block\":0,\"finfo\":{\"forum_info\":{\"forum_id\":2781305,\"forum_name\":\"\u5c81\u7eb3\u4eac\u5b50\"},\"current_rank_info\":{\"sign_count\":307}},\"uinfo\":{\"user_id\":2710692001,\"is_sign_in\":1,\"user_sign_rank\":307,\"sign_time\":1472345473,\"cont_sign_num\":1,\"total_sign_num\":2,\"cout_total_sing_num\":2,\"hun_sign_num\":1,\"total_resign_num\":0,\"is_org_name\":0}}}";
 
            Rootobject o = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize(json, typeof(Rootobject)) as Rootobject;
            Console.WriteLine(o.data.errmsg);
            Console.WriteLine(o.no);
            Console.ReadKey();

是不是很方便呢0.0.比正則方便多了吧 你還在寫正則的時候,我已經獲取到了數據 哈哈哈,vs是很強大的. 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM