C#的百度地图开发(二)转换JSON数据为相应的类
来源:互联网 发布:junos pulse mac 编辑:程序博客网 时间:2024/06/11 13:40
在《C#的百度地图开发(一)发起HTTP请求》一文中我们向百度提供的API的URL发起请求,并得到了返回的结果,结果是一串JSON数据,我们先将这个JSON数据,使用在线工盯进行格式化。
{ "status": 0, "result": [ { "x": 39.926674689976, "y": 116.46594011987 }, { "x": 40.136798619397, "y": 117.10587935376 } ]}
根据官方的说明,我们传入几个坐标,转换后就会得到几个坐标,并且是一样的顺序。为了能够更多好的操作数据,我们需要将其转换到相应的类中,所以首先要构造相应的类,然后将数据反序列化到该类中(这里要用到.net的json库Newtonsoft.Json.dll,这个可以到网上自行下载)。
/// <summary> /// 百度坐标的转换结果 /// </summary> [Serializable] public class CoordTransResult { /// <summary> /// 状态 /// </summary> public CoordTransStatus status { get; set; } /// <summary> /// 结果(坐标数组) /// </summary> public Coordinate[] result { get; set; } } public enum CoordTransStatus { /// <summary> /// 正常 /// </summary> OK = 0, /// <summary> /// 内部错误 /// </summary> INTERNAL_ERROR = 1, /// <summary> /// from非法 /// </summary> FROM_ILLEGAL = 21, /// <summary> /// to非法 /// </summary> TO_ILLEGAL = 22, /// <summary> /// coords格式非法 /// </summary> COORDS_ILLEGAL = 24, /// <summary> /// coords个数非法,超过限制 /// </summary> COORDS_COUNT_ILLEGAL = 25 } /// <summary> /// 坐标 /// </summary> [Serializable] public class Coordinate { public Coordinate() { } public Coordinate(String x, String y) { this.x = x; this.y = y; } public String x { get; set; } public String y { get; set; } }
这些是构造出的相关类。
注:
(1).返回的状态值,使用枚举类型,这样更方便程序的编写,也更容易阅读。
(2).返回的结果是一个坐标的数组,所以定义了一个Coordinate的数组。
(3).类必须要在前面标注为可以序列化,即[Serializable]。
(4).类里面的每一个属性都对应JSON数据的一个KEY,属性的名字一定要与JSON数据的KEY相同,并且使用同样的大小写。
有了CoordTransResult的类,就可以通过.net的JSON工具类来反序列化了,请看下面的代码
/// <summary> /// 转换成百度坐标 /// </summary> /// <param name="coordinates">坐标(经度,纬度),多个坐标间用分号隔开</param> /// <param name="mapCoordinateType">坐标类型</param> /// <returns></returns> public static CoordTransResult TransToBaiduCoord(String coordinates, MapCoordinateType mapCoordinateType = MapCoordinateType.GOOGLE_SOSO_ALIYUN_MAPABC_AMAP) { String transformUrl = String.Format(TRANSFORM_COORDINATE_URL_TEMPLEATE, MAP_KEY_BAI_DU, coordinates, (int)mapCoordinateType, (int)MapCoordinateType.BAIDU); String transformResponsText = RequestHelper.RequestUrl(transformUrl, null); CoordTransResult transformResult = null; String info = ""; try { transformResult = Newtonsoft.Json.JsonConvert.DeserializeObject<CoordTransResult>(transformResponsText); } catch (Exception e) { info = "转换坐标异常:" + e.Message; return null; } return transformResult; }下面是测试代码
protected void btnTest_Click(object sender, EventArgs e) { String coordinates = "39.92,116.46;40.13,117.10"; CoordTransResult coordTransResult= BaiduMap.TransToBaiduCoord(coordinates, MapCoordinateType.GOOGLE_SOSO_ALIYUN_MAPABC_AMAP); Alert.Show(coordTransResult.status.ToString()); }测试结果如下
从局部变量中,我们可以看到JSON数据已经转换成到了CoordTransResult的类中,有了这样的数据,我们就可以很方便的进行其他操作,比如依据坐标,获取位置信息、商圈信息等。具体请看后一文《 C#的百度地图开发(三)依据坐标获取位置、商圈及周边信息》。
这里提供一个JSON数据转换成C#实体类的工具下载
转载请注明出处。http://blog.csdn.net/xxdddail/article/details/42705195
0 0
- C#的百度地图开发(二)转换JSON数据为相应的类
- gps数据转换为在百度地图下的坐标
- C#通过WebService获取JSON数据并快速解析(百度地图坐标转换API为例)
- C#的百度地图开发 IP定位
- 表单的数据转换为json对象
- 将相应的字符串转换为相应的数字
- 【转】C# Json数据转换为Xml
- C#的百度地图开发(一)发起HTTP请求
- C#的百度地图开发(四)前端显示与定位
- C#的百度地图开发(五)IP定位
- C#的百度地图开发 前端显示与定位
- Android 基于位置的开发与百度地图 (二)
- ios开发中百度地图的基本使用二
- .net mvc3.0 中接收 json 数据,并转换为自定义的 C# 对象
- 【百度地图API】如何将Google的经纬度批量转换为百度经纬度
- 百度地图导航与百度地图进行的坐标转换
- 百度地图的开发(2)
- 百度地图开发的坑
- linux下查端口被哪个程序占用
- android 跑马灯
- Android服务开发经验——优雅地活着
- 需求是如何变成产品原型的:产品经理和交互设计师的对话
- OpenMP实现数组并行相加
- C#的百度地图开发(二)转换JSON数据为相应的类
- actionbar back 图标自定义
- SQLite的SQL语法
- 电商网站商品页设计超全面指南
- 《Android编程权威指南》学习笔记
- 解决问题:由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。
- linux下由于线程局部存储未初始化导致加载动态链接库时程序崩溃的BUG
- Android 中的 fill_parent、wrap_content和match_parent的区别 :
- java 获取map中所有的key和value值