打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
卷猫's blog

  有时候,我们在调用别人接口的时候,服务端返回了一个json格式的字符串,我们要获取json里面的数据的话一般有两种方式:

1.通过正则

2.反序列化成一个对象


第一种方式这里不再多说,主要说一下第二种,(为什么呢,你看到后面 你也会喜欢上第二种)

有人肯定会说, json字符串万一很长,很复杂,我一个个去写类????有这个功夫 我用个正则 程序都已经写完了,你还在写对应的类.

是的,我之前也是通过正则的方式获取想要的数据,因为第二种方式,我们创建与json相对应的类的话 如果json很复杂,那是相当麻烦的一件事.

但是我今天要介绍的是vs的功能,让vs帮我们创建与json对应的类,一秒完成.提升了我们N倍的开发效率. 

下面来看看吧!

首先,我这里来一个json格式的字符串. 该json字符串是百度贴吧签到返回的json

  1. {"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. public class Rootobject
  2. {
  3. public int no { get; set; }
  4. public string error { get; set; }
  5. public Data data { get; set; }
  6. }
  7.  
  8. public class Data
  9. {
  10. public int errno { get; set; }
  11. public string errmsg { get; set; }
  12. public int sign_version { get; set; }
  13. public int is_block { get; set; }
  14. public Finfo finfo { get; set; }
  15. public Uinfo uinfo { get; set; }
  16. }
  17.  
  18. public class Finfo
  19. {
  20. public Forum_Info forum_info { get; set; }
  21. public Current_Rank_Info current_rank_info { get; set; }
  22. }
  23.  
  24. public class Forum_Info
  25. {
  26. public int forum_id { get; set; }
  27. public string forum_name { get; set; }
  28. }
  29.  
  30. public class Current_Rank_Info
  31. {
  32. public int sign_count { get; set; }
  33. }
  34.  
  35. public class Uinfo
  36. {
  37. public long user_id { get; set; }
  38. public int is_sign_in { get; set; }
  39. public int user_sign_rank { get; set; }
  40. public int sign_time { get; set; }
  41. public int cont_sign_num { get; set; }
  42. public int total_sign_num { get; set; }
  43. public int cout_total_sing_num { get; set; }
  44. public int hun_sign_num { get; set; }
  45. public int total_resign_num { get; set; }
  46. public int is_org_name { get; set; }
  47. }
4.我们使用的话只要进行反序列化就可以了

  1. 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}}}";
  2.  
  3. Rootobject o = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize(json, typeof(Rootobject)) as Rootobject;
  4. Console.WriteLine(o.data.errmsg);
  5. Console.WriteLine(o.no);
  6. Console.ReadKey();
是不是很方便呢0.0.比正则方便多了吧 你还在写正则的时候,我已经获取到了数据 哈哈哈,vs是很强大的.


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
计算10的阶乘
[LeetCode 90] Subsets II
Json.Net系列教程 3.Json.Net序列化和反序列化设置
C# JavaScriptSerializer 解析Json数据(多方法解析Json 三)
.Net项目模板(Project Template)
控制台程序(C#)不弹出登录窗口连接到Dynamics CRM Online的Web API
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服