




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C#中使用JSON不需要使用第三方库,使用.NET Framwork3.5自带的System.Runtime.Serialization.Json即可很好的完成JSON的解析。一、Using需要添加引用:System.ServiceModel.Web 和 System.Runtime.Serialization,然后使用Using:usingSystem.Runtime.Serialization.Json;usingSystem.Runtime.Serialization;二、定义序列化的类假如我们要转化的JSON字符串格式为:encoding:UTF-8,plug-ins:python,c+,ruby,indent:length:3,use_space:true然后编写相应的序列化的类,注意下面类加的Attribute:DataContract(Namespace=)classConfigDataMember(Order=0)publicstringencodingget;set;DataMember(Order=1)publicstringpluginsget;set;DataMember(Order=2)publicIndentindentget;set;DataContract(Namespace=)classIndentDataMember(Order=0)publicintlengthget;set;DataMember(Order=1)publicbooluse_spaceget;set;三、对象转化为JSON字符串使用WriteObject方法:varconfig=newConfig()encoding=UTF-8,plugins=newstringpython,C+,C#,indent=newIndent()length=4,use_space=false;varserializer=newDataContractJsonSerializer(typeof(Config);varstream=newMemoryStream();serializer.WriteObject(stream,config);bytedataBytes=newbytestream.Length;stream.Position=0;stream.Read(dataBytes,0,(int)stream.Length);stringdataString=Encoding.UTF8.GetString(dataBytes);Console.WriteLine(JSONstringis:);Console.WriteLine(dataString);四、JSON字符串转对象使用ReadObject方法:varmStream=newMemoryStream(Encoding.Default.GetBytes(dataString);ConfigreadConfig=(Config)serializer.ReadObject(mStream);Console.WriteLine(Encodingis:0,readConfig.encoding);foreach(stringplugininreadConfig.plugins)Console.WriteLine(pluginsis:0,plugin);Console.WriteLine(indent.lengthis:0,readConfig.indent.length);Console.WriteLine(indent.use_spaceis:0,readConfig.indent.use_space);五、输出结果:JSONstringis:encoding:UTF-8,plugins:python,C+,C#,indent:length:4,use_space:falseEncodingis:UTF-8pluginsis:pythonpluginsis:C+pluginsis:C#indent.lengthis:4indent.use_spaceis:Falsepublic List poisPoints = new List(); /根据关键词检索某一城市区域内的信息,如检索北京市的的饭店 public List SearchPlace(string keywords, string region) Uri uri = new Uri(/place/v2/search?&q= + keywords + ®ion= + region + &scope=2&page_size=20&output=json&ak=TzXl9IchG73tz12UjrhuO1kA);/记住使用自己的ak WebClient wc = new WebClient(); wc.OpenReadCompleted += new OpenReadCompletedEventHandler(wc_OpenReadCompleted); wc.OpenReadAsync(uri); return poisPoints; /重载SearchPlace方法,根据关键词检索某一矩形区域内的信息,矩形区域由左下角和右上角的经纬度坐标值定义lat为纬度值,lng为经度值 如39.915,116.404,39.975,116.414 public List SearchPlace(string keywords, string leftDownLat, string leftDownLng, string rightUpLat, string rightUpLng) Uri uri = new Uri(/place/v2/search?&query= + keywords + &bounds= + leftDownLat + , + leftDownLng + , + rightUpLat + , + rightUpLng + &scope=2&output=json&ak=TzXl9IchG73tz12UjrhuO1kA);/记住使用自己的ak WebClient wc = new WebClient(); wc.OpenReadCompleted += new OpenReadCompletedEventHandler(wc_OpenReadCompleted); wc.OpenReadAsync(uri); return poisPoints; /重载SearchPlace方法,根据关键词检索某一圆形区域内的信息,圆形区域由中心点的经纬度以及半径(单位为米)决定,半径最大为2000米 public List SearchPlace(string keywords, string centerLat, string centerLng, string searchRadius) Uri uri = new Uri(/place/v2/search?&query= + keywords + &location= + centerLat + , + centerLng + &radius= + searchRadius + &output=json&scope=2&ak=TzXl9IchG73tz12UjrhuO1kA);/记住使用自己的ak WebClient wc = new WebClient(); wc.OpenReadCompleted += new OpenReadCompletedEventHandler(wc_OpenReadCompleted); wc.OpenReadAsync(uri); return poisPoints; public void wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e) DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(SearchPlace); SearchPlace RC = (SearchPlace)serializer.ReadObject(e.Result);/ RestaurantClass为根据json数据结构创建的类 foreach (SinglePlace sp in RC.results) string info = name: + + n + address= + sp.address + n + street_id= + sp.street_id + n + telephone= + sp.telephone + n + uid= + sp.uid + n + lng= + sp.location.lng + lat= + sp.location.lat + n + distance= + sp.detail_info.distance + type= + sp.detail_info.type + tag= + sp.detail_info.tag + detail_url= + sp.detail_info.detail_url + price= + sp.detail_info.price + shop_hours= + sp.detail_info.shop_hours + overall_rating= + sp.detail_info.overall_rating + hygiene_rating= + sp.detail_info.hygiene_rating + taste_rating= + sp.detail_info.taste_rating + service_rating= + sp.detail_info.service_rating + environment_rating= + sp.detail_info.environment_rating + facility_rating= + sp.detail_info.facility_rating + technology_rating= + sp.detail_info.technology_rating + image_num= + sp.detail_info.image_num + group_num= + sp.detail_info.groupon_num + discout_num= + sp.detail_info.groupon_num + comment_num= + sp.detail_ment_num + favorite_num= + sp.detail_ment_num + checkin_num= + sp.detail_info.checkin_num; Graphic graphic = new Graphic(); graphic.Geometry = new MapPoint(sp.location.lng, sp.location.lat); graphic.Symbol = LayoutRoot.Resourcespointsymbol as Symbol; /将得到的信息都加到graphic的属性字段里面去 graphic.Attributes.Add(name, ); graphic.Attributes.Add(address, sp.address); graphic.Attributes.Add(street_id, sp.street_id); graphic.Attributes.Add(telephone, sp.telephone); graphic.Attributes.Add(uid, sp.uid); graphic.Attributes.Add(lng, sp.location.lng); graphic.Attributes.Add(lat, sp.location.lat); graphic.Attributes.Add(distance, sp.detail_info.distance); graphic.Attributes.Add(type, sp.detail_info.type); graphic.Attributes.Add(tag, sp.detail_info.tag); graphic.Attributes.Add(detail_url, sp.detail_info.detail_url); graphic.Attributes.Add(price, sp.detail_info.price); graphic.Attributes.Add(shop_hours, sp.detail_info.shop_hours); graphic.Attributes.Add(overall_rating, sp.detail_info.overall_rating); graphic.Attributes.Add(hygiene_rating, sp.detail_info.hygiene_rating); graphic.Attributes.Add(taste_rating, sp.detail_info.taste_rating); graphic.Attributes.Add(service_rating, sp.detail_info.service_rating); graphic.Attributes.Add(environment_rating, sp.detail_info.environment_rating); graphic.Attributes.Add(facility_rating, sp.detail_info.facility_rating); graphic.Attributes.Add(technology_rating, sp.detail_info.technology_rating); graphic.Attributes.Add(image_num, sp.detail_info.image_num); graphic.Attributes.Add(groupon_num, sp.detail_info.groupon_num); graphic.Attributes.Add(discount_num, sp.detail_info.discount_num); graphic.Attributes.Add(comment_num, sp.detail_ment_num); graphic.Attributes.Add(checkin_num, sp.detail_info.checkin_num); poisPoints.Add(graphic); public class SearchPlace public SearchPlace(int status, string message, SinglePlace results) this.status = status; this.message = message; this.results = results; DataMember /此处一定要加这个,指明json反序列化之后的类中的成员或属性 public int statusget;set; DataMember public string messageget;set; DataMember public SinglePlace results get; set; DataContract public class SinglePlace public SinglePlace(string name, PlaceLocation location, string address, string street_id, string telephone, string uid, DetailInfo detail_info) = name; this.location = location; this.address = address; this.street_id = street_id; this.telephone = telephone; this.uid = uid; this.detail_info = detail_info; DataMember public string nameget;set; DataMember public PlaceLocation location get; set; DataMember public string addressget;set; DataMember public string street_idget;set; DataMember public string telephoneget;set; DataMember public string uidget;set; DataMember public DetailInfo detail_info get; set; DataContract public class PlaceLocation public PlaceLocation(double lat,double lng) this.lat = lat; this.lng = lng; DataMember public double latget;set; DataMember public double lngget;set; DataContract public class DetailInfo public DetailInfo(int distance, string type, string tag, string detail_url, string price, string shop_hours, string overall_rating, string taste_rating, string service_rating, string environment_rating, string facility_rating, string hygiene_rating, string technology_rating, string image_num, int group_num, int discount_num, string comment_num, string favorite_num, string chechin_num) this.distance = distance;/距离中心点的距离 this.type = type;/所属分类,如“hotel”、“cater” this.tag = tag;/标签 this.detail_url = detail_url;/poi的详情页 this.price = price;/poi的价格 this.shop_hours = shop_hours;/营业时间 this.overall_rating = overall_rating;/总体评分 this.taste_rating = taste_rating;/口味评分 this.service_rating = service_rating;/服务评分 this.environment_rating = environment_rating;/环境评分 this.facility_rating = facility_rating;/星级(设备)评分 this.hygiene_rating = hygiene_rating;/卫生评分 this.technology_rating = technology_rating;/技术评分 this.image_num = image_num;/图片数 this.groupon_num = groupon_num;/团购数 this.discount_num = discount_num;/优惠数 ment_num = comment_num;/评论uu this.favorite_num = favorite_num;/收藏数 this.checkin_num = checkin_num;/签到数 DataMember public int distance get; set; DataMember public string type get; set; DataMember public string tag get; set; DataMember public string detail_url get; set; DataMember public string price get; set; DataMember public string shop_hours get; set; DataMember public string overall_rating get; set; DataMember public string taste_rating get; set; DataMember public string service_rating get; set; DataMember public string environment_rating get; set; DataMember public string facility_rating get; set; DataMember public string hygiene_rating get; set; DataMember public string technology_rating get; set; DataMember public string image_num get; set; DataMember public int groupon_num get; set; DataMember public string comment_num get; set; DataMember public int discount_num get; set; DataMember public string favorite_num get; set; DataMember public string checkin_num get; set; WebClient wb = new Web
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 云浮市中储粮2025秋招笔试性格测评题专练及答案
- 丹东市中石油2025秋招心理测评常考题型与答题技巧
- 黄南藏族自治州中石化2025秋招面试半结构化模拟题及答案油田工程技术岗
- 国家能源兴安盟2025秋招综合管理类面试追问及参考回答
- 国家能源淄博市2025秋招面试专业追问及参考采矿工程岗位
- 2025年长城招聘考试试题及答案
- 中国广电深圳市2025秋招笔试行测题库及答案互联网运营
- 中国广电兰州市2025秋招笔试行测题库及答案市场与服务类
- 郴州市中储粮2025秋招面试专业追问题库购销统计岗
- 武威市中石油2025秋招面试半结构化模拟题及答案数智化与信息工程岗
- 2025年宪法知识竞赛试题库(含答案)
- 2025年专业服务行业专业咨询服务市场前景展望报告
- GB 5725-2025坠落防护安全网
- 2025海南三亚市市场监督管理局招聘下属事业单位工作人员5人考试参考试题及答案解析
- 2025年高考真题分类汇编选择性必修一 《当代国际政治与经济》(全国)(解析版)
- 2025中国银行校招笔试真题及答案
- 钛合金课件教学课件
- 钢厂安全用电培训课件
- (完整版)高压成套配电柜安装施工方案
- 隧道运营安全培训
- 2024城市综合管廊工程技术标准
评论
0/150
提交评论