当前位置: 首页 > news >正文

先域名 还是先做网站上海网站建设的

先域名 还是先做网站,上海网站建设的,微信公众号?,手机网站宽度自适应本文转载自 http://xiaosheng.me/2016/10/01/article25/ 最近在 C# 项目中需要使用到 Json 格式的数据#xff0c;我简单上网搜索了一下#xff0c;基本上有两种操作 Json 数据的方法#xff1a; 使用 Windows 系统自带的类使用第三方的包本着“第三方包一定有比系统自带类优…本文转载自 http://xiaosheng.me/2016/10/01/article25/ 最近在 C# 项目中需要使用到 Json 格式的数据我简单上网搜索了一下基本上有两种操作 Json 数据的方法 使用 Windows 系统自带的类使用第三方的包本着“第三方包一定有比系统自带类优秀地方否则就不会存在”的原则再加上 JavaScriptSerializer、DataContractJsonSerializer 等这些自带类库使用起来很麻烦我毫不犹豫地就选择了在 Json 操作方面小有名气的 Json.NET。Json.NET 自己也做了与自带类库的比较详情可以见 Json.NET vs .NET Serializers 和 Json.NET vs Windows.Data.Json。 Json.NET 是一个 Newtonsoft 编写的开源类库包你可以直接到 Github 上查看项目的源码和说明。Json.NET 提供了大量对于 Json 数据的操作方法他们使用起来非常简单而且执行效率很高。 .NET 对象的序列化和反序列化 1. 普通对象的序列化和反序列化 JsonConvert 是 Json.NET 中的一个数据转换类提供了用于 .NET 对象序列化和反序列化的方法 SerializeObject() 和 DeserializeObject()。在通常情况下我们也只需要使用这两个方法就足以完成任务了。 比如说我们现在定义了一个学生类 Student class Student //学生类 {public int Id { get; set;} //学号public string Name { get; set;} //姓名public double[] Scores { get; set;} //成绩 } 现在我们创建一个学生类对象并使用 JsonConvert 类提供的 SerializeObject() 方法将它转换到 Json 字符串需要引入命名空间 using Newtonsoft.Json Student student new Student {Id 12883,Name Jim David,Scores new double[] { 87.5, 92, 76.2 } };string jsonStudent JsonConvert.SerializeObject(student); //{Id:12883,Name:Jim David,Scores:[87.5,92.0,76.2]} 可以看到在序列化的过程中JsonConvert 会将 .NET 对象中的变量名转换为 Json 中的“属性”同时将变量的值复制为 Json 的“属性值”。接下来我们尝试将 Json 字符串转换为 Student 对象使用 JsonConvert 提供的 DeserializeObject() 方法 Student deserializedStudent JsonConvert.DeserializeObjectStudent(jsonStudent); Console.WriteLine(student.Id deserializedStudent.Id); //student.Id 12883 Console.WriteLine(student.Name deserializedStudent.Name); //student.Name Jim David 可以看到创建的学生对象 student 的 Json 字符串被顺利地解析成了 Student 对象。在调用 DeserializeObject() 方法进行反序列化时最好使用带泛型参数的重载方法。 如果在调用 DeserializeObject() 时不指定对象类型JsonConvert 会默认转换为 Object 对象。 集合的序列化和反序列化 上面我们已经简单测试了 JsonConvert 提供的 SerializeObject() 和 DeserializeObject() 方法完成了 .NET 对象的序列化和反序列化。 C# 项目中除了自定义的类型外集合Collections也是经常会使用的数据类型包括列表、数组、字典或者我们自定义的集合类型。我们同样可以使用之前使用的 SerializeObject() 和 DeserializeObject() 方法来完成集合的序列化和反序列化。 为了使转换后的结果更加易读我指定转换后的 Json 字符串带缩进。通过向 SerializeObject() 方法传递进第二个参数 Formatting 实现。 Student student1 new Student {Id 12883,Name Jim David,Scores new double[] { 87.5, 92, 76.2 } }; Student student2 new Student {Id 35228,Name Milly Smith,Scores new double[] { 92.5, 88, 85.7 } }; ListStudent students new ListStudent(); students.Add(student1); students.Add(student2); string jsonStudents JsonConvert.SerializeObject(students, Formatting.Indented); //[ // { // Id: 12883, // Name: Jim David, // Scores: [ // 87.5, // 92.0, // 76.2 // ] // }, // { // Id: 35228, // Name: Milly Smith, // Scores: [ // 92.5, // 88.0, // 85.7 // ] // } //] 接下来我们对上面生成的 Json 字符串进行反序列化解析出原有的 Student 类型列表。同样我们需要使用带泛型参数的 DeserializeObject() 方法指定 JsonConvert 解析的目标类型。 string jsonStudentList [{Id: 12883,Name: Jim David,Scores: [87.5,92.0,76.2]},{Id: 35228,Name: Milly Smith,Scores: [92.5,88.0,85.7]} ];ListStudent studentsList JsonConvert.DeserializeObjectListStudent(jsonStudentList); Console.WriteLine(studentsList.Count); //2 Student s studentsList[0]; Console.WriteLine(s.Name); //Jim David 如果 Json 对象拥有统一类型的属性和属性值我们还可以把 Json 字符串反序列化为 .NET 中的字典Json 对象的“属性”和“属性值”会依次赋值给字典中的 Key 和 Value。下面我举一个简单的例子 string json {English:88.2,Math:96.9}; Dictionarystring, double values JsonConvert.DeserializeObjectDictionarystring, double(json); Console.WriteLine(values.Count); //2 Console.WriteLine(values[Math]); //96.9 解析复杂的 Json 字符串 如今大量的 Web API 为我们编写复杂程序提供了极大的方便例如百度地图 API、图灵机器人 API等等利用这些 Web 应用程序我们可以充分发挥云服务的优势开发出大量有趣的应用。 Web API 通常返回 Json 或 XML 格式的检索数据由于 Json 数据量更小所以目前大多数情况下我们都选择返回 Json 格式的数据。 如果返回的 Json 文档很大而我们仅仅需要其中的一小部分数据。按照之前的方法我们必须首先定义一个与 Json 对象对应的 .NET 对象然后反序列化最后才能从对象中取出我们需要的数据。而有了 Json.NET这个任务就很容易实现了我们可以局部地解析一个 Json 对象。 下面以获取 Google 搜索结果为例简单演示一下对复杂结构 Json 文档的解析。 string googleSearchText {responseData: {results: [{GsearchResultClass: GwebSearch,unescapedUrl: http://en.wikipedia.org/wiki/Paris_Hilton,url: http://en.wikipedia.org/wiki/Paris_Hilton,visibleUrl: en.wikipedia.org,cacheUrl: http://www.google.com/search?qcache:TwrPfhd22hYJ:en.wikipedia.org,title: bParis Hilton/b - Wikipedia, the free encyclopedia,titleNoFormatting: Paris Hilton - Wikipedia, the free encyclopedia,content: [1] In 2006, she released her debut album...},{GsearchResultClass: GwebSearch,unescapedUrl: http://www.imdb.com/name/nm0385296/,url: http://www.imdb.com/name/nm0385296/,visibleUrl: www.imdb.com,cacheUrl: http://www.google.com/search?qcache:1i34KkqnsooJ:www.imdb.com,title: bParis Hilton/b,titleNoFormatting: Paris Hilton,content: Self: Zoolander. Socialite bParis Hilton/b...}],cursor: {pages: [{start: 0,label: 1},{start: 4,label: 2},{start: 8,label: 3},{start: 12,label: 4}],estimatedResultCount: 59600000,currentPageIndex: 0,moreResultsUrl: http://www.google.com/search?oeutf8ieutf8...}},responseDetails: null,responseStatus: 200 }; 上面就是从 Google 搜索返回的 Json 数据我们现在需要的是 responseData 属性下的 results 列表中结果而且仅仅需要结果中的 title、content 和 url 属性值。 public class SearchResult {public string Title { get; set; }public string Content { get; set; }public string Url { get; set; } } //将 Json 文档解析为 JObject JObject googleSearch JObject.Parse(googleSearchText); //将获得的 Json 结果转换为列表 IListJToken results googleSearch[responseData][results].Children().ToList(); //将 Json 结果反序列化为 .NET 对象 IListSearchResult searchResults new ListSearchResult(); foreach(JToken result in results) {SearchResult searchResult JsonConvert.DeserializeObjectSearchResult(result.ToString());searchResults.Add(searchResult); } // Title bParis Hilton/b - Wikipedia, the free encyclopedia // Content [1] In 2006, she released her debut album... // Url http://en.wikipedia.org/wiki/Paris_Hilton// Title bParis Hilton/b // Content Self: Zoolander. Socialite bParis Hilton/b... // Url http://www.imdb.com/name/nm0385296/ 可以看到对 Json 文档的解析基本分为以下几步 将 Json 文档转换为 JObject 对象使用JObject[属性]获取 JObject 对象中某个属性的值JToken 格式可以继续通过 JToken[属性] 获取属性内部的属性值依然为 JToken 格式将 JToken 格式的属性值反序列化为 .NET 对象如果属性值为我们需要的数据对象那么直接反序列化该对象就可以了如果属性值为列表比如上面 results 属性的值那么就可以调用 JToken 类的 Children() 函数获得一个可迭代的 JEnumerableJToken 对象用于迭代访问列表中的每一个对象最后再依次反序列化列表中的对象。  转载于:https://www.cnblogs.com/wphl-27/p/8358025.html
http://www.pierceye.com/news/981576/

相关文章:

  • 做海报的网站什么编辑器微楼书网站建设
  • 免费建站的网站能做影视网站吗深圳网站建设素材网站
  • 网页中网站设计规划流程wordpress主题
  • 贵阳百度做网站电话培训学校
  • 网站关键词推广哪家好深圳方维网络科技有限公司
  • 美工需要的网站阿里云wordpress托管
  • 医疗行业网站建设怎样在网上建立平台
  • 潍坊网站建设网超之梦做的网站后台修改栏目描述
  • 广西建设厅官网证件查询网站优化对企业有什么好处
  • 哪个网站做外贸的多济南建设信息网官网
  • 制作网站能挣钱企业宣传片策划公司
  • 临沂网站建设模板wordpress添加导航页面
  • 有关wordpress教学的网站商标注册号
  • 常用搜索网站浙江立鹏建设有限公司网站
  • 天津做网站优化的公司番禺商城网站建设
  • 网站建设大熊猫点搜营销型网站头部布局的元素
  • wordpress 网站死机淄博专业网站建设价格
  • 网站建设 招标书慈溪机械加工网
  • dede网站怎么做404页面做网站的市场有那么大吗
  • 自己做下载类网站家在深圳网页版
  • 建设银行网站个人客户传奇新服网
  • 河东手机网站建设工作服厂家联系方式
  • 站长工具seo综合查询搭建流程
  • 各省住房和城乡建设厅网站怎样租用个人网站空间
  • 深圳市南山区住房和建设局网站官网桂林两江四湖象山景区讲解导游词
  • 环保网站设计是什么柴沟堡做网站公司
  • 用php和mysql做网站wordpress怎么创建自己的博客
  • 网站建设制作设计珠海百度收录排名
  • 有没有做家具特卖的网站360建筑
  • 网站建设技术架构学校网站建设源代码