首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
Windows程序
> 详细
C#的百度地图开发(二)转换JSON数据为相应的类
时间:
2015-06-04 11:08:40
阅读:
152
评论:
0
收藏:
0
[点我收藏+]
标签:
原文:
C#的百度地图开发(二)转换JSON数据为相应的类
在《
C#的百度地图开发(一)发起HTTP请求
》一文中我们向百度提供的API的URL发起请求,并得到了返回的结果,结果是一串JSON数据,我们先将这个JSON数据,使用在线工盯进行格式化。
[html]
view plain
copy
{
"status": 0,
"result": [
{
"x": 39.926674689976,
"y": 116.46594011987
},
{
"x": 40.136798619397,
"y": 117.10587935376
}
]
}
根据官方的说明,我们传入几个坐标,转换后就会得到几个坐标,并且是一样的顺序。为了能够更多好的操作数据,我们需要将其转换到相应的类中,所以首先要构造相应的类,然后将数据反序列化到该类中(
这里要用到.net的json库
Newtonsoft.Json.dll,这个可以到网上自行下载)。
[html]
view plain
copy
///
<
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工具类来反序列化了,请看下面的代码
[html]
view plain
copy
///
<
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;
}
下面是测试代码
[html]
view plain
copy
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#实体类的工具下载
C#的百度地图开发(二)转换JSON数据为相应的类
标签:
原文地址:http://www.cnblogs.com/lonelyxmas/p/4550939.html
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
动态 WebApi 引擎使用教程(3行代码完成动态 WebApi 构建)
2021-07-28
windows 查看文件的md5/sha1/sha256
2021-07-28
git windows下换行符问题 LF与CRLF转换
2021-07-27
FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。
2021-07-26
K8S--可视化界面Kubernetes Dashboard(API Server方式)
2021-07-26
Redis安装成windows服务
2021-07-26
c#32位支持大内存(>2gb)
2021-07-23
【c#】Dev BarStaticItem问题汇总
2021-07-23
Exception: URL fetch failure on https://s3.amazonaws.com/text-datasets/nietzsche.txt: None -- [WinError 10054] 远程主机强迫关闭了一个现有的连接。
2021-07-22
WinForm使用DataGridView实现类似Excel表格的查找替换
2021-07-22
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!