C#通过WebService获取JSON数据并快速解析(百度地图坐标转换API为例)

废话:在一个WPF项目中要使用百度地图坐标转换API,百度都说添加Web引用的方式来获取数据,的确是可以,但是要在程序里动态获取就很麻烦,代码又臭又长,

一向比较懒的我非常难以接受,C#这样优美的语言怎能没有好的解决办法呢?于是在坚持查询下,收集各方资料终于找到了我想要的简单的处理方法。

答案,来之不易,特记录一下,希望能为自己和大家使用。

正文:写代码的文采一般都不好,直接上代码吧,如下:

string webServiceUrl="http://api.map.baidu.com/geoconv/v1/?coords=114.21892734521,29.575429778924;&from=1&to=5&ak=你的密钥";
//WebRequest在System.Net命名空间里。
WebRequest request = WebRequest.Create(webServiceUrl);
request.Method = "GET";//get,post,put....
request.ContentType = "application/json;charset=utf-8";
int num1=0,num2=0;
Dictionary<int, double> lngDictionary = new Dictionary<int, double>();
Dictionary<int, double> latDictionary = new Dictionary<int, double>();
using (Stream s = request.GetResponse().GetResponseStream())
{
       using (StreamReader sr = new StreamReader(s))
       {
             var jsonData = sr.ReadToEnd();
//JavaScriptSerializer类是微软自己提供的解析JSON的工具类,要引用System.Web.Script.Serialization命名空间,需要添加System.Web.Extensions.dll引用。
JavaScriptSerializer json = new JavaScriptSerializer();
//BaiduCoordsConvertResult是我自定义的类对象,根据json数据的内容去定义的,一会后面贴出 
BaiduCoordsConvertResult resultData = json.Deserialize<BaiduCoordsConvertResult>(jsonData);
             if (resultData.status == 0)
             {
                   foreach (var item in resultData.result)
                   {
                         lngDictionary.Add(num1++, item.x);
                         latDictionary.Add(num2++, item.y);
                   }
              }
              else
              {
                    MessageBox.Show("坐标转换失败,请重新打开文件", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
               }
         }
}
 

 下面贴出根据百度地图坐标转换API返回json数据格式定义的BaiduCoordsConvertResult类的定义 

public class BaiduCoordsConvertResult
    {
        public int status { get; set; }
        public XYData[] result { get; set; }
    }
    public class XYData
    {
        public double x { get; set; }
        public double y { get; set; }
    }

手工编写,可能有错误,欢迎指正。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值